1 / 33
MPAndroidChart Developer Document
1、入门
本章介绍使用此库的基本设置。
添加依赖
首先,将此库的依赖项添加到项目中。如何执行此操作在此存储库的用法部分中进行了描述。Gradle 是
使用此库作为依赖项的推荐方法。
创建视图
要使用 LineChart,BarChart,ScatterChart,CandleStickChart,PieChart,BubbleChart 或
RadarChart,请在.xml 中定义它:
然后从您的 Activity,Fragment 或其他内容中检索它:
或者在代码中创建它(然后将其添加到布局中):
添加数据
拥有图表实例后,您可以创建数据并将其添加到图表中。此示例使用 LineChart,其中 Entry 类表示图表
中具有 x 和 y 坐标的单个条目。其他图表类型(例如 BarChart)为此目的使用其他类(例如 BarEntry)。
要向图表添加数据,请将您拥有的每个数据对象包装到 Entry 对象中,如下所示:
下一步,您需要将创建的 List <Entry>添加到 LineDataSet 对象。DataSet 对象保存属于一起的数据,
2 / 33
并允许对该数据进行单独设计。以下使用的“标签”仅具有描述性目的,并在图例中显示(如果已启用)。
最后一步,您需要将创建的 LineDataSet 对象(或多个对象)添加到 LineData 对象。此对象包含由
Chart 实例表示的所有数据,并允许进一步样式化。创建数据对象后,您可以将其设置为图表并刷新它:
请考虑上面的场景一个非常基本的设置。有关更详细的说明,请参阅设置数据部分,其中说明了如何根据
示例将数据添加到各种图表类型。
样式
有关图表表面和数据的设置和样式的信息,请访问常规设置和样式部分。有关各个图表类型的更具体的样
式和设置,请查看特定设置和样式 Wiki 页面。
2、与图表的交互
该库允许您完全自定义与图表视图的可能触摸(和手势)交互,并通过回调方法对交互作出反应。
启用/禁用交互
setTouchEnabled(boolean enabled):允许启用/禁用与图表的所有可能的触摸交互。
setDragEnabled(boolean enabled):启用/禁用图表的拖动(平移)。
setScaleEnabled(boolean enabled):启用/禁用两个轴上图表的缩放。
setScaleXEnabled(boolean enabled):启用/禁用 x 轴缩放。
setScaleYEnabled(boolean enabled):启用/禁用 y 轴缩放。
setPinchZoom(boolean enabled):如果设置为 true,则启用手指触摸图片缩放。如果禁用,则
可以单独缩放 x 轴和 y 轴。
setDoubleTapToZoomEnabled(boolean enabled):将此值设置为 false 以禁止通过双击来缩放
图表。
图表 fling /减速
setDragDecelerationEnabled(boolean enabled):如果设置为 true,则图表会在触摸后继续滚
动。默认值:true。
setDragDecelerationFrictionCoef(float coef):减速摩擦系数[0;1]间隔,较高的值表示速度将缓
慢下降,例如,如果设置为 0,它将立即停止。1 是无效值,将自动转换为 0.9999。
突出显示值
如何允许通过点击手势和编程方式突出显示条目,这将在突出显示部分中进行描述。
手势回调
OnChartGestureListener:将允许您对图表上的手势做出反应:
public interface OnChartGestureListener {
3 / 33
/**
* Callbacks when a touch-gesture has started on the chart (ACTION_DOWN)
*
* @param me
* @param lastPerformedGesture
*/
void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture);
/**
* Callbacks when a touch-gesture has ended on the chart (ACTION_UP, ACTION_CANCEL)
*
* @param me
* @param lastPerformedGesture
*/
void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture);
/**
* Callbacks when the chart is longpressed.
*
* @param me
*/
public void onChartLongPressed(MotionEvent me);
/**
* Callbacks when the chart is double-tapped.
*
* @param me
*/
public void onChartDoubleTapped(MotionEvent me);
/**
* Callbacks when the chart is single-tapped.
*
* @param me
*/
public void onChartSingleTapped(MotionEvent me);
/**
* Callbacks then a fling gesture is made on the chart.
*
* @param me1
* @param me2
* @param velocityX
* @param velocityY
*/
public void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX, float velocityY);
/**
* Callbacks when the chart is scaled / zoomed via pinch zoom gesture.
*
* @param me
* @param scaleX scalefactor on the x-axis
* @param scaleY scalefactor on the y-axis
*/
public void onChartScale(MotionEvent me, float scaleX, float scaleY);
/**
* Callbacks when the chart is moved / translated via drag gesture.
*
* @param me
* @param dX translation distance on the x-axis
* @param dY translation distance on the y-axis
*/
public void onChartTranslate(MotionEvent me, float dX, float dY);
}
只需让你的接收回调的类实现这个接口并将其设置为图表的监听器:
4 / 33
3、突出
本节重点介绍通过 tap-gesture 和基于发行版 v3.0.0 以编程方式突出显示图表中条目的主题。
启用/禁用突出显示
setHighlightPerDragEnabled(boolean enabled):在图表上将此值设置为 true,以便在完全缩
小时在图表表面上进行每次拖动时突出显示。默认值:true
setHighlightPerTapEnabled(boolean enabled):在图表上将此设置为 false,以防止通过点按手
势突出显示值。仍可通过拖动或以编程方式突出显示值。默认值:true
setMaxHighlightDistance(float distanceDp): 以 dp 为单位设置最大高亮距离。在图表上轻敲
远于该距离的条目将不会触发高亮显示。默认值:500dp
除此之外,还可以为各个 DataSet 对象配置突出显示:
以编程方式突出显示
highlightValue(float x,int dataSetIndex,boolean callListener):突出显示给定 DataSet 中给
定 x 位置的值。提供-1 作为 dataSetIndex 以撤消所有突出显示。布尔标志确定应该调用选择侦听器
还是不调用选择侦听器。
highlightValue(Highlight high,boolean callListener):突出显示由提供的 Highlight 对象表示
的值。提供 null 以撤消所有突出显示。布尔标志确定应该调用选择侦听器还是不调用选择侦听器。
highlightValues(突出显示[]高):突出显示给定 Highlight []数组所表示的值。提供 null 或空数组
以撤消所有突出显示。
getHighlighted():返回一个 Highlight []数组,其中包含有关所有突出显示的条目,x-index 和
dataset-index 的信息。
选择回调
这个库提供了一些交互上的回调监听。其中一个是 OnChartValueSelectedListener 在回调时,用于通过
触摸高亮一些值时的回调:
5 / 33
只是让应该接受回调函数的类实现这个接口,并把它作为图表的一个监听:
高亮
这个 Highlight 类代表与高亮显示的条目相关的所有数据,比如高亮 Entry 对象本身,它所属的
DataSet,它在绘图表面上的位置等等。它可以用来获取有关已经高亮的 Entry 信息,或用于为图表提供信息
对于一个即将被高亮的 Entry。对于这个目的,本要闻类提供了两个构造函数:
这些函数可以用来创建一个 Highlight 对象允许执行突出编程:
自定义高亮
所有以高亮手势形式的用户输入被缺省的 ChartHighlighter 类内部处理,可以用下面的方法定制实现来
替换默认的 highligher:
setHighlighter(ChartHighlighter highlighter):为图表设置一个自定义高亮对象处理所有的高亮触
摸事件。您的自定义 hignlighter 对象需要扩展 charthighlighter 类
4、轴心
此 Wiki 页面侧重于 AxisBaseclass,它是 XAxis(XAxis)和 YAxis(YAxis)的基类。在 v2.0.0 中引入。
以下提到的方法可以应用于两个轴。轴类允许特定样式并包含(可以包含)以下组件/部件:
标签(以垂直(y 轴)或水平(x 轴)对齐绘制),包含轴描述值
所谓的“轴线”,直接绘制在标签旁边并与之平行
“网格线”,每个都来自水平方向的轴标签
LimitLines,允许提供特殊信息,如边框或约束
控制应绘制哪些部分(轴)