比achartengine更加强大的图表控件。
核心功能:
-
支持x,y轴缩放
-
支持拖拽
-
支持手指滑动
-
支持高亮显示
-
支持保存图表到文件中
-
支持从文件(txt)中读取数据
-
预先定义颜色模板
-
自动生成标注
-
支持自定义x,y轴的显示标签
-
支持x,y轴动画
-
支持x,y轴设置最大值和附加信息
-
支持自定义字体,颜色,背景,手势,虚线等
项目地址:https://github.com/PhilJay/MPAndroidChart
也可以直接下载jar包:https://github.com/PhilJay/MPAndroidChart/releases
另外,需要NineOldAndroids支持:https://github.com/JakeWharton/NineOldAndroids
可直接下载jar包:
nineoldandroids-2.4.0.jar
效果图:
支持的图标类型:
-
LineChart (线性图)
-
-
LineChart (线性图)
-
-
-
PieChart (饼图)
-
ScatterChart (散列图)
-
CandleStickChart (K线图、蜡烛图)
-
BubbleChart (气泡图)
-
RadarChart (网图)
如何使用
以曲线图(LineChart)为例
1, 创建图表实例
1.
<com.github.mikephil.charting.charts.LineChart
2.
android:id="@+id/lineChart"
3.
android:layout_width="match_parent"
4.
android:layout_height="300dp"/>
或者:
1.
LineChart chart = new LineChart(Context);
2. 设置参数
1.
lineChart = (LineChart)this.findViewById(R.id.lineChart);
2.
//lineChart.setBackgroundColor(0xFF6BF3AD);//设置图表背景
3.
lineChart.setDrawGridBackground(false); //取消网格背景色
4.
...
整个LineChart控件分为图表背景色、网格背景色,二者可单独设置。
3. 设置数据Data
1.
setData(12, 100);
01.
/**
02.
* 生成数据
03.
* @param count
04.
* @param range
05.
* @return
06.
*/
07.
private void setData(int count, float range) {
08.
09.
ArrayList<String> xVals = new ArrayList<String>();
10.
for (int i = 0; i < count; i++) {
11.
xVals.add((i+1) + "月");
12.
}
13.
14.
ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>();
15.
dataSets.add(createLineDataSet(count, range, "小米", 0xFFFFF78E));
16.
dataSets.add(createLineDataSet(count, range, "华为", 0xFFC1FF8D));
17.
LineData data = new LineData(xVals, dataSets);
18.
19.
// set data
20.
lineChart.setData(data);
21.
}
22.
/**
23.
* 生成曲线数据
24.
*/
25.
private LineDataSet createLineDataSet(int count, float range, String label, int color){
26.
ArrayList<Entry> yVals = new ArrayList<Entry>();
27.
for (int i = 0; i < count; i++) {
28.
float mult = (range + 1);
29.
float val = (float) (Math.random() * mult) + 3;
30.
yVals.add(new Entry(val, i));
31.
}
32.
LineDataSet lineDataSet = new LineDataSet(yVals, label);
33.
lineDataSet.setColor(color);
34.
return lineDataSet;
35.
}
对于曲线来说,在一张图表上可以显示多条曲线,每条曲线都是一个LineDataSet实例,并且可单独设置样式。
ArrayList<LineDataSet> dataSets : 创建曲线集合。
将所有曲线数据封装成LineData, 如 LineData data = new LineData(xVals, dataSets);
最终lineChart.setData(data);
主要的Api方法:
-
setDescription(String desc): 设置表格的描述 -
setDescriptionTypeface(Typeface t):自定义表格中显示的字体 -
setDrawYValues(boolean enabled): 设置是否显示y轴的值的数据 -
setValuePaintColor(int color):设置表格中y轴的值的颜色,但是必须设置setDrawYValues(true) -
setValueTypeface(Typeface t):设置字体 -
setValueFormatter(DecimalFormat format): 设置显示的格式 -
setPaint(Paint p, int which): 自定义笔刷 -
public ChartData getDataCurrent():返回ChartData对象当前显示的图表。它包含了所有信息的显示值最小和最大值等 -
public float getYChartMin(): 返回当前最小值 -
public float getYChartMax(): 返回当前最大值 -
public float getAverage(): 返回所有值的平均值。 -
public float getAverage(int type): 返回平均值 -
public PointF getCenter(): 返回中间点 -
public Paint getPaint(int which): 得到笔刷 -
setTouchEnabled(boolean enabled): 设置是否可以触摸,如为false,则不能拖动,缩放等 -
setDragScaleEnabled(boolean enabled): 设置是否可以拖拽,缩放 -
setOnChartValueSelectedListener(OnChartValueSelectedListener l): 设置表格上的点,被点击的时候,的回调函数 -
setHighlightEnabled(boolean enabled): 设置点击value的时候,是否高亮显示 -
public void highlightValues(Highlight[] highs): 设置高亮显示 -
saveToGallery(String title): 保存图表到图库中 -
saveToPath(String title, String pathOnSD): 保存. -
setScaleMinima(float x, float y): 设置最小的缩放 -
centerViewPort(int xIndex, float val): 设置视口 -
fitScreen(): 适应屏幕
动画:
所有的图表类型都支持下面三种动画,分别是x方向,y方向,xy方向。
-
animateX(int durationMillis): x轴方向 -
animateY(int durationMillis): y轴方向 -
animateXY(int xDuration, int yDuration): xy轴方向
注意:如果调用动画方法后,就没有必要调用invalidate()方法,来刷新界面了。
9801

被折叠的 条评论
为什么被折叠?



