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. nmap与Nessus扫描特定靶机分析

    打开装载Metasploitable2虚拟机的靶机,并获取靶机ip: 使用nmap+ip初步扫描靶机 PORT为端口,STATE为端口开放状态,SERVICE为端口的提供的服务.靶机的MAC地址为: ...

  2. 团队项目系列博客 —— 在路上(之wampserver 修改根目录以及配置多站点以及修改端口号)

    团队项目系列博客 -- 在路上(之wampserver 修改根目录以及配置多站点以及修改端口号) 标签(空格分隔): wampserver php 参考:参考文献1.慕课网.知乎.github 一.w ...

  3. MAC OS X的命令行技巧

    ##透明度#降低透明度defaults write com.apple.universalaccess reduceTransparency -bool true#恢复默认透明度defaults wr ...

  4. 爬虫之动态HTML处理(Selenium与PhantomJS )网站模拟登录

    #coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport tim ...

  5. 百度云如何免费扩容至2055G?

    百度云如何免费扩容至2055G? 上篇说到整一个新的百度账号,那么5G的百度云内存肯定满足不了我们收集癖的需求.那么就来了解一下怎么扩容吧. 主要是在手机端实现的 用这个新的百度账号在手机APP上登录 ...

  6. STL的其他用法(adjacent_find, find_first_of, sort_heap, merge, binary_search)总结

    2017-08-20 17:26:07 writer:pprp 1.adjacent_find() 下面是源码实现: template <class ForwardIterator> Fo ...

  7. 关于JBoss的一些项目配置

    1. 如何使用 IP:port 的形式访问项目 : [1] 在standalone.xml文件中,查找<interfaces>标签,添加如下节点 : <interface name= ...

  8. Elasticsearch 使用技巧笔记

    1.重新分片 当出现Unassigned分片时,我们可以通过分片重分配解决这个问题 curl -X PUT http://192.168.0.37:9200/_cluster/settings \ - ...

  9. ubuntu install git vim Plug manage

    在UBUNTU采用163或是阿里云来更新源,最新的更新源地址可以在网上查阅, 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restric ...

  10. mysql数据库优化课程---17、mysql索引优化

    mysql数据库优化课程---17.mysql索引优化 一.总结 一句话总结:一些字段可能会使索引失效,比如like,or等 1.check表监测的使用场景是什么? 视图 视图建立在两个表上, 删除了 ...