如果有大量的数据您的应用程序的交易,使用图表,而不是表来显示数据可能会导致一个好得多的用户体验。在本教程中,你要了解一个流行的开源图表库 MPAndroidChart。这个库的图表是高度可定制的,互动的,并容易创建。
先决条件
请确保您安装了最新版本的Android工作室。您可以从得到它的Android开发者网站。
1.添加MPAndroidChart到项目
要在Android项目使用这个库,所有你需要做的是:
- 下载最新版本库在Github上。在写作的时候,最新的版本是1.7.4。
- 复制mpandroidchartlibrary-1-7-4.jar到项目的库目录。
- 在Android Studio中,右键单击该JAR文件,然后选择 添加为库。
2.创建一个数据集
所有数据应该转换成一个数据集
对象之前它可以由一个图表一起使用。不同类型的图表都使用不同的子类 的DataSet
类。例如,一个BARCHART
使用BarDataSet
实例。同样,饼图
使用PieDataSet
实例。而不是简单地用随机数生成一个示例图表处理,让我们考虑一个假设的情况。Alice和Bob是朋友。爱丽丝呼叫Bob几次一个月知道他是给。鲍勃使得每当她叫他一张纸条。
在本教程中,我们使用Bob的音符来创建一个图表显示的时间爱丽丝叫鲍勃的数量。下面是Bob已经记了下来:
月 | 呼叫数 |
---|---|
一月 | 4 |
二月 | 8 |
游行 | 6 |
四月 | 12 |
可能 | 18 |
六月 | 9 |
条形图似乎适合这种类型的数据。要在图表中显示的数据,我们需要创建一个BarDataSet
实例。您可以按照相同的步骤来创建其他子类的实例数据集
。
原始数据的每一个人都值应表示为一个条目
。一个ArrayList的
这样的输入
对象用于创建一个数据集
。让我们来创建一些BarEntry
对象并将其添加到一个ArrayList中
:
ArrayList<BarEntry> entries =
new
ArrayList<>();
entries.add(
new
BarEntry(4f,
0
));
entries.add(
new
BarEntry(8f,
1
));
entries.add(
new
BarEntry(6f,
2
));
entries.add(
new
BarEntry(12f,
3
));
entries.add(
new
BarEntry(18f,
4
));
entries.add(
new
BarEntry(9f,
5
));
BarDataSet dataset = new BarDataSet(entries, "# of Calls" ); |
现在,ArrayList中
的条目
对象是准备好了,我们可以创建一个数据集
出来的:
3.定义x轴标签
我们已经增加了一些价值给我们的图表,但他们没有多大意义的,除非用户我们给他们有意义的标签。每个x轴标签是使用表示字符串
和一个ArrayList中
用于存储所有标签。
ArrayList<String> labels =
new
ArrayList<String>();
labels.add(
"January"
);
labels.add(
"February"
);
labels.add(
"March"
);
labels.add(
"April"
);
labels.add(
"May"
);
labels.add(
"June"
);
ViewGroup中
,这意味着您可以轻松地将它们添加到任何布局。您可以使用XML文件或Java代码中定义您的图表。如果图表是要采取了一个整屏的活动
或片断
,然后使用Java代码更容易:4.创建图表BarChart chart =
new
BarChart(context);
setContentView(chart);
BarData data =
new
BarData(labels, dataset);
chart.setData(data);
我们还添加了一个描述图表。
chart.setDescription(
"# of times Alice called Bob"
);
如果你现在运行在Android设备上的应用程序,你应该能够看到一个柱状图,类似于下图所示。下图是互动和响应捏到缩放和拖动手势。
5.使用颜色模板
如果你不喜欢默认的颜色,您可以使用数据集
类的setColors
方法来改变颜色方案。然而,MPAndroidChart还附带了一些可以让你改变你的数据集的外观和感觉,而无需处理单个颜色值预定义的颜色模板。
在这个库的当前版本,下面的模板:
-
ColorTemplate.LIBERTY_COLORS
-
ColorTemplate.COLORFUL_COLORS
-
ColorTemplate.JOYFUL_COLORS
-
ColorTemplate.PASTEL_COLORS
-
ColorTemplate.VORDIPLOM_COLORS
要使用的数据集彩色模板关联,则必须使用setColors
方法。下面是一个例子:
dataset.setColors(ColorTemplate.COLORFUL_COLORS);
运行你的应用程序更多的时间来看到色彩更鲜艳的图表。

6.添加动画
这个库支持动画,你可以用它让你的图表所有图表显得更加活泼。该animateXY
方法用于动态图表的两个轴。如果你只想要其中一个轴动画,你可以使用animateX
或animateY
分别以动画x轴或y轴。你当你调用这些方法来指定动画的持续时间(毫秒)。例如,仅动画Y轴,添加以下代码片段:
chart.animateY(
5000
);
7.使用限制线
您可以添加限制线图表为更多的含义添加到您的图表。限制线才有意义对于某些类型的图表,如条形图,折线图和散点图。
在我们的例子中,爱丽丝呼叫Bob一个月几次,比方说,如果Alice称他每月超过十倍Bob得到恼火。为了说明这一点信息,我们可以添加一个限行该值。这里是你如何做到这一点:
LimitLine line =
new
LimitLine(10f);
data.addLimitLine(line);

8.保存图表为图像
MPAndroidChart,您还可以在图表的当前状态保存为图像。要使用此功能,你首先需要给你的应用程序写入设备的SD卡的权限。您可以通过添加如下代码到你做到这一点的AndroidManifest.xml:
<
uses-permission
android:name
=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
有两种方法可供选择:
-
saveToGallery
此方法保存您的图表为JPEG文件。它也可以让你指定质量或图像的压缩比。 -
saveToPath
此方法保存您的图表为PNG文件的路径指定。
例如,为了您的图表保存为JPEG文件,可以使用下面的代码片段:
chart.saveToGallery(
"mychart.jpg"
,
85
);
// 85 is the quality of the image
结论
在本教程中,你学会了如何使用MPAndroidChart库来创建既赏心悦目和交互式图表。为了统一起见,我在本教程中使用条形图。但是,您可以按照同样的步骤来创建其他类型的图表。要了解更多关于这个库,我建议你阅读的文档和示例Github上。