MPAndroidChart Wiki(译文)~Part 6
22. ViewPortHandler
ViewPortHandler负责处理图表的视窗。也就是说它负责图表视图中的展示给用户的那部分内容。包括图表位移,缩放级别,图表大小和绘制区域以及当前偏移量。ViewPortHandler允许我们访问以上提到的所有书属性并修改它。
和通过Chart类修改视窗不一样的是,通过ViewPortHandler直接修改可见取悦并不是完全安全的。即使你对API比较熟悉你也需要很小心的使用它。不恰当的使用可能会导致意想不到的结果。然而,ViewPortHandler提供了很多高阶的方法来修改视窗。
22.1 获取实例
可以通过如下方式获取实例:
ViewPortHandler handler = chart.getViewPortHandler();
22.2 缩放&位移
| 方法 | 使用 |
|---|---|
| getScaleX() | 返回X轴上的缩放级别 |
| getScaleY() | 返回Y轴上的缩放级别 |
| getTransX() | 返回X轴方向上的位移 |
| getTransY() | 返回Y轴方向上的位移 |
22.3 图表尺寸&内容
| 方法 | 使用 |
|---|---|
| getChartWidth() | 返回图表的宽度 |
| getChartHeight() | 返回图表的高度 |
| getContentRect() | 返回一个RectF对象表示当前的内容区域 |
更多方法请查阅JavaDoc或者学习API
23. FillFormatter
FillFormatter接口允许自定义LineDataSet的填充行应该在哪里结束。 所有需要做的都是创建一个新类并实现FillFormatter接口。 使用:
public float getFillLinePosition(LineDataSet dataSet, LineDataProvider provider)
用于实现自定义逻辑的接口的方法,该自定义逻辑计算单个LineDataSet的填充行的结束点。
创建一个类实现该接口:
public class MyCustomFillFormatter implements FillFormatter {
@Override
public float getFillLinePosition(LineDataSet dataSet, LineDataProvider dataProvider) {
float myDesiredFillPosition = ...;
// put your logic here...
return myDesiredFillPosition;
}
}
然后把自定义的formatter设置到LineDataSet:
lineDataSet.setFillFormatter(new MyCustomFillFormatter());
查看DefaultFillFormatter的实现
24. ProGuard
使用Proguard,需要添加如下配置:
-keep class com.github.mikephil.charting.** { *; }
如果使用proguard但是不配置以上规则,动画会失效。
Realm.io对应配置:
-dontwarn io.realm.**
25. Realm.io数据库集成
请移步官方MPAndroidChart-Realm来了解如何从Realm.io数据库中提取数据填充MPAndroidChart。
具体操作指南请查阅此处
26. 自定义DataSets
从版本v.2.2.0开始,MP AndroidChart允许你创建自定义的DataSets并在图表中使用它们。
26.1 必需操作
- 创建自定义类(如:CustomDataSet)
- 继承BaseDataSet< ? extends Entry>
- 根据需求实现对应的IDataSet接口。如IBarDataSet
- 实现接口对应的方法并返回你期望的结果
26.2 示例
创建一个BarDataSet供BarChart使用:
public class CustomBarDataSet extends BaseDataSet<BarEntry> implements IBarDataSet {
// implement all by the extended class and interface required methods
}
创建CustomBarDataSet后实现所有接口需要实现的方法,然后它就可以像BarDataSet一样在所有的BarChart中使用了。
27. 其他方法
27.1 图表内容
| 方法 | 使用 |
|---|---|
| clear() | 清空图表中的所有数据(通过设置数据对象为null实现)。调用invalidate()刷新数据 |
| clearValues() | 清空图表中的数据集,X轴上数据不做修改 |
| isEmpty() | 判断图表中数据是否为空 |
27.2 好用的Getter方法
| 方法 | 使用 |
|---|---|
| getData() | 返回图表中的Data对象 |
| getViewPortHandler() | 返回ViewPortHandler对象 |
| getRenderer() | 返回负责绘制图表的DataRender对象 |
| getCenter() | 返回整个图表的中心点. |
| getCenterOffsets() | 返回图表绘制区域的中心点 |
| getPercentOfTotal(float value) | 返回提供的值构成图表内总和的百分比. |
| getYMin() | 返回Y轴最小值 |
| getYMax() | 返回Y轴最大值 |
| getLowestVisibleXIndex() | 返回X轴方向上最小可见索引 |
| getHighestVisibleXIndex() | 返回X轴方向上最大可见索引 |
27.3 更多Chart类方法
| 方法 | 使用 |
|---|---|
| saveToGallery(String title) | 将当前图表状态以图片的形式保存到图库。记得添加”WRITE_EXTERNAL_STORAGE”权限. |
| saveToPath(String title, String pathOnSD) | 将当前图表状态以图片的形式保存到指定路径。记得添加”WRITE_EXTERNAL_STORAGE”权限. |
| getChartBitmap() | 将当前图表状态以Bitmap的形式返回. |
| setHardwareAccelerationEnabled(boolean enabled) | 启用/禁用图表绘制硬件加速, 仅针对API级别11+的设备. |
MPAndroidChart Wiki(译文)~Part 6的更多相关文章
- MPAndroidChart Wiki(译文)~Part 4
16. 动画 注意:本章的动画效果只会在API 11(Android3.0.x)及以上的Android版本上生效 在低于上述的Android版本中,动画将不会被执行,并不会导致程序崩溃. 所有类型的图 ...
- MPAndroidChart Wiki(译文)~Part 1
1. 基础入门 1.1 添加依赖 Gradle 工程添加依赖 (推荐使用) 项目级build.gradle中添加: allprojects { repositories { maven { url & ...
- MPAndroidChart Wiki(译文)~Part 5
19. ChartData子类 这篇wiki主要关注ChartData子类的具体介绍.至于此部分没有提及到的ChartData的子类,代表他们没有特性功能需要介绍. BarData 方法 使用 set ...
- MPAndroidChart Wiki(译文)~Part 2
7. 填充数据 这一章节将讲解给各式各样的图表设置数据的方法. 7.1 LineChart(线形图) 想给图表添加数据,使用如下方法: public void setData(ChartData da ...
- MPAndroidChart Wiki(译文)~Part 3
13. 图例 默认情况下,所有的图表都支持图例并且会自动生成.给图表设置完数据之后,图例会被绘制出来.图例通常由多个条目组成,每个条目由标签形式/形状表示. 自动生成的图例包含的条目数取决于不同颜色的 ...
- MPAndroidChart的具体属性方法
android中常用的第三方图表MPAndroidChart的一些具体属性及方法说明 注意:在将折线图转为曲线图时,lineDataSet.setMode(LineDataSet.Mode.CUBIC ...
- <Android 应用 之路> MPAndroidChart~BubbleChart(气泡图) and RadarChart(雷达图)
简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和iOS两种,这里我们暂时 ...
- <Android 应用 之路> MPAndroidChart~ScatterChart
简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...
- <Android 应用 之路> MPAndroidChart~PieChart
简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...
随机推荐
- IT最新最火的网络词汇*2*(文章来源电商)
P2P.P2C .O2O .B2C.B2B.C2C等等最新最火的网络用词直接将我们都弄晕了,特此今天将这些划时代意义的词汇总结起来,若有什么不足之处,希望各位评论指正. 大致意思为: 1. ...
- xml简单介绍及libmxml编程
今天我们来简单介绍一下,关于xml的一些内容,包括自己编写一些程序进行生成和解析. 首先我们我们还是从xml的演化历史来了解一下它吧. 历史演化 GML: 在20世纪60年代为了促进数据交换和操作,通 ...
- 组播的介绍以及CS模型实现
1.组播介绍 组播组可以是永久的也可以是临时的.组播组地址中,有一部分由官方分配的,称为永久组播组. 永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化.永久组播组中成员的数量都可以是任意 ...
- 4.9版本的linux内核中实时时钟芯片pt7c4338的驱动源码在哪里
答:drivers/rtc/rtc-ds1307.c,内核配置项为CONFIG_RTC_DRV_DS1307 Location: -> Device Drivers -> Real Tim ...
- 这样获取celery的结果 有啥隐患没有啊?
- 关于ckeditor 之 上传功能
度了很多文章,看了很多关于ckeditor配置上传功能的文章,没一个写得清楚的, 就是简单的根目录下.config.js 增加 config.filebrowserUploadUrl="/a ...
- 数组中的k个最小值
问题:输入n个整数,找出其中最小的k个数. 方案一:将输入的n个整数进行排序,输出前k个数即为所求的k个最小数.时间复杂度为O(nlogn). 方案二:创建一个大小为k的容器,来存储最小的k个数.遍历 ...
- css中pt、px、em、ex、in等这类长度单位详细说明
在CSS样式表中,我们经常会看到pt, px,em,ex,in等这类长度单位.它们各是什么意思,有什么区别呢? 在CSS样式表中,长度单位分两种: 相对长度单位,如px, em等 绝对长度单位,如pt ...
- 开发H5游戏引擎的选择:Egret或Laya?
开发H5游戏引擎的选择:Egret或Laya? 一.总结 一句话总结:选laya吧 二.开发H5游戏引擎的选择:Egret或Laya? 一.H5游戏开发的引擎介绍 开发H5游戏的引擎有很多,比如egr ...
- 理解JAVA MQ消息中间件
MQ的几种消息传递方式 发布订阅模式 发布订阅模式有点类似于我们日常生活中订阅报纸.每年到年尾的时候,邮局就会发一本报纸集合让我们来选择订阅哪一个.在这个表里头列了所有出版发行的报纸,那么对于我们每一 ...