package com.campus.gomotion.chart; import android.content.Context; import android.graphics.Color; import android.graphics.Paint; import android.view.View; import com.campus.gomotion.service.MotionStatisticService; import com.campus.gomotion.util.TypeConvertUtil; import org.achartengine.ChartFactory; import org.achartengine.chart.BarChart; import org.achartengine.renderer.XYMultipleSeriesRenderer; import java.sql.Time; import java.util.*; /** * Author: zhong.zhou * Date: 16/5/10 * Email: muxin_zg@163.com */ public class CaloriesChart extends AbstractDemoChart { public String getName() { return "bar chart"; } /** * Returns the chart description. * * @return the chart description */ public String getDesc() { return "The bar char for daily steps"; } /** * draw the chart of caloriesData * * @param context the context * @return View */ public View execute(Context context) { String[] titles = new String[]{"卡路里"}; List<double[]> xValues = new ArrayList<>(); List<double[]> yValues = new ArrayList<>(); float xStart = 0; Map<Time, Double> caloriesMap = MotionStatisticService.calculateTotalCalories(); int size = caloriesMap.size(); if (size > 0) { xStart = (float) TypeConvertUtil.timeToDouble((Time) caloriesMap.keySet().toArray()[0]); } double[] time = new double[size]; double[] calories = new double[size]; Iterator<Time> iterator = caloriesMap.keySet().iterator(); int i = 0; while (iterator.hasNext()) { Time key = iterator.next(); Double value = caloriesMap.get(key); time[i] = TypeConvertUtil.timeToDouble(key); calories[i] = (double) (Math.round(value * 100)) / 100; i++; } xValues.add(time); yValues.add(calories); int[] colors = new int[]{Color.BLUE}; XYMultipleSeriesRenderer renderer = buildBarRenderer(colors); renderer.getSeriesRendererAt(0).setDisplayChartValues(true); renderer.getSeriesRendererAt(0).setChartValuesTextSize(30); renderer.setXLabelsAlign(Paint.Align.LEFT);// 数据从左到右显示 renderer.setYLabelsAlign(Paint.Align.LEFT); renderer.setPanEnabled(true, false); renderer.setChartTitle("卡路里"); renderer.setChartTitleTextSize(60); renderer.setAxisTitleTextSize(40); renderer.setLabelsTextSize(20); renderer.setXTitle("时间(hh:mm:ss)"); renderer.setYTitle("能耗(cal)"); renderer.setLabelsColor(Color.GREEN); renderer.setAxesColor(Color.BLUE); renderer.setXLabels(20); renderer.setXAxisMin(xStart - 0.2); renderer.setXAxisMax(xStart + 0.2); renderer.setYLabels(6); renderer.setYAxisMin(0); renderer.setYAxisMax(80); return ChartFactory.getBarChartView(context, buildDataset(titles, xValues, yValues), renderer, BarChart.Type.STACKED); } }