MPAndroidChart之LineChart使用

1.写在前面

我很纠结着标题该怎么取,因为对于这个图表框架我只使用了linechart,但是用的非常非常的多,公司很多地方都是折线图。因为项目有关折线图的功能基本都完了,所以抽出一部分东西出来记录下来。这里抽出的效果图如下:
这里写图片描述
领导具体的要求有这么几点:
1. 第一个折线图表示实时功率,后面的月 年 总体都是发电量,并且日实时功率要充满(就是fill),其他的不用;
2. 日实时功率图表中X轴的值表示一天24小时,月发电量X轴表示30天或者31或者其他反正单位是天,年和总体同理,一个是12个月,一个是年。
3. 点击的Markview要和Web端一样,就是我折线图上的点击出现相应的X Y轴上的值;
这里写图片描述
然后UI就摔给我这张差不多的设计图,最后做出这样子,现在抽出来,做出的demo如下
这里写图片描述

2.步骤

A.分析

对于上面的要求分析下来可以知道:图表还是那个图表,不用初始化View好几次,只是数据变化了,就和recyclerview一样,我们只是需要改变数据源然后刷新界面就可以了,刚好提供图表库的大牛也是这样设计的,所有的方法都有。然后对于X轴上的值的显示,我们知道所有的折线图都是由点组成的,这个点是用Entry表示的,然后折线图也就是一组(X,Y),但是我们获取到这点Entry的对象时可以发现(用过这个框架的人知道),对于他的构造方法并不能直接把我们想要X轴上的值构造出来,举个例子,这折线图上不是有这样的一个点(10:40,99788),我们用这个去构造Entry那绝对不行的,来看看它提供的这些构造方法

  /**
     * A Entry represents one single entry in the chart.
     *
     * @param x the x value
     * @param y the y value (the actual value of the entry)
     */
    public Entry(float x, float y) {
        super(y);
        this.x = x;
    }

    /**
     * A Entry represents one single entry in the chart.
     *
     * @param x the x value
     * @param y the y value (the actual value of the entry)
     * @param data Spot for additional data this Entry represents.
     */
    public Entry(float x, float y, Object data) {
        super(y, data);
        this.x = x;
    }

其他的不列出来了,太多了,反正是没有(String x,String y)或者(String x,float y)这种的。当然它提供了其他方法来完成我们想要达到的效果,方法有很多,但是我使用的是ValuesFormat这种,因为其他的我试了下,如果不切换数据,还是可以,数据切换有问题。
对于最后一点要求,这个框架的demo中提供了简单版本的方法,但是还不够,需要我们在这个基础上修改。

B.使用

1.很多简单的api(如下)我就不解释了,

        Description description = lineChart.getDescription();
        description.setYOffset(10);
        description.setEnabled(true);
        description.setText("时间");

用中文解释可能说不清楚并且你也不知道我说的对不对。对于这种api的学习很简单,首先把MPAndroidChart
中demo方法全部试一遍,true改成flase,10改成30等等这样的,看看有什么变化,然后点击进去看看它给方法写的注释,最后不行去wiki看看或者google,我基本都是这样的,感觉这样挺不错的。
2.布局不贴了,等下我留个地址并且很多地方都注释了的,很清楚。直接上linechart的初始化

/**
     * 初始化折线图
      */
    private void initChartView() {
        lineChart = (LineChart) this.findViewById(R.id.linechart);

        //在点击高亮值时回调
        lineChart.setOnChartValueSelectedListener(this);

        //设置整个图表的颜色
        lineChart.setBackgroundResource(R.drawable.bg_line_chart);

        Description description = line
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值