From 04b72977be56e9cca1eb66883d7217237fb8ab9a Mon Sep 17 00:00:00 2001
From: 张海江 <181069201@qq.com>
Date: Fri, 26 Jan 2018 09:52:33 +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