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.**

其他ProGuard信息


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的更多相关文章

  1. MPAndroidChart Wiki(译文)~Part 4

    16. 动画 注意:本章的动画效果只会在API 11(Android3.0.x)及以上的Android版本上生效 在低于上述的Android版本中,动画将不会被执行,并不会导致程序崩溃. 所有类型的图 ...

  2. MPAndroidChart Wiki(译文)~Part 1

    1. 基础入门 1.1 添加依赖 Gradle 工程添加依赖 (推荐使用) 项目级build.gradle中添加: allprojects { repositories { maven { url & ...

  3. MPAndroidChart Wiki(译文)~Part 5

    19. ChartData子类 这篇wiki主要关注ChartData子类的具体介绍.至于此部分没有提及到的ChartData的子类,代表他们没有特性功能需要介绍. BarData 方法 使用 set ...

  4. MPAndroidChart Wiki(译文)~Part 2

    7. 填充数据 这一章节将讲解给各式各样的图表设置数据的方法. 7.1 LineChart(线形图) 想给图表添加数据,使用如下方法: public void setData(ChartData da ...

  5. MPAndroidChart Wiki(译文)~Part 3

    13. 图例 默认情况下,所有的图表都支持图例并且会自动生成.给图表设置完数据之后,图例会被绘制出来.图例通常由多个条目组成,每个条目由标签形式/形状表示. 自动生成的图例包含的条目数取决于不同颜色的 ...

  6. MPAndroidChart的具体属性方法

    android中常用的第三方图表MPAndroidChart的一些具体属性及方法说明 注意:在将折线图转为曲线图时,lineDataSet.setMode(LineDataSet.Mode.CUBIC ...

  7. <Android 应用 之路> MPAndroidChart~BubbleChart(气泡图) and RadarChart(雷达图)

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和iOS两种,这里我们暂时 ...

  8. <Android 应用 之路> MPAndroidChart~ScatterChart

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...

  9. <Android 应用 之路> MPAndroidChart~PieChart

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...

随机推荐

  1. 20145329 吉东云《Java程序设计》第二周学习总结

    教材学习内容总结 第三章 基础语法 基本类型 1.整数(short.int.long) 2.字节(byte),可表示-128~127的整数 3.浮点数(float/double),主要储存小数数值 4 ...

  2. kali2016.2安装后配置

    接触kali有几个月了,总是有一种浅尝辄止的感觉.因为不常用,一些常用操作时常想不起来了.为日后查找方便,特通过写博客方式来记录. 新建虚拟机,和安装其它操作系统差别不大,按提示一步一步安装.第1次安 ...

  3. Java GC垃圾回收

    Java的内存分配和回收也主要在Java的堆上进行的,Java的堆中存储了大量的对象实例,所以Java的堆也叫GC堆. Java在垃圾收集的过程中,主要用到了分代收集算法,具体有复制.标记清除.标记压 ...

  4. Caffe学习笔记(一):Caffe架构及其模型解析

    Caffe学习笔记(一):Caffe架构及其模型解析 写在前面:关于caffe平台如何快速搭建以及如何在caffe上进行训练与预测,请参见前面的文章<caffe平台快速搭建:caffe+wind ...

  5. ThreadLocal 从源码角度简单分析

    目录 ThreadLcoal源码浅析 ThreadLocal的垃圾回收 Java引用 ThreadLocal的回收 各线程中threadLocalMap的回收 内存泄露问题 总结 参考 ThreadL ...

  6. oracle添加用户并给予管理员身份登陆

    sqlplus / as sysdba;--超级管理员sys登陆 show user;--显示当前用户 conn system/admin;--切换用户 CREATE user admin ident ...

  7. 解题报告:hdu1008 Elvator

    2017-09-07 19:30:22 writer:pprp 比较顺利,最近生活出现了各种问题, 发生了很多矛盾,我要耐下心来,最重要的不是努力不努力,而是选择 希望我能处理好人际关系还有学业上的压 ...

  8. SonarQube介绍及部署

    SonarQube介绍及部署 编写人:罗旭成 编写时间:2014-5-28 SonarQube简介 SonarQube是一个用于代码质量管理的开源平台(Java开发),用于管理源代码的质量,可以从七个 ...

  9. JAXB和XStream比较

    转自:https://www.cnblogs.com/tang9139/p/4825610.html http://www.cnblogs.com/wlsblog/p/7452882.html 这两东 ...

  10. Eclipse解决乱码问题

    使用Eclipse的时候发现有些格式的文件会乱码单个文件设置了没问题,但是在项目上设置却不起作用. 解决方法如下: Windows -> Preferences -> General -& ...