没有合适的资源?快使用搜索试试~ 我知道了~
首页Android中MPAndroidChart自定义绘制最高点标识的方法
Android中MPAndroidChart自定义绘制最高点标识的方法
1星 12 下载量 21 浏览量
更新于2023-03-16
评论
收藏 113KB PDF 举报
目前在做一款软件,要求在展示走势图的时候对最高点进行自定义绘制,下面这篇文章主要给大家介绍了关于Android中MPAndroidChart自定义绘制最高点标识的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
资源详情
资源评论
资源推荐
Android中中MPAndroidChart自定义绘制最高点标识的方法自定义绘制最高点标识的方法
目前在做一款软件,要求在展示走势图的时候对最高点进行自定义绘制,下面这篇文章主要给大家介绍了关于
Android中MPAndroidChart自定义绘制最高点标识的方法,文中通过示例代码介绍的非常详细,需要的朋友可以
参考借鉴,下面随着小编来一起学习学习吧。
前言前言
MPAndroidChart是一款基于Android的开源图表库,MPAndroidChart不仅可以在Android设备上绘制各种统计图表,而且可以
对图表进行拖动和缩放操作,应用起来非常灵活。MPAndroidChart显得更为轻巧和简单,拥有常用的图表类型:线型图、饼
图、柱状图和散点图。
MPAndroidChart自定义绘制最高点标识自定义绘制最高点标识
距离上次发布关于 MPAndroidChart 的文章已经过去一个多月了,项目中新增了一个需求,看起来很简单。就是在最高点绘制
矩形框,标识最高点的数值,同时最高点处绘制一个小圈圈,以及绘制平均数值线,如下图所示:
看起来很简单,在 MPAndroidChart 的 demo 中也有 LineChart 具有小圆圈的和显示数值的,不过只在最高点绘制似乎是没
有,并且也无法控制小空心圈圈的大小,所以只能自定义绘制了。
在 LineChart 中自定义渲染绘制需要自定义一个 Render,继承于 LineChartRenderer,然后重写 drawValues 方法。
接下来说说一个 LineChart 的基本构成,每一个点都是一个 Entry,其两个参数分别是 X 轴和 Y 轴的值,X 轴的必须为整
型,Y 轴的是浮点型。LineDataSet 是由很多个点构成,所以其参数是 ArrayList<Entry> ,LineDataSet 能控制线的颜色和背
景颜色,是否显示小圈圈,是否显示每个点的数值标签,遗憾的是不能精确到每个点,也就有了本文,再之上就是 LineData
了,其参数是 LineDataSet ,在此我默认每个 LineChart 只有一组曲线图,所以在 drawValues 中可以获取 LineDataSet 以及
ArrayList<Entry> :
LineDataSet dataSet = (LineDataSet) mChart.getLineData().getDataSetByIndex(0);
List<Entry> entries = dataSet.getValues();
然后对 ArrayList<Entry> 遍历,找到最大值,然后获取其 (X,Y) 轴的值,通过 MPAndroidChart 的内置方法找到点在 Canvas
中的 (X,Y) 点的值。
Transformer trans = mChart.getTransformer(dataSet.getAxisDependency());
MPPointD pointD = trans.getPixelForValues(max_x, max_y);
接下来就可以在这个位置上绘制小圈圈,涉及到一点 Android Canvas 姿势,这类的文章网上很多,我以前做过 C# WinForm
GDI+ 相关的一些项目,对画图这块略知一二理解起来尚不费力:
Paint paintDrawPointFill = new Paint(Paint.ANTI_ALIAS_FLAG);
paintDrawPointFill.setStyle(Paint.Style.FILL);
paintDrawPointFill.setColor(Color.WHITE);
c.drawCircle((float) pointD.x, (float) pointD.y, ScreenUnit.dp2px(context, 6),paintDrawPointFill);
接下来绘制最大值文字和实心圆角矩形,我的思路是先绘制文字,测量出文字的高度和宽度,再在宽度分别左右加上边距然后
绘制实心圆角矩形。
String textTag="文字内容";
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setTextSize(ScreenUnit.dp2px(context, 12));
paint.setColor(igsLineConfig.getMainColor());
Rect rectTextBounds = new Rect();
paint.getTextBounds(textTag, 0, textTag.length(), rectTextBounds);
weixin_38662122
- 粉丝: 5
- 资源: 949
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1