天天看点

MPAndroidChart 教程:突出显示值 Highlighting Values

本节主题是重点介绍通过tap-gesture和基于发行版 v3.0.0 以编程方式突出显示图表中条目。

启用/禁用突出显示

  • setHighlightPerDragEnabled(boolean enabled):在Chart 上将此设置为true,以便在完全缩小时在图表表面上进行每次拖动时突出显示,默认值:true
  • setHighlightPerTapEnabled(boolean enabled):在Chart 上将此设置为false,以防止通过点击手势突出显示值。仍可通过拖动或以编程方式突出显示值,默认值:true
  • setMaxHighlightDistance(float distanceDp):设置dp中的最大高亮距离。在图表上轻敲远离条目的距离不会触发突出显示。默认值:500dp

除此之外,还可以为单个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坐标的值。提供-1作为dataSetIndex以撤消所有突出显示。布尔标志确定应该调用选择监听器还是不调用选择侦听器。
  • highlightValue(Highlight high, boolean callListener):突出显示提供的Highlight对象所代表的值。提供null以撤消所有突出显示。布尔标志确定应该调用选择侦听器还是不调用选择监听器。
  • highlightValues(Highlight[] highs):突出显示给定Highlight[]数组表示的值。提供null或空数组以撤消所有突出显示。
  • getHighlighted():返回一个Highlight[]数组,其中包含有关所有突出显示的条目,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关联的所有数据,例如突出显示的Entry对象本身,它所属的DataSet,它在绘图表面上的位置等等。它可用于获取有关已突出显示的条目的信息,或用于向图表提供信息以突出显示条目。为了这个目的,Highlight该类提供了两个构造函数:

/** 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) DataSet
Highlight highlight = new Highlight(50f, 0); 

chart.highlightValue(highlight, false); // highlight this value, don't call listener           

定制荧光笔

高亮手势形式的所有用户输入都由默认的ChartHighlighter类在内部处理。可以使用以下方法用自定义实现替换默认的highligher:

  • setHighlighter(ChartHighlighter highlighter):为图表设置自定义highligher对象,以 handles / processes在图表视图上执行的所有高亮触摸事件。您的自定义荧光笔对象需要扩展该ChartHighlighter类。

继续阅读