高亮
这个章节将用来讨论chart中的entry高亮的话题,通过手势和代码来控制高亮均需要在v3.0.0及其之后。
开启/关闭高亮
setHighlightPerDragEnabled(boolean enabled)
将这个方法设置为true将使你的chart在被放到最大的时候,滑动时使得高亮能一直跟着手指。默认:true。setHighlightPerTapEnabled(boolean enabled)
将这个方法设置为false可以使得有单击的手势作用在entry上时,不会被高亮显示。默认:true。setMaxHighlightDistance(float distanceDp)
设置最大的高亮距离,单位时dp。点击作用在chart上,并离其中某个entry距离所设置的这个距离时,将不会出发高亮显示。默认:500dp。
另外,高亮可以单独地对某一个dataset
起作用。
dataSet.setHighlightEnabled(true); // 允许当前DataSet高亮
// 将此方法设置为false将不会绘制高亮指示器。(对于线来说)
dataSet.setDrawHighlightIndicators(true);
dataSet.setHighlightColor(Color.BLACK); // 高亮的颜色
复制代码
通过代码高亮
highlightValue(float x, int dataSetIndex, boolean callListener)
将给定的dataset中的第x个位置的值设置为高亮。传入-1将取消所有的高亮显示。boolean值将决定选择监听器是否会被调用。highlightValue(Highlight high, boolean callListener)
将highlight
对象所表示的值高亮显示。传入null值将取消所有的高亮显示。boolean值将决定选择监听器是否会被调用。highlightValues(Highlight[] highs)
将Hightlight[]
数组中所表示的值高亮显示,传入null或者空数组将取消所有高亮显示。getHighlighted()
返回一个Highlight[]
数组,其中包含着目前高亮显示的entries,以及它们的x值和dataset的值。
选中回调
这个库提供离一系列的监听器用于在出现交互时进行回调。其中之一就是OnChartValueSelectedListener
,当触摸导致高亮显示时进行回调。
public interface OnChartValueSelectedListener {
/**
* 当chart中的值被选中时调用此方法
*
* @param e 被选中的 Entry.
* @param h 包含被点击的entry相关信息的highlight对象.
*/
public void onValueSelected(Entry e, Highlight h);
/**
* 当没有任何内容被选中时调用此方法.
*/
public void onNothingSelected();
}
复制代码
可以使你需要接收回调的类实现这个接口,然后将其设置给chart的这个方法: chart.setOnChartValueSelectedListener(this);
Highlight类
Highlight
类表示着一个被高亮显示的Entry
的所有数据,如这个entry
本身它所属的DataSet
,以及其被画在界面上的位置。它可以用来获取一个已经被高亮显示的Entry
的信息。或者提供给Chart
去高亮显示某个Entry
。鉴于这个原因,Highlight
提供两个构造器方法。
/** 标准highlight的构造方法 */
public Highlight(float x, int dataSetIndex) { ... }
/** 提供给堆积柱状图BarEntry的构造方法*/
public Highlight(float x, int dataSetIndex, int stackIndex) { ... }
复制代码
这些构造方法可以用于创造Highlight
对象,该对象可以使用代码的方式作用在高亮显示上。
// 将第一个数据集的x值为50的entry高亮显示
Highlight highlight = new Highlight(50f, 0);
chart.highlightValue(highlight, false); // 高亮显示这个值而不调用选中回调。
复制代码
自定义高亮器
所有的显示高亮的手势均是由默认的ChartHighlighter
类内部进行处理。可以通过以下的方法将默认的高亮显示器替换为自定义的实现:
setHighlighter(ChartHighlighter highlighter)
为chart设置用于处理所有高亮点击事件的自定义高亮器 Wiki。你的自定义的highlighter类需要继承ChartHighlighter
类。