From cdbaf79d124d46b69dc62b653fde55f9d40b5534 Mon Sep 17 00:00:00 2001 From: 陈奇 <1650699704@qq.com> Date: Thu, 01 Nov 2018 17:23:32 +0800 Subject: [PATCH] [*]修改电磁版本 --- app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java | 267 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 196 insertions(+), 71 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 26fa55f..6602109 100644 --- a/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java +++ b/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java @@ -1,15 +1,22 @@ package com.moral.yunfushao.activity; +import android.app.AlertDialog; import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.annotation.IdRes; +import android.text.TextUtils; +import android.view.LayoutInflater; import android.view.View; +import android.view.Window; +import android.widget.Button; import android.widget.ImageView; 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.NumberUtils; import com.moral.andbrickslib.utils.TimeUtil; import com.moral.yunfushao.MainApp; import com.moral.yunfushao.R; @@ -17,13 +24,19 @@ import com.moral.yunfushao.common.API; import com.moral.yunfushao.httputils.HttpCallBack; import com.moral.yunfushao.httputils.HttpUtils; +import com.moral.yunfushao.imageload.ImageLoader; import com.moral.yunfushao.model.UserData; + +import org.json.JSONException; +import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import lecho.lib.hellocharts.formatter.AxisValueFormatter; import lecho.lib.hellocharts.formatter.LineChartValueFormatter; +import lecho.lib.hellocharts.formatter.SimpleAxisValueFormatter; import lecho.lib.hellocharts.formatter.SimpleLineChartValueFormatter; import lecho.lib.hellocharts.gesture.ContainerScrollType; import lecho.lib.hellocharts.gesture.ZoomType; @@ -50,9 +63,10 @@ private List<AxisValue> mAxisXValues = new ArrayList<>(); private RadioGroup rg_time; - private TextView tv_starttime,tv_endtime,tv_value; - private ImageView iv_pre,iv_next; - private int type=0; + private TextView tv_starttime, tv_endtime, tv_value, tv_status; + private ImageView iv_pre, iv_next; + private int type = 2; + @Override protected void getBundleExtras(Bundle extras) { @@ -66,7 +80,7 @@ @Override protected void initViews() { initTopBar(); - tv_title.setText("������������"); + tv_title.setText("������������"); chartView = findView(R.id.chart); initLineChart(); @@ -74,36 +88,46 @@ tv_starttime = findView(R.id.tv_starttime); tv_endtime = findView(R.id.tv_endtime); tv_value = findView(R.id.tv_value); + tv_status = findView(R.id.tv_status); iv_pre = findView(R.id.iv_pre); iv_next = findView(R.id.iv_next); rg_time.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { - switch (i){ + switch (i) { case R.id.rb_week: type = 0; axisX.setName("���������������������"); //������������ data.setAxisXBottom(axisX); //x ������������ 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()); + 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(), -6)); + getData(tv_starttime.getText().toString(), tv_endtime.getText().toString()); break; case R.id.rb_month: type = 1; axisX.setName("���������������������"); //������������ data.setAxisXBottom(axisX); //x ������������ 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()); + 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; + case R.id.rb_day: + type = 2; + axisX.setName("���������������������"); //������������ + data.setAxisXBottom(axisX); //x ������������ + chartView.setLineChartData(data); + tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd", TimeUtil.getCurrentDate("yyyy-MM-dd"), 0)); + tv_starttime.setText(tv_endtime.getText().toString()); + 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()); + tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd", TimeUtil.getCurrentDate("yyyy-MM-dd"), 0)); + tv_starttime.setText(tv_endtime.getText().toString()); + getData(tv_starttime.getText().toString(), tv_endtime.getText().toString()); } @Override @@ -115,36 +139,49 @@ @Override protected void initData() { reshowChart(dataList); + getAd(); } @Override protected void processClick(View view) { - switch (view.getId()){ + switch (view.getId()) { case R.id.tv_left: finish(); break; case R.id.iv_pre: - if(type==0){ - 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(),-7)); - }else if(type == 1){ - 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)); + if (type == 0) { + 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(), -6)); + } else if (type == 1) { + 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)); + } else if (type == 2) { + tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd", tv_starttime.getText().toString(), -1)); + tv_starttime.setText(tv_endtime.getText().toString()); } - getData(tv_starttime.getText().toString(),tv_endtime.getText().toString()); + 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))){ - return; + if (type == 0) { + if (TimeUtil.getCurrentDate("yyyy-MM-dd").equals(TimeUtil.getAfterDate("yyyy-MM-dd", tv_endtime.getText().toString(), 1))) { + return; + } + 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(), 6)); + } else if (type == 1) { + if (TimeUtil.getCurrentDate("yyyy-MM-dd").equals(TimeUtil.getAfterDate("yyyy-MM-dd", tv_endtime.getText().toString(), 1))) { + return; + } + 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)); + } else if (type == 2) { + if (TimeUtil.getCurrentDate("yyyy-MM-dd").equals(TimeUtil.getAfterDate("yyyy-MM-dd", tv_endtime.getText().toString(), 0))) { + return; + } + tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd", tv_endtime.getText().toString(), 1)); + tv_endtime.setText(tv_starttime.getText().toString()); } - if(type==0){ - 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(),7)); - }else if(type == 1){ - 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()); + getData(tv_starttime.getText().toString(), tv_endtime.getText().toString()); break; } @@ -178,26 +215,28 @@ //��������� axisX = new Axis(); //X��� axisX.setHasTiltedLabels(true); //X���������������������������������������������true��������������� - axisX.setName("���������������������"); //������������ + axisX.setName("���������������������"); //������������ axisX.setTextSize(8);//������������������ - axisX.setTextColor(getResources().getColor(R.color.red_txt)); + axisX.setTextColor(getResources().getColor(R.color.blue_txt)); // axisX.setMaxLabelChars(7); //������������X���������������������������������������X���������������������7<=x<=mAxisXValues.length axisX.setValues(mAxisXValues); //������X������������������ axisX.setHasLines(true); //x ������������ - axisX.setLineColor(getResources().getColor(R.color.red_txt)); + axisX.setLineColor(getResources().getColor(R.color.blue_txt)); axisX.setHasSeparationLine(true); data.setAxisXBottom(axisX); //x ������������ //data.setAxisXTop(axisX); //x ������������ // Y���������������������������������������Y���������(���������������������������Y������������������������������) - axisY = Axis.generateAxisFromRange(0,100, (float) 0.01); //Y��� + axisY = Axis.generateAxisFromRange((float) 0.0, (float) 4.0, (float) 0.25); //Y��� axisY.setAutoGenerated(false); + AxisValueFormatter yvalue = new SimpleAxisValueFormatter(1); + axisY.setFormatter(yvalue); axisY.setHasLines(true); axisY.setHasSeparationLine(true); axisY.setName("������");//y��������� axisY.setTextSize(10);//������������������ - axisY.setTextColor(getResources().getColor(R.color.red_txt)); - axisY.setLineColor(getResources().getColor(R.color.red_txt)); + axisY.setTextColor(getResources().getColor(R.color.blue_txt)); + axisY.setLineColor(getResources().getColor(R.color.blue_txt)); data.setAxisYLeft(axisY); //Y������������������ //������������������������������������������������������ @@ -212,8 +251,8 @@ */ // chartView.setCurrentViewport(initViewPort(0,7)); final Viewport v = new Viewport(chartView.getMaximumViewport()); - v.bottom = 0; - v.top = 100; + v.bottom = (float) 0.0; + v.top = (float) 4.0; // // You have to set max and current viewports separately. chartView.setMaximumViewport(v); // // I changing current viewport with animation in this case. @@ -236,9 +275,15 @@ public void run() { 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))); + for (int i = 0; i < dataList.size(); i++) { + if (type == 2) { + mPointValues.add(new PointValue(i, dataList.get(i).getHour_avg())); + mAxisXValues.add(new AxisValue(i).setLabel((dataList.get(i).getTime_level() - 1) * 3 + "���")); + } else { + 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+"")); } @@ -250,8 +295,8 @@ data.setLines(lines); chartView.setLineChartData(data); final Viewport v = new Viewport(chartView.getMaximumViewport()); - v.bottom = 0; - v.top = 100; + v.bottom = (float) 0.0; + v.top = (float) 4.0; //// // You have to set max and current viewports separately. chartView.setMaximumViewport(v); // // I changing current viewport with animation in this case. @@ -262,24 +307,33 @@ } private ArrayList<UserData> dataList = new ArrayList<>(); - private void getData(String startTime,String endTime){ - HashMap<String,String> params = new HashMap<>(); + + 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()){ + if (progressDialog.isShowing()) { progressDialog.dismiss(); } - ArrayList<UserData> temp = (ArrayList<UserData>) FastJsonTools.getArrayJson(res,UserData.class); - dataList.clear(); + try { + JSONObject jsonObject = new JSONObject(res); + String data = jsonObject.optString("data"); + ArrayList<UserData> temp = (ArrayList<UserData>) FastJsonTools.getArrayJson(data, UserData.class); + dataList.clear(); - dataList.addAll(resetData(temp)); + dataList.addAll(resetData(temp)); - //������ - reshowChart(dataList); + //������ + reshowChart(dataList); + tv_value.setText(NumberUtils.getBigDecimalValue(jsonObject.optDouble("avg"), 3) + "uSv"); + tv_status.setText(jsonObject.optString("status")); + } catch (JSONException e) { + e.printStackTrace(); + } } @Override @@ -289,7 +343,7 @@ @Override public void onFail(int errno, String s) { - if(progressDialog.isShowing()){ + if (progressDialog.isShowing()) { progressDialog.dismiss(); } dataList.clear(); @@ -298,45 +352,116 @@ //������ reshowChart(dataList); - tv_value.setText(0+"uSv"); } }); } - private ArrayList<UserData> resetData(ArrayList<UserData> tempList){ + private ArrayList<UserData> resetData(ArrayList<UserData> tempList) { ArrayList<UserData> newList = new ArrayList<>(); - if(type == 0){//��� - for (int i=0;i<7;i++){ + 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.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++){ + } 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.setDate(TimeUtil.getAfterDate("yyyy-MM-dd", tv_starttime.getText().toString(), i * 4)); data.setDay_avg(0); + newList.add(data); + } + } else if (type == 2) {//��� + for (int i = 0; i < 8; i++) { + UserData data = new UserData(); + data.setTime_level(i + 1); + data.setHour_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()); + if (tempList != null && tempList.size() > 0) { + for (UserData data : tempList) { + totalValues += data.getDay_avg(); + for (UserData data1 : newList) { + if (type == 2) { + if (data.getTime_level() == data1.getTime_level()) { + data1.setHour_avg(data.getHour_avg()); + } + } else { + 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"); +// tv_value.setText(totalValues/tempList.size()+"uSv"); + } else { +// tv_value.setText(0+"uSv"); } return newList; } + + private AlertDialog adDialog; + private View adView; + private TextView tv_content, tv_name; + private ImageView iv_logo; + private Button bt_cancel, bt_ok; + + private void showAd(String content, String logo, String name) { + adView = LayoutInflater.from(this).inflate(R.layout.dialog_ad_layout, null); + tv_content = (TextView) adView.findViewById(R.id.tv_content); + tv_name = (TextView) adView.findViewById(R.id.tv_name); + bt_cancel = (Button) adView.findViewById(R.id.bt_cancel); + bt_ok = (Button) adView.findViewById(R.id.bt_ok); + iv_logo = (ImageView) adView.findViewById(R.id.iv_logo); + tv_content.setText(content); + tv_name.setText(name); + ImageLoader.setCircleImageView(this, logo, iv_logo, R.mipmap.circle); + bt_cancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + adDialog.dismiss(); + } + }); + adDialog = new AlertDialog.Builder(this).setView(adView).create(); + Window window = adDialog.getWindow(); + window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + adDialog.show(); + } + + + private void getAd() { + HttpUtils.doPost(API.GETAD, null, CacheMode.DEFAULT, false, new HttpCallBack() { + @Override + public void onSuccess(String res, String msg) { + if (TextUtils.isEmpty(res)) { + return; + } + try { + JSONObject json = new JSONObject(res); + showAd(json.optString("content"), json.optString("logo"), json.optString("name")); + } catch (JSONException e) { + e.printStackTrace(); + } + + + } + + @Override + public void showLoadingDialog() { + + } + + @Override + public void onFail(int errno, String s) { + + } + }); + } } -- Gitblit v1.8.0