Commit e280dc617640122faff8fa5183efd4e82ea43d3f

Authored by 陶汉栋
1 parent 1dffc346

no message

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 }