Commit e280dc617640122faff8fa5183efd4e82ea43d3f
1 parent
1dffc346
Exists in
yxb_dev
and in
2 other branches
no message
Showing
6 changed files
with
174 additions
and
84 deletions
Show diff stats
app/src/main/java/com/shunzhi/parent/ui/fragment/report/ReportDetialFragment.java
@@ -63,12 +63,20 @@ public class ReportDetialFragment extends BaseMVPCompatFragment { | @@ -63,12 +63,20 @@ public class ReportDetialFragment extends BaseMVPCompatFragment { | ||
63 | 63 | ||
64 | chartView.setColors(R.color.textColor,R.color.huodong_blue,R.color.gray); | 64 | chartView.setColors(R.color.textColor,R.color.huodong_blue,R.color.gray); |
65 | List<InputData> inputDataList=new ArrayList<>(); | 65 | List<InputData> inputDataList=new ArrayList<>(); |
66 | - for (int i = 0; i < 10; i++) { | ||
67 | - InputData inputData=new InputData((new Date().getTime()-(10-i)*24*60*60*1000),10*i); | 66 | + List<InputData> inputDataList1=new ArrayList<>(); |
67 | + for (int i = 0; i < 7; i++) { | ||
68 | + InputData inputData=new InputData("文明",10*i); | ||
68 | inputDataList.add(inputData); | 69 | inputDataList.add(inputData); |
69 | } | 70 | } |
70 | 71 | ||
71 | chartView.setChartPaths(inputDataList); | 72 | chartView.setChartPaths(inputDataList); |
72 | 73 | ||
74 | + for (int i = 0; i < 7; i++) { | ||
75 | + InputData inputData=new InputData("文明1",20*i); | ||
76 | + inputDataList1.add(inputData); | ||
77 | + } | ||
78 | + | ||
79 | + chartView.setChartPaths(inputDataList1); | ||
80 | + | ||
73 | } | 81 | } |
74 | } | 82 | } |
app/src/main/res/layout/fragment_report_detial.xml
@@ -162,7 +162,7 @@ | @@ -162,7 +162,7 @@ | ||
162 | 162 | ||
163 | <FrameLayout | 163 | <FrameLayout |
164 | android:layout_width="match_parent" | 164 | android:layout_width="match_parent" |
165 | - android:layout_height="150dp" | 165 | + android:layout_height="wrap_content" |
166 | android:layout_marginTop="@dimen/size_dp_10"> | 166 | android:layout_marginTop="@dimen/size_dp_10"> |
167 | 167 | ||
168 | <com.share.mvpsdk.view.chartview.ChartView | 168 | <com.share.mvpsdk.view.chartview.ChartView |
mvpsdk/src/main/java/com/share/mvpsdk/utils/DateUtils.java
@@ -55,7 +55,7 @@ public class DateUtils { | @@ -55,7 +55,7 @@ public class DateUtils { | ||
55 | } | 55 | } |
56 | 56 | ||
57 | public static String format(long millis){ | 57 | public static String format(long millis){ |
58 | - SimpleDateFormat format = new SimpleDateFormat("dd", Locale.getDefault()); | 58 | + SimpleDateFormat format = new SimpleDateFormat("MM/dd", Locale.getDefault()); |
59 | return format.format(millis); | 59 | return format.format(millis); |
60 | } | 60 | } |
61 | 61 |
mvpsdk/src/main/java/com/share/mvpsdk/utils/ValueUtils.java
@@ -7,6 +7,7 @@ import android.util.Log; | @@ -7,6 +7,7 @@ import android.util.Log; | ||
7 | 7 | ||
8 | 8 | ||
9 | import com.share.mvpsdk.view.chartview.data.Chart; | 9 | import com.share.mvpsdk.view.chartview.data.Chart; |
10 | +import com.share.mvpsdk.view.chartview.data.ChartPath; | ||
10 | import com.share.mvpsdk.view.chartview.data.DrawData; | 11 | import com.share.mvpsdk.view.chartview.data.DrawData; |
11 | import com.share.mvpsdk.view.chartview.data.InputData; | 12 | import com.share.mvpsdk.view.chartview.data.InputData; |
12 | 13 | ||
@@ -27,22 +28,39 @@ public class ValueUtils { | @@ -27,22 +28,39 @@ public class ValueUtils { | ||
27 | return maxValue; | 28 | return maxValue; |
28 | } | 29 | } |
29 | 30 | ||
30 | - public static long max(@Nullable List<InputData> dataList) { | 31 | + public static long max(@Nullable List<ChartPath> dataList) { |
31 | long maxValue = 0; | 32 | long maxValue = 0; |
32 | 33 | ||
33 | if (dataList == null || dataList.isEmpty()) { | 34 | if (dataList == null || dataList.isEmpty()) { |
34 | return maxValue; | 35 | return maxValue; |
35 | } | 36 | } |
36 | - | ||
37 | - for (InputData data : dataList) { | ||
38 | - if (data.valueY > maxValue) { | ||
39 | - maxValue = data.valueY; | 37 | + for (ChartPath charpath : |
38 | + dataList) { | ||
39 | + for (InputData data : charpath.inputDataList) { | ||
40 | + if (data.valueY > maxValue) { | ||
41 | + maxValue = data.valueY; | ||
42 | + } | ||
40 | } | 43 | } |
41 | } | 44 | } |
42 | 45 | ||
43 | return maxValue; | 46 | return maxValue; |
44 | } | 47 | } |
45 | 48 | ||
49 | + private static long maxOne(List<InputData> dataList) { | ||
50 | + long maxValue = 0; | ||
51 | + | ||
52 | + if (dataList == null || dataList.isEmpty()) { | ||
53 | + return maxValue; | ||
54 | + } | ||
55 | + for (InputData data : dataList) { | ||
56 | + if (data.valueY > maxValue) { | ||
57 | + maxValue = data.valueY; | ||
58 | + } | ||
59 | + } | ||
60 | + | ||
61 | + return maxValue; | ||
62 | + } | ||
63 | + | ||
46 | private static boolean isRightValue(long value) { | 64 | private static boolean isRightValue(long value) { |
47 | long valueResidual = value % Chart.CHART_PART_VALUE; | 65 | long valueResidual = value % Chart.CHART_PART_VALUE; |
48 | return valueResidual == 0; | 66 | return valueResidual == 0; |
@@ -55,29 +73,34 @@ public class ValueUtils { | @@ -55,29 +73,34 @@ public class ValueUtils { | ||
55 | } | 73 | } |
56 | 74 | ||
57 | List<InputData> dataList = chart.getInputDataList(); | 75 | List<InputData> dataList = chart.getInputDataList(); |
58 | - correctDataListSize(dataList);//移除多余的数据 | 76 | +// correctDataListSize(dataList);//移除多余的数据 |
59 | return createDrawDataList(chart, createValueList(dataList)); | 77 | return createDrawDataList(chart, createValueList(dataList)); |
60 | } | 78 | } |
61 | 79 | ||
62 | - private static void correctDataListSize(@NonNull List<InputData> dataList) { | ||
63 | - if (dataList.size() < Chart.MAX_ITEMS_COUNT) { | ||
64 | - addLackingItems(dataList); | ||
65 | - | ||
66 | - } else if (dataList.size() > Chart.MAX_ITEMS_COUNT) { | ||
67 | - removeExcessItems(dataList); | ||
68 | - } | 80 | + @NotificationCompat.NotificationVisibility |
81 | + public static List<DrawData> getDrawDatas(@Nullable List<InputData> inputDataList,@NonNull Chart chart) { | ||
82 | + return createDrawDataList(chart, createValueList(inputDataList)); | ||
69 | } | 83 | } |
70 | 84 | ||
71 | - private static void addLackingItems(@NonNull List<InputData> dataList) { | ||
72 | - for (int i = dataList.size(); i < Chart.MAX_ITEMS_COUNT; i++) { | ||
73 | - long millis = dataList.get(0).valueX - TimeUnit.DAYS.toMillis(1); | ||
74 | - if (millis < 0) { | ||
75 | - millis = 0; | ||
76 | - } | ||
77 | - | ||
78 | - dataList.add(0, new InputData(0, millis)); | ||
79 | - } | ||
80 | - } | 85 | +// private static void correctDataListSize(@NonNull List<InputData> dataList) { |
86 | +// if (dataList.size() < Chart.MAX_ITEMS_COUNT) { | ||
87 | +// addLackingItems(dataList); | ||
88 | +// | ||
89 | +// } else if (dataList.size() > Chart.MAX_ITEMS_COUNT) { | ||
90 | +// removeExcessItems(dataList); | ||
91 | +// } | ||
92 | +// } | ||
93 | +// | ||
94 | +// private static void addLackingItems(@NonNull List<InputData> dataList) { | ||
95 | +// for (int i = dataList.size(); i < Chart.MAX_ITEMS_COUNT; i++) { | ||
96 | +// long millis = dataList.get(0).valueX - TimeUnit.DAYS.toMillis(1); | ||
97 | +// if (millis < 0) { | ||
98 | +// millis = 0; | ||
99 | +// } | ||
100 | +// | ||
101 | +// dataList.add(0, new InputData(0, millis)); | ||
102 | +// } | ||
103 | +// } | ||
81 | 104 | ||
82 | private static void removeExcessItems(@NonNull List<InputData> dataList) { | 105 | private static void removeExcessItems(@NonNull List<InputData> dataList) { |
83 | for (ListIterator<InputData> iterator = dataList.listIterator(); iterator.hasNext(); ) { | 106 | for (ListIterator<InputData> iterator = dataList.listIterator(); iterator.hasNext(); ) { |
@@ -88,10 +111,10 @@ public class ValueUtils { | @@ -88,10 +111,10 @@ public class ValueUtils { | ||
88 | iterator.next(); | 111 | iterator.next(); |
89 | } | 112 | } |
90 | } | 113 | } |
91 | - | 114 | + static long topValue=0; |
92 | private static List<Float> createValueList(@NonNull List<InputData> dataList) { | 115 | private static List<Float> createValueList(@NonNull List<InputData> dataList) { |
93 | List<Float> valueList = new ArrayList<>(); | 116 | List<Float> valueList = new ArrayList<>(); |
94 | - long topValue = ValueUtils.max(dataList);//取最大值 | 117 | + topValue=topValue > ValueUtils.maxOne(dataList)?topValue:ValueUtils.maxOne(dataList);//取最大值 |
95 | 118 | ||
96 | for (InputData data : dataList) { | 119 | for (InputData data : dataList) { |
97 | float value = (float) data.valueY / topValue; | 120 | float value = (float) data.valueY / topValue; |
@@ -162,7 +185,7 @@ public class ValueUtils { | @@ -162,7 +185,7 @@ public class ValueUtils { | ||
162 | 185 | ||
163 | @SuppressWarnings("UnnecessaryLocalVariable") | 186 | @SuppressWarnings("UnnecessaryLocalVariable") |
164 | private static int getCoordinateY(@NonNull Chart chart, float value) { | 187 | private static int getCoordinateY(@NonNull Chart chart, float value) { |
165 | - int height = chart.height - chart.padding- chart.textSize; | 188 | + int height = chart.height - chart.padding - chart.textSize; |
166 | int heightOffset = chart.heightOffset; | 189 | int heightOffset = chart.heightOffset; |
167 | 190 | ||
168 | int heightCorrected = height - heightOffset; | 191 | int heightCorrected = height - heightOffset; |
mvpsdk/src/main/java/com/share/mvpsdk/view/chartview/ChartView.java
@@ -2,7 +2,13 @@ package com.share.mvpsdk.view.chartview; | @@ -2,7 +2,13 @@ package com.share.mvpsdk.view.chartview; | ||
2 | 2 | ||
3 | import android.content.Context; | 3 | import android.content.Context; |
4 | import android.graphics.Canvas; | 4 | import android.graphics.Canvas; |
5 | +import android.graphics.Color; | ||
6 | +import android.graphics.DashPathEffect; | ||
5 | import android.graphics.Paint; | 7 | import android.graphics.Paint; |
8 | +import android.graphics.Path; | ||
9 | +import android.graphics.PathDashPathEffect; | ||
10 | +import android.graphics.RectF; | ||
11 | +import android.graphics.Shader; | ||
6 | import android.support.annotation.NonNull; | 12 | import android.support.annotation.NonNull; |
7 | import android.support.annotation.Nullable; | 13 | import android.support.annotation.Nullable; |
8 | import android.util.AttributeSet; | 14 | import android.util.AttributeSet; |
@@ -32,9 +38,11 @@ public class ChartView extends View { | @@ -32,9 +38,11 @@ public class ChartView extends View { | ||
32 | 38 | ||
33 | Paint textPaint;//轴的数值的画笔 | 39 | Paint textPaint;//轴的数值的画笔 |
34 | 40 | ||
41 | + Paint effectPaint;//有间隔的画笔 | ||
42 | + | ||
35 | Chart chart;//图表属性 | 43 | Chart chart;//图表属性 |
36 | 44 | ||
37 | - List<ChartPath> chartPathList=null;//路径的集合 | 45 | + List<ChartPath> chartPathList = null;//路径的集合 |
38 | 46 | ||
39 | private int axisColor, valuesColor, textColor; | 47 | private int axisColor, valuesColor, textColor; |
40 | 48 | ||
@@ -61,25 +69,11 @@ public class ChartView extends View { | @@ -61,25 +69,11 @@ public class ChartView extends View { | ||
61 | 69 | ||
62 | } | 70 | } |
63 | 71 | ||
64 | - //添加路径 | ||
65 | - public void setChartPaths(List<InputData> inputData){ | ||
66 | - if (null==chartPathList)chartPathList=new ArrayList<>(); | ||
67 | - ChartPath chartPath=new ChartPath(inputData); | ||
68 | - chartPathList.add(chartPath); | ||
69 | - chart.setInputDataList(inputData); | ||
70 | - chart.titleWidth=getTitleWidth(); | ||
71 | - measure(690,392); | ||
72 | - Log.d("66666","setChartPaths="+chart.toString()); | ||
73 | - chart.setDrawDataList(ValueUtils.getDrawData(chart)); | ||
74 | - invalidate(); | ||
75 | - | ||
76 | - } | ||
77 | - | ||
78 | //设置颜色 | 72 | //设置颜色 |
79 | - public void setColors(int textColor,int axisColor,int valuesColor){ | ||
80 | - this.textColor=textColor; | ||
81 | - this.axisColor=axisColor; | ||
82 | - this.valuesColor=valuesColor; | 73 | + public void setColors(int textColor, int axisColor, int valuesColor) { |
74 | + this.textColor = textColor; | ||
75 | + this.axisColor = axisColor; | ||
76 | + this.valuesColor = valuesColor; | ||
83 | } | 77 | } |
84 | 78 | ||
85 | private int getTitleWidth() { | 79 | private int getTitleWidth() { |
@@ -88,15 +82,29 @@ public class ChartView extends View { | @@ -88,15 +82,29 @@ public class ChartView extends View { | ||
88 | return 0; | 82 | return 0; |
89 | } | 83 | } |
90 | 84 | ||
91 | - String maxValue = String.valueOf(ValueUtils.max(valueList)); | 85 | + String maxValue = String.valueOf(ValueUtils.max(chartPathList)); |
92 | int titleWidth = (int) textPaint.measureText(maxValue); | 86 | int titleWidth = (int) textPaint.measureText(maxValue); |
93 | int padding = chart.padding; | 87 | int padding = chart.padding; |
94 | 88 | ||
95 | return padding + titleWidth + padding; | 89 | return padding + titleWidth + padding; |
96 | } | 90 | } |
91 | + | ||
92 | + //添加路径 | ||
93 | + public void setChartPaths(List<InputData> inputData) { | ||
94 | + if (null == chartPathList) chartPathList = new ArrayList<>(); | ||
95 | + ChartPath chartPath = new ChartPath(inputData); | ||
96 | + chartPathList.add(chartPath); | ||
97 | + chart.setInputDataList(inputData); | ||
98 | + chart.titleWidth = getTitleWidth(); | ||
99 | + invalidate(); | ||
100 | + | ||
101 | + } | ||
102 | + | ||
97 | /** | 103 | /** |
98 | * 初始化 画笔 | 104 | * 初始化 画笔 |
99 | */ | 105 | */ |
106 | + Path path = new Path(); | ||
107 | + | ||
100 | private void initPaint() { | 108 | private void initPaint() { |
101 | 109 | ||
102 | chart = new Chart(); | 110 | chart = new Chart(); |
@@ -117,6 +125,8 @@ public class ChartView extends View { | @@ -117,6 +125,8 @@ public class ChartView extends View { | ||
117 | valuesPaint = new Paint(); | 125 | valuesPaint = new Paint(); |
118 | valuesPaint.setAntiAlias(true); | 126 | valuesPaint.setAntiAlias(true); |
119 | valuesPaint.setTextSize(chart.textSize); | 127 | valuesPaint.setTextSize(chart.textSize); |
128 | + valuesPaint.setStrokeWidth(2); | ||
129 | + valuesPaint.setStyle(Paint.Style.FILL); | ||
120 | valuesPaint.setColor(getResources().getColor(R.color.theme_day_blue)); | 130 | valuesPaint.setColor(getResources().getColor(R.color.theme_day_blue)); |
121 | 131 | ||
122 | textPaint = new Paint(); | 132 | textPaint = new Paint(); |
@@ -125,6 +135,14 @@ public class ChartView extends View { | @@ -125,6 +135,14 @@ public class ChartView extends View { | ||
125 | textPaint.setAntiAlias(true); | 135 | textPaint.setAntiAlias(true); |
126 | textPaint.setStyle(Paint.Style.FILL); | 136 | textPaint.setStyle(Paint.Style.FILL); |
127 | 137 | ||
138 | + effectPaint = new Paint(); | ||
139 | + effectPaint.setStyle(Paint.Style.STROKE); | ||
140 | + effectPaint.setAntiAlias(true); | ||
141 | + effectPaint.setStrokeWidth(2); | ||
142 | + effectPaint.setColor(getResources().getColor(R.color.theme_day_blue)); | ||
143 | +// path.lineTo(); | ||
144 | + effectPaint.setPathEffect(new PathDashPathEffect(path, 15, 0, PathDashPathEffect.Style.ROTATE)); | ||
145 | + | ||
128 | } | 146 | } |
129 | 147 | ||
130 | @Override | 148 | @Override |
@@ -132,8 +150,9 @@ public class ChartView extends View { | @@ -132,8 +150,9 @@ public class ChartView extends View { | ||
132 | super.onDraw(canvas); | 150 | super.onDraw(canvas); |
133 | 151 | ||
134 | drawChartVertical(canvas); | 152 | drawChartVertical(canvas); |
135 | - drawChartHorizontal(canvas); | ||
136 | drawFrameLines(canvas); | 153 | drawFrameLines(canvas); |
154 | + drawChartHorizontal(canvas); | ||
155 | + | ||
137 | 156 | ||
138 | } | 157 | } |
139 | 158 | ||
@@ -144,7 +163,7 @@ public class ChartView extends View { | @@ -144,7 +163,7 @@ public class ChartView extends View { | ||
144 | return; | 163 | return; |
145 | } | 164 | } |
146 | 165 | ||
147 | - long maxValue = ValueUtils.max(inputDataList); | 166 | + long maxValue = ValueUtils.max(chartPathList); |
148 | long correctedMaxValue = ValueUtils.getCorrectedMaxValue(maxValue); | 167 | long correctedMaxValue = ValueUtils.getCorrectedMaxValue(maxValue); |
149 | float value = (float) correctedMaxValue / maxValue; | 168 | float value = (float) correctedMaxValue / maxValue; |
150 | 169 | ||
@@ -172,10 +191,13 @@ public class ChartView extends View { | @@ -172,10 +191,13 @@ public class ChartView extends View { | ||
172 | 191 | ||
173 | if (i > 0) { | 192 | if (i > 0) { |
174 | // canvas.drawLine(titleWidth, currHeight, width, currHeight, frameInternalPaint); | 193 | // canvas.drawLine(titleWidth, currHeight, width, currHeight, frameInternalPaint); |
194 | + //横向间隔线 | ||
195 | + canvas.drawLine(titleWidth-5,titleY-textSize/2,width,titleY-textSize/2,textPaint); | ||
175 | } | 196 | } |
176 | 197 | ||
177 | String title = String.valueOf(currTitle); | 198 | String title = String.valueOf(currTitle); |
178 | canvas.drawText(title, padding, titleY, textPaint); | 199 | canvas.drawText(title, padding, titleY, textPaint); |
200 | + textPaint.setColor(getResources().getColor(R.color.gray)); | ||
179 | 201 | ||
180 | currHeight -= chartPartHeight; | 202 | currHeight -= chartPartHeight; |
181 | currTitle += correctedMaxValue / Chart.CHART_PARTS; | 203 | currTitle += correctedMaxValue / Chart.CHART_PARTS; |
@@ -183,44 +205,82 @@ public class ChartView extends View { | @@ -183,44 +205,82 @@ public class ChartView extends View { | ||
183 | } | 205 | } |
184 | 206 | ||
185 | private void drawChartHorizontal(@NonNull Canvas canvas) { | 207 | private void drawChartHorizontal(@NonNull Canvas canvas) { |
186 | - List<InputData> inputDataList = chart.getInputDataList(); | ||
187 | - List<DrawData> drawDataList = chart.getDrawDataList(); | ||
188 | - Log.d("66666","drawChartHorizontal="+drawDataList); | ||
189 | - if (inputDataList == null || inputDataList.isEmpty() || drawDataList == null || drawDataList.isEmpty()) { | ||
190 | - return; | ||
191 | - } | ||
192 | -// drawPath(drawDataList,canvas); | ||
193 | - for (int i = 0; i < inputDataList.size(); i++) { | ||
194 | - | ||
195 | - InputData inputData = inputDataList.get(i); | ||
196 | - String date = DateUtils.format(inputData.valueX); | ||
197 | - int dateWidth = (int) axisPaint.measureText(date); | ||
198 | - int x; | ||
199 | - if (drawDataList.size() > i) { | ||
200 | - DrawData drawData = drawDataList.get(i); | ||
201 | - x = drawData.startX; | ||
202 | - if (i > 0) { | 208 | + for (int j = 0; j < chartPathList.size(); j++) { |
209 | + chagerColor(j); | ||
210 | + List<InputData> inputDataList = chart.getInputDataList(); | ||
211 | +// List<DrawData> drawDataList = chart.getDrawDataList(); | ||
212 | + List<DrawData> drawDataList = ValueUtils.getDrawDatas(chartPathList.get(j).inputDataList, chart); | ||
213 | + if (inputDataList == null || inputDataList.isEmpty() || drawDataList == null || drawDataList.isEmpty()) { | ||
214 | + return; | ||
215 | + } | ||
216 | + for (int i = 0; i < inputDataList.size(); i++) { | ||
217 | + | ||
218 | + InputData inputData = inputDataList.get(i); | ||
219 | +// String date = DateUtils.format(inputData.valueX); | ||
220 | + String date = inputData.valueX; | ||
221 | + int dateWidth = (int) axisPaint.measureText(date); | ||
222 | + int x; | ||
223 | + if (drawDataList.size() > i) { | ||
224 | + DrawData drawData = drawDataList.get(i); | ||
225 | + x = drawData.startX; | ||
226 | + if (i > 0) { | ||
203 | // x -= (dateWidth / 2); | 227 | // x -= (dateWidth / 2); |
204 | - x = drawDataList.get(i).startX - (dateWidth / 2) - chart.padding - chart.textSize; | 228 | + x = drawDataList.get(i).startX - (dateWidth / 2) - chart.padding - chart.textSize; |
229 | + } | ||
230 | + } else { | ||
231 | + x = drawDataList.get(drawDataList.size() - 1).stopX - dateWidth - chart.padding - chart.textSize; | ||
232 | + } | ||
233 | + if (i > 0) { | ||
234 | + float startX = i == drawDataList.size() ? x + chart.textSize : x + dateWidth / 2; | ||
235 | + float startY = drawDataList.get(i - 1).stopY; | ||
236 | + float stopX = i == drawDataList.size() ? x + chart.textSize : x + dateWidth / 2; | ||
237 | + float stopY = chart.height - chart.textSize - chart.padding; | ||
238 | + | ||
239 | +// canvas.drawLine(startX, | ||
240 | +// startY, | ||
241 | +// stopX, | ||
242 | +// stopY, effectPaint); | ||
243 | + | ||
244 | + //画文字 | ||
245 | + canvas.drawText(date, x, chart.height - chart.padding / 2, textPaint); | ||
246 | + | ||
247 | + //画圆点 | ||
248 | + canvas.drawCircle(startX, startY, 10, valuesPaint); | ||
249 | + | ||
250 | + //点之间的连线 | ||
251 | + if (i < drawDataList.size() - 1) { | ||
252 | + canvas.drawLine(startX, startY, drawDataList.get(i + 1).startX - chart.padding - chart.textSize, drawDataList.get(i + 1).startY, valuesPaint); | ||
253 | + } else { | ||
254 | + canvas.drawLine(drawDataList.get(drawDataList.size() - 1).startX - chart.padding - chart.textSize, | ||
255 | + drawDataList.get(drawDataList.size() - 1).startY, startX, startY, valuesPaint); | ||
256 | + } | ||
205 | } | 257 | } |
206 | - } else { | ||
207 | - x = drawDataList.get(drawDataList.size() - 1).stopX - dateWidth - chart.padding - chart.textSize; | ||
208 | } | 258 | } |
209 | - if (i > 0) | ||
210 | - canvas.drawLine(i == drawDataList.size() ? x + chart.textSize : x + dateWidth / 2, | ||
211 | - drawDataList.get(i - 1).stopY, i == drawDataList.size() ? x + chart.textSize : x + dateWidth / 2, chart.height | ||
212 | - - chart.textSize - chart.padding, textPaint); | ||
213 | - canvas.drawText(date, x, chart.height, textPaint); | ||
214 | } | 259 | } |
215 | } | 260 | } |
216 | 261 | ||
262 | + private void chagerColor(int j) { | ||
263 | + switch (j){ | ||
264 | + case 0: | ||
265 | + valuesPaint.setColor(getResources().getColor(R.color.theme_day_blue)); | ||
266 | + break; | ||
267 | + case 1: | ||
268 | + valuesPaint.setColor(getResources().getColor(R.color.md_light_green_500)); | ||
269 | + break; | ||
270 | + case 2: | ||
271 | + valuesPaint.setColor(getResources().getColor(R.color.light_yellow)); | ||
272 | + break; | ||
273 | + } | ||
274 | + } | ||
275 | + | ||
276 | + //画横纵坐标轴 | ||
217 | private void drawFrameLines(@NonNull Canvas canvas) { | 277 | private void drawFrameLines(@NonNull Canvas canvas) { |
218 | int textSize = chart.textSize; | 278 | int textSize = chart.textSize; |
219 | int padding = chart.padding; | 279 | int padding = chart.padding; |
220 | 280 | ||
221 | int height = chart.height - textSize - padding; | 281 | int height = chart.height - textSize - padding; |
222 | int width = chart.width - textSize - padding; | 282 | int width = chart.width - textSize - padding; |
223 | - int titleWidth = chart.titleWidth; | 283 | + int titleWidth = chart.titleWidth-5; |
224 | int heightOffset = chart.heightOffset; | 284 | int heightOffset = chart.heightOffset; |
225 | 285 | ||
226 | canvas.drawLine(titleWidth, heightOffset, titleWidth, height, axisPaint); | 286 | canvas.drawLine(titleWidth, heightOffset, titleWidth, height, axisPaint); |
@@ -233,10 +293,9 @@ public class ChartView extends View { | @@ -233,10 +293,9 @@ public class ChartView extends View { | ||
233 | 293 | ||
234 | int width = MeasureSpec.getSize(widthMeasureSpec); | 294 | int width = MeasureSpec.getSize(widthMeasureSpec); |
235 | int height = MeasureSpec.getSize(heightMeasureSpec) / 2; | 295 | int height = MeasureSpec.getSize(heightMeasureSpec) / 2; |
236 | - chart.width=width; | ||
237 | - chart.height=height; | ||
238 | - Log.d("66666","onMeasure="+chart.toString()); | 296 | + chart.width = width; |
297 | + chart.height = height; | ||
239 | setMeasuredDimension(width, height); | 298 | setMeasuredDimension(width, height); |
240 | - | 299 | + chart.setDrawDataList(ValueUtils.getDrawData(chart)); |
241 | } | 300 | } |
242 | } | 301 | } |
mvpsdk/src/main/java/com/share/mvpsdk/view/chartview/data/InputData.java
@@ -7,11 +7,11 @@ package com.share.mvpsdk.view.chartview.data; | @@ -7,11 +7,11 @@ package com.share.mvpsdk.view.chartview.data; | ||
7 | 7 | ||
8 | public class InputData { | 8 | public class InputData { |
9 | 9 | ||
10 | - public long valueX; | 10 | + public String valueX; |
11 | 11 | ||
12 | public long valueY; | 12 | public long valueY; |
13 | 13 | ||
14 | - public InputData(long valueX,long valueY){ | 14 | + public InputData(String valueX,long valueY){ |
15 | this.valueX=valueX; | 15 | this.valueX=valueX; |
16 | this.valueY=valueY; | 16 | this.valueY=valueY; |
17 | } | 17 | } |