From 51f8633b379efab41a8b19a375d5e41785a15ee6 Mon Sep 17 00:00:00 2001 From: 张海江 <181069201@qq.com> Date: Fri, 11 Aug 2017 09:14:40 +0800 Subject: [PATCH] 提交代码 --- app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java | 142 +++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 124 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java b/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java index 284c5f7..26fa55f 100644 --- a/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java +++ b/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java @@ -8,14 +8,23 @@ import android.widget.RadioGroup; import android.widget.TextView; +import com.lzy.okgo.cache.CacheMode; +import com.moral.andbrickslib.utils.FastJsonTools; import com.moral.andbrickslib.utils.TimeUtil; +import com.moral.yunfushao.MainApp; import com.moral.yunfushao.R; import com.moral.yunfushao.base.BaseActivity; +import com.moral.yunfushao.common.API; +import com.moral.yunfushao.httputils.HttpCallBack; +import com.moral.yunfushao.httputils.HttpUtils; +import com.moral.yunfushao.model.UserData; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; -import java.util.Random; +import lecho.lib.hellocharts.formatter.LineChartValueFormatter; +import lecho.lib.hellocharts.formatter.SimpleLineChartValueFormatter; import lecho.lib.hellocharts.gesture.ContainerScrollType; import lecho.lib.hellocharts.gesture.ZoomType; import lecho.lib.hellocharts.model.Axis; @@ -41,7 +50,7 @@ private List<AxisValue> mAxisXValues = new ArrayList<>(); private RadioGroup rg_time; - private TextView tv_starttime,tv_endtime; + private TextView tv_starttime,tv_endtime,tv_value; private ImageView iv_pre,iv_next; private int type=0; @Override @@ -64,6 +73,7 @@ rg_time = findView(R.id.rg_time); tv_starttime = findView(R.id.tv_starttime); tv_endtime = findView(R.id.tv_endtime); + tv_value = findView(R.id.tv_value); iv_pre = findView(R.id.iv_pre); iv_next = findView(R.id.iv_next); rg_time.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @@ -77,6 +87,7 @@ chartView.setLineChartData(data); tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",TimeUtil.getCurrentDate("yyyy-MM-dd"),-1)); tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-7)); + getData(tv_starttime.getText().toString(),tv_endtime.getText().toString()); break; case R.id.rb_month: type = 1; @@ -85,12 +96,14 @@ chartView.setLineChartData(data); tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",TimeUtil.getCurrentDate("yyyy-MM-dd"),-1)); tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-28)); + getData(tv_starttime.getText().toString(),tv_endtime.getText().toString()); break; } } }); tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",TimeUtil.getCurrentDate("yyyy-MM-dd"),-1)); tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-7)); + getData(tv_starttime.getText().toString(),tv_endtime.getText().toString()); } @Override @@ -101,7 +114,7 @@ @Override protected void initData() { - reshowChart(); + reshowChart(dataList); } @Override @@ -118,6 +131,7 @@ tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),-1)); tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-28)); } + getData(tv_starttime.getText().toString(),tv_endtime.getText().toString()); break; case R.id.iv_next: if(TimeUtil.getCurrentDate("yyyy-MM-dd").equals(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),1))){ @@ -130,6 +144,7 @@ tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),1)); tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),28)); } + getData(tv_starttime.getText().toString(),tv_endtime.getText().toString()); break; } @@ -145,12 +160,14 @@ List<Line> lines = new ArrayList<>(); line.setShape(ValueShape.CIRCLE);//������������������������������������ ��������������� ������������ ���ValueShape.SQUARE ValueShape.CIRCLE ValueShape.DIAMOND��� line.setPointColor(Color.parseColor("#20DAE5")); - line.setCubic(true);//��������������������������������������������� + line.setCubic(false);//��������������������������������������������� line.setFilled(false);//��������������������������� line.setHasLabels(true);//��������������������������������������� // line.setHasLabelsOnlyForSelected(true);//������������������������������������������������line.setHasLabels(true);������������ line.setHasLines(true);//������������������������������false ������������������������������ line.setHasPoints(true);//������������������ ���������false ������������������������������������������������������������������������ + LineChartValueFormatter chartValueFormatter = new SimpleLineChartValueFormatter(3); + line.setFormatter(chartValueFormatter);//��������������� lines.add(line); data = new LineChartData(); data.setLines(lines); @@ -160,9 +177,9 @@ //��������� axisX = new Axis(); //X��� - axisX.setHasTiltedLabels(false); //X���������������������������������������������true��������������� + axisX.setHasTiltedLabels(true); //X���������������������������������������������true��������������� axisX.setName("���������������������"); //������������ - axisX.setTextSize(10);//������������������ + axisX.setTextSize(8);//������������������ axisX.setTextColor(getResources().getColor(R.color.red_txt)); // axisX.setMaxLabelChars(7); //������������X���������������������������������������X���������������������7<=x<=mAxisXValues.length axisX.setValues(mAxisXValues); //������X������������������ @@ -173,7 +190,7 @@ //data.setAxisXTop(axisX); //x ������������ // Y���������������������������������������Y���������(���������������������������Y������������������������������) - axisY = Axis.generateAxisFromRange(0,100,1); //Y��� + axisY = Axis.generateAxisFromRange(0,100, (float) 0.01); //Y��� axisY.setAutoGenerated(false); axisY.setHasLines(true); axisY.setHasSeparationLine(true); @@ -194,7 +211,15 @@ * ���������������������X������������������������������http://forum.xda-developers.com/tools/programming/library-hellocharts-charting-library-t2904456/page2���; */ // chartView.setCurrentViewport(initViewPort(0,7)); - chartView.startDataAnimation(); + final Viewport v = new Viewport(chartView.getMaximumViewport()); + v.bottom = 0; + v.top = 100; +// // You have to set max and current viewports separately. + chartView.setMaximumViewport(v); +// // I changing current viewport with animation in this case. +//// lineChartCO2.setCurrentViewportWithAnimation(v); + chartView.setCurrentViewport(v); +// chartView.startDataAnimation(); } private Viewport initViewPort(float left, float right) { @@ -204,15 +229,17 @@ return port; } - Random random = new Random(); - private void reshowChart() { + private void reshowChart(final ArrayList<UserData> dataList) { chartView.post(new Runnable() { @Override public void run() { - for (int i=0;i<10;i++){ - mPointValues.add(new PointValue(i,random.nextInt(100)%(100-0+1) + 0)); - mAxisXValues.add(new AxisValue(i).setLabel(i + "")); + mPointValues.clear(); + mAxisXValues.clear(); + for (int i=0;i<dataList.size();i++){ + mPointValues.add(new PointValue(i,dataList.get(i).getDay_avg())); + mAxisXValues.add(new AxisValue(i).setLabel(dataList.get(i).getDate().substring(5,10))); +// mAxisXValues.add(new AxisValue(i).setLabel(i+"")); } axisX.setValues(mAxisXValues); @@ -223,14 +250,93 @@ data.setLines(lines); chartView.setLineChartData(data); final Viewport v = new Viewport(chartView.getMaximumViewport()); - v.bottom = -5; - v.top = 100 + 5; - // You have to set max and current viewports separately. + v.bottom = 0; + v.top = 100; +//// // You have to set max and current viewports separately. chartView.setMaximumViewport(v); - // I changing current viewport with animation in this case. -// lineChartCO2.setCurrentViewportWithAnimation(v); +// // I changing current viewport with animation in this case. +//// lineChartCO2.setCurrentViewportWithAnimation(v); chartView.setCurrentViewport(v); } }); } + + private ArrayList<UserData> dataList = new ArrayList<>(); + private void getData(String startTime,String endTime){ + HashMap<String,String> params = new HashMap<>(); + params.put("user_id", MainApp.userId); + params.put("start_time", startTime); + params.put("end_time", endTime); + HttpUtils.doPost(API.GETUSERDATALIST, params, CacheMode.DEFAULT, true, new HttpCallBack() { + @Override + public void onSuccess(String res, String msg) { + if(progressDialog.isShowing()){ + progressDialog.dismiss(); + } + ArrayList<UserData> temp = (ArrayList<UserData>) FastJsonTools.getArrayJson(res,UserData.class); + dataList.clear(); + + dataList.addAll(resetData(temp)); + + //������ + reshowChart(dataList); + } + + @Override + public void showLoadingDialog() { + progressDialog.show(); + } + + @Override + public void onFail(int errno, String s) { + if(progressDialog.isShowing()){ + progressDialog.dismiss(); + } + dataList.clear(); + + dataList.addAll(resetData(new ArrayList<UserData>())); + + //������ + reshowChart(dataList); + tv_value.setText(0+"uSv"); + } + }); + + } + + + private ArrayList<UserData> resetData(ArrayList<UserData> tempList){ + ArrayList<UserData> newList = new ArrayList<>(); + if(type == 0){//��� + for (int i=0;i<7;i++){ + UserData data = new UserData(); + data.setDate(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),i)); + data.setDay_avg(0); + newList.add(data); + } + }else if(type == 1){//��� + for (int i=0;i<7;i++){ + UserData data = new UserData(); + data.setDate(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),i*4)); + data.setDay_avg(0); + newList.add(data); + } + } + //������������ + float totalValues = 0; + if(tempList!=null&&tempList.size()>0){ + for (UserData data : tempList){ + totalValues+= data.getDay_avg(); + for(UserData data1 : newList){ + if(data.getDate().equals(data1.getDate())){ + data1.setDay_avg(data.getDay_avg()); + } + } + } + tv_value.setText(totalValues/tempList.size()+"uSv"); + }else{ + tv_value.setText(0+"uSv"); + } + return newList; + } } -- Gitblit v1.8.0