如果有大量的数据您的应用程序的交易,使用图表,而不是表来显示数据可能会导致一个好得多的用户体验。在本教程中,你要了解一个流行的开源图表库 MPAndroidChart。这个库的图表是高度可定制的,互动的,并容易创建。
请确保您安装了最新版本的Android工作室。您可以从得到它的Android开发者网站。
要在Android项目使用这个库,所有你需要做的是:
数据集
所有数据应该转换成一个数据集 对象之前它可以由一个图表一起使用。不同类型的图表都使用不同的子类 的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中的条目对象是准备好了,我们可以创建一个数据集出来的:
我们已经增加了一些价值给我们的图表,但他们没有多大意义的,除非用户我们给他们有意义的标签。每个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设备上的应用程序,你应该能够看到一个柱状图,类似于下图所示。下图是互动和响应捏到缩放和拖动手势。
如果你不喜欢默认的颜色,您可以使用数据集类的setColors方法来改变颜色方案。然而,MPAndroidChart还附带了一些可以让你改变你的数据集的外观和感觉,而无需处理单个颜色值预定义的颜色模板。
在这个库的当前版本,下面的模板:
ColorTemplate.LIBERTY_COLORSColorTemplate.COLORFUL_COLORSColorTemplate.JOYFUL_COLORSColorTemplate.PASTEL_COLORSColorTemplate.VORDIPLOM_COLORS
要使用的数据集彩色模板关联,则必须使用setColors方法。下面是一个例子:
dataset.setColors(ColorTemplate.COLORFUL_COLORS);
运行你的应用程序更多的时间来看到色彩更鲜艳的图表。

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