《Android开源库》 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.**

其他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+的设备.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值