发现最新的MPAndroidChart和以前版本的使用有一些差距,就写下了现在新版的使用方法
相关文章:
Android图表控件MPAndroidChart的简单介绍(MPAndroidChart3.0)
Android图表控件MPAndroidChart——曲线图LineChart的使用(多条曲线)
Android图表控件MPAndroidChart——曲线图LineChart(多条曲线)动态添加数据
Android图表控件MPAndroidChart——柱状图BarChart的使用(多条柱状图)
Android图表控件MPAndroidChart——曲线图+柱状图 CombinedChart的使用
Android图表控件MPAndroidChart——源码修改实现曲线图X轴直尺刻度样式
本文相关代码
MPAndroidChart在github地址:https://github.com/PhilJay/MPAndroidChart
一.效果图
一条曲线动态添加数据(X轴为当前时间)
多条曲线线动态添加数据(X轴为当前时间)
二.实现效果
1.X轴为当前时间,只需要Y轴数据即可
2.X轴的值为字符串,而Entry的构造方法参数全为float public Entry(float x, float y) 所以需要另外定义X轴的值
简要代码
动态添加值Entry
Entry entry = newEntry(lineDataSet.getEntryCount(),number);lineData.addEntry(entry,0);//通知数据已经改变lineData.notifyDataChanged();lineChart.notifyDataSetChanged();//设置在曲线图中显示的最大数量lineChart.setVisibleXRangeMaximum(10);//移到某个位置lineChart.moveViewToX(lineData.getEntryCount() - 5);
X轴值的设定
我并没有找到直接设置X轴为当前时间的方法,
而是新建一个字符串集合,选择在每次添加Entry的时候将当前时间添加进集合,然后设置X轴的值
privateSimpleDateFormat df= newSimpleDateFormat("HH:mm:ss");//设置日期格式privateList timeList= newArrayList<>();//存储x轴的时间
xAxis.setValueFormatter(newIAxisValueFormatter() {
@OverridepublicString getFormattedValue(floatvalue,AxisBase axis) {
returntimeList.get((int) value % timeList.size());}
});
三.详细代码(一个管理类)
public classDynamicLineChartManager {
privateLineChart lineChart;privateYAxis leftAxis;privateYAxis rightAxis;privateXAxis