HelloCharts

首先是源数据的获取封装,使用Hellocharts的PointValue将获取到的座标轴数据分类进行封装,这里将数据分为最高和高低温度。PointValue的构造函数为x轴,y轴两个参数。如下

   List<PointValue> valuesLow = new ArrayList<PointValue>();    //每天的最低温度
List<PointValue> valuesHigh = new ArrayList<PointValue>();   //每天的最高温度
for(int i=0;i<list.size();i++){    //list为数据集合 数据结构如下:
    /** "future":[
                {
                    "date":"2016-03-25",
                    "dayTime":"晴",
                    "night":"晴",
                    "temperature":"15°C / 3°C",
                    "week":"今天",
                    "wind":"无持续风向 小于3级"
                },
            ] */

String[] temp=list.get(i).getTemperature().split("/",2);
    //x轴座标其实就是从i开始到需要的那天结束 此次截取字符串。。
valuesHihg.add(new PointValue(i,Integer.parseInt(temp[0].trim().substring(0,temp[0].length()-3).trim())).setLabel(temp[0]));
if (temp[1].length()==0||temp[1]==null||temp.length==1)
temp[1] = "0000";
valuesLow.add(new PointValue(i,Integer.parseInt(temp[1].trim().substring(0,temp[1].length()-3).trim())).setLabel(temp[1]));
}
   initLineChart(valuesHigh,valuesLow);//处理图表
下面就是对图表各属性的设置了
  /**
* 初始化LineChart的一些设置
*/
private void initLineChart(List<PointValue> highPointValues,List<PointValue> lowPointValues){
List<Line> lines = new ArrayList<Line>();
Line line = new Line(highPointValues).setColor(Color.parseColor("#C0D79C")).setStrokeWidth(1); //折线的颜色、粗细
line.setShape(ValueShape.CIRCLE);//折线图上每个数据点的形状 这里是圆形 (有三种 :ValueShape.SQUARE ValueShape.CIRCLE ValueShape.SQUARE)
line.setCubic(true);//曲线是否平滑
line.setFilled(false);//是否填充曲线的面积
  line.setHasLabels(true);//曲线的数据坐标是否加上备注
line.setPointRadius(3); //座标点大小
line.setHasLabelsOnlyForSelected(false);//点击数据坐标提示数据(设置了这个line.setHasLabels(true);就无效)
line.setHasLines(true);//是否用直线显示。如果为false 则没有曲线只有点显示
line.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示
lines.add(line);
Line lineLow = new Line(lowPointValues).setColor(Color.parseColor("#C0D79C")).setStrokeWidth(1);
lineLow.setShape(ValueShape.CIRCLE);//折线图上每个数据点的形状 这里是圆形 (有三种 :ValueShape.SQUARE ValueShape.CIRCLE ValueShape.SQUARE)
lineLow.setCubic(true);//曲线是否平滑
lineLow.setFilled(false);//是否填充曲线的面积
lineLow.setHasLabels(true);//曲线的数据坐标是否加上备注
lineLow.setPointRadius(3);
lineLow.setHasLabelsOnlyForSelected(false);//点击数据坐标提示数据(设置了这个line.setHasLabels(true);就无效)
lineLow.setHasLines(true);//是否用直线显示。如果为false 则没有曲线只有点显示
lineLow.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示
lines.add(lineLow);
LineChartData data = new LineChartData();
data.setValueLabelBackgroundColor(Color.TRANSPARENT);    //此处设置坐标点旁边的文字背景
data.setValueLabelBackgroundEnabled(false);
data.setValueLabelsTextColor(Color.BLACK); //此处设置坐标点旁边的文字颜色
        data.setLines(lines);

//设置行为属性,支持缩放、滑动以及平移
mWeatherChart.setInteractive(false);
// mWeatherChart.setZoomType(ZoomType.HORIZONTAL_AND_VERTICAL);
// mWeatherChart.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
mWeatherChart.setScrollEnabled(false);
mWeatherChart.setLineChartData(data);
mWeatherChart.setValueTouchEnabled(false);
mWeatherChart.setFocusableInTouchMode(false);
mWeatherChart.setVisibility(View.VISIBLE);
mWeatherChart.startDataAnimation();
}
效果图


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值