MPAndroidChart中文翻译(三高亮显示)
2016-10-11 本文已影响771人
鹿小纯0831
本节的重点是高亮显示图表条目,在发布的3.0.0版本中通过点击手势和编程可以实现该目的。
启用/禁用高亮显示
- setHighlightPerDragEnabled(boolean enabled):设置为true,当图表完全缩小的时候,每一次拖动都会高亮显示在图标视图上。默认值:true。
- setHighlightPerTapEnabled(boolean enabled):设置为false,禁止点击手势高亮显示值。值仍然可以通过拖动或编程方式突出显示。默认值:true。
- setMaxHighlightDistance(float distanceDp):设置最大高亮距离(dp)。在图表中的点击位置距离条目的距离超过此距离不会触发高亮显示。默认值:500 dp。
除此之外,高亮显示可以配置为个人DataSet对象:
dataSet.setHighlightEnabled(true); // allow highlighting for DataSet
// set this to false to disable the drawing of highlight indicator (lines)
dataSet.setDrawHighlightIndicators(true);
dataSet.setHighlightColor(Color.BLACK); // color for highlight indicator
// and more...
高亮编程
- highlightValue(float x, int dataSetIndex, boolean callListener):高亮显示在给定的DataSet中x坐标所对应的值。设置dataSetIndex为-1会撤销所有高亮显示。callListener决定了是否调用选择监听器。
- highlightValue(Highlight high, boolean callListener):高亮显示的值代表了给定的Highlight对象 。提供null撤销所有高亮显示。callListener决定了是否调用选择监听器。
- highlightValues(Highlight[] highs):高亮显示的值代表了给定的Highlight对象数组。提供null或空数组撤消所有高亮显示。
- getHighlighted():返回一个高亮数组,其中包含所有高亮显示的条目信息,x-index和dataset-index。
选择回调
这个库提供了许多交互时回调函数的监听器。其中一个是OnChartValueSelectedListener,当触摸引发高亮显示时回调:
public interface OnChartValueSelectedListener {
/**
* Called when a value has been selected inside the chart.
* @param e The selected Entry.
* @param h The corresponding highlight object that contains information
* about the highlighted position
*/
public void onValueSelected(Entry e, Highlight h);
/**
* Called when nothing has been selected or an "un-select" has been made.
*/
public void onNothingSelected();
}
接下来就是实现这个接口和回调函数:
chart.setOnChartValueSelectedListener(this);
Highlight类
Highlight类代表与高亮显示的条目相关联的所有数据,比如高亮显示的Entry对象本身,它从属于的DataSet,它在绘图表面上的位置等等。它可以用来获取已经高亮显示的条目的相关信息,或用于提供信息图表的一个条目被高亮显示。对于这个目的,强调类提供了两个构造函数:
/** constructor for standard highlight */
public Highlight(float x, int dataSetIndex) { ... }
/** constructor for stacked BarEntry highlight */
public Highlight(float x, int dataSetIndex, int stackIndex) { ... }
可以使用这些构造函数创建一个Highlight对象,允许以编程方式表现高亮:
// highlight the entry and x-position 50 in the first (0)
DataSetHighlight highlight = new Highlight(50f, 0);
chart.highlightValue(highlight, false); // highlight this value, don't call listener
定制的萤光笔
所有高亮手势形式的用户输入由默认的ChartHighlighter类内部处理。想要自定义一个荧光笔来替换默认的萤光笔,可以通过以下方法来实现:
- setHighlighter(ChartHighlighter highlighter):为图表设置一个自定义highligher对象来处理所有在图表视图上执行的高亮触摸事件。定制highlighter对象需要继承ChartHighlighter类。