MPAndroidChart 自定义图表绘制使用实例

 更新时间:2022年09月06日 09:05:50   作者:cxy107750  
这篇文章主要为大家介绍了MPAndroidChart 自定义图表绘制使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

声明:文中的MPChart代指MPAndroidChart.

本文主要讲解LineChart中的三个变种Chart,第一个是渐变的LineGradientChart, 第二个是频率散点图,游泳阶梯图,其实MPChart本身也有阶梯图的,DataSet.isDrawSteppedEnabled()这个属性来控制。

1. LineGradientChart

原理:每个Entry中的 Yvalue 值,计算值所在的颜色区间,颜色的值少于值范围。然后绘制线段的时候,drawLine 时设置LineGradient就可以了, colorList跟 entryList 一样存到DataSet中,dataSet.setColors(colorList) Api 接收colorList。

for (int j = mXBounds.min; j <= mXBounds.range + mXBounds.min; j++) {
   Entry e = dataSet.getEntryForIndex(j);
   ...
  //设置 lineGradient
   mRenderPaint.setShader(new LinearGradient(startX, mLineBuffer[1], endX, mLineBuffer[3],
                            dataSet.getColor(j), dataSet.getColor(j+1), Shader.TileMode.MIRROR));
  //用 lineGradient绘制线段。
  canvas.drawLines(mLineBuffer, 0, pointsPerEntryPair * 2, mRenderPaint);
}

图1.0 LineGradientChart

2. 散点图

先看图1.1 散点图:

图1.1 散点图

这个其实有很多做法的,这里直接用LineChart,然后drawLine 时 Paint 的color transparent,或者直接属性控制不画。

设置DataSet.drawCircle(true), 就会绘制 Point点了。三种不同的颜色的Point,DataSetList, 这里自定义了一个CustomDataSet,不同的值区间用不同的Type,对应不同的颜色即可。

图1.2 散点图DataSet自定义

3. SteppedChart

阶梯图就是前后两个点的连线是90度上去或者下来的,即X轴的值是一定的。这里存在一个问题,MPChart中的X轴、Y轴的值是一一对应的,就是Point(1.0, 4) , Point(1.0, 8) 最终存入 DataSet只能有一个,后来的会将前面的覆盖。想办法如何绘制这种SteppedChart呢,就在最后一步,将Transformer转化后的 Buffer里的数据 currentEntry对应的点的 X值改成 PreCurrentEntry的X值,当他们满足业务上的阶梯的条件时,或者将PreCurrentEntry的X值的值改成 currentEntry对应的点的 X值。

直接看图:

图1.3 SteppedChart

本章节主要简单的介绍了几个LineChart 的变种,稍微修改部分属性就可以绘制不同需求的图形。至此,MPChart自定义相关的图形告一段落,原本计划的还有些比如RTL相关的,还有曲线图表的绘制等,有问题需要了解的读者可以留言或者加笔者的联系方式探讨。

后续介绍另外一种脱离MPChart图表,基于RecycleView绘制的图表,可实现的功能可以参照苹果健康里的一些数据图表,无限左右滑动,按下高亮选中滑动,以日、周、月为单位控制 单位区间里的数据,可以属性控制是否单位区间显示,可以自动弹回到邻近的单位区间边界等功能。

以上就是MPAndroidChart 自定义图表绘制使用实例的详细内容,更多关于MPAndroidChart 自定义图表的资料请关注脚本之家其它相关文章!

相关文章

  • Android实现IP地址输入框的方法示例代码

    Android实现IP地址输入框的方法示例代码

    输入框是我们日常开发中经常遇到的一个控件,如果更好的控制输入框是对用户体验很重要的一步,所以下面这篇文章主要给大家介绍了关于Android如何实现IP输入框的相关资料,需要的朋友可以参考下。
    2017-10-10
  • 图文详解自定义View视图的属性及引用

    图文详解自定义View视图的属性及引用

    这篇文章主要介绍了图文详解自定义View视图的属性及引用,由于Android自带的视图无法满足自己需求,又或者美观度不够自己的要求,我们就要自来亲自设计自己的视图,需要的朋友可以参考下
    2023-04-04
  • android中开启actionbar的两种方法

    android中开启actionbar的两种方法

    这篇文章主要介绍了android中开启actionbar的两种方法,本文给出了静态开启和动态开启2种方法,需要的朋友可以参考下
    2015-06-06
  • Android显示系统SurfaceFlinger分析

    Android显示系统SurfaceFlinger分析

    本文详细讲解了Android显示系统SurfaceFlinger,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Android实现对图片放大、平移和旋转的功能

    Android实现对图片放大、平移和旋转的功能

    现在很多App在查看一张图片的原图时,都会支持图片的手势缩放,手势平移以及图片旋转的操作。那么今天小编就来教大家去简单的实现图片的放大、平移、旋转的操作,有需要的可以参考借鉴。
    2016-08-08
  • Android编程之Sdcard相关代码集锦

    Android编程之Sdcard相关代码集锦

    这篇文章主要介绍了Android编程之Sdcard相关代码集锦,包括Android针对sd卡的存取、检测、相关信息获取等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • android中TabHost的图标(48×48)和文字叠加解决方法

    android中TabHost的图标(48×48)和文字叠加解决方法

    开发过程中,有时候图标稍微大点,比如48×48的时候,文字就会和图标叠加起来,遇到这种问题我们该怎样处理呢?本文将详细介绍希望对你有所帮助
    2013-01-01
  • Android GestureDetector手势滑动使用实例讲解

    Android GestureDetector手势滑动使用实例讲解

    这篇文章主要为大家详细介绍了Android GestureDetector手势滑动使用实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Android签名文件转化为pk8和pem的实现

    Android签名文件转化为pk8和pem的实现

    这篇文章主要介绍了Android签名文件转化为pk8和pem的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 如何使用Flutter实现手写签名效果

    如何使用Flutter实现手写签名效果

    Flutter插件提供了用于绘制平滑签名的签名板,下面这篇文章主要给大家介绍了关于如何使用Flutter实现手写签名效果的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12

最新评论