图表框架之hellochart(各属性设置)

前几天帮人做一个温度图表,在网上找了几个相关类库,最终选择了hellocharts,git地址https://github.com/lecho/hellocharts-android,遇到问题不少,希望能帮到大家:

首先是源数据的获取封装,使用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();
}
效果图

 
 
  编辑器用着不爽,就这些吧,代码有些啰嗦,没有整理。大家将就着看吧。有问题欢迎大家留言讨论
 
           

转载于:https://www.cnblogs.com/zhangjia-android/p/5320215.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值