android自定义achartengine,AChartEngine实现Android实时时间变化曲线

本文详细介绍了AChartEngine库如何在Android应用中创建和定制实时曲线图,包括GraphicalView、ChartFactory、数据集与渲染器的使用。展示了如何生成时间轴曲线并调整样式,适合图表开发入门者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说先看效果图

8c0539ccf7c2cc48700aca7074267d81.png

AChartEngine给我们提供了GraphicalView这个类,可以灵活的在任何位置插入图表,非常的方便。

下面对相关类进行讲解:

GraphicalView:图表控件,是一个基本类,也是一个容器控件,所有的图表都在此控件中呈现;

ChartFactory:工厂类,通过此类来构建不同的图表对象,比如LineChart(折线图)、CubeLineChart(圆滑折线图)、PieChart(饼图)等;

XYMultipleSeriesDataset:数据集容器,在此类中存放多条曲线的数据集合

XYMultipleSeriesRenderer:渲染器容器,此类初始化坐标系,网格,标题等,还用来存放多条曲线的渲染器

XYSeries:数据集,存放曲线的数据

XYSeriesRenderer:渲染器,存放曲线的参数,比如线条颜色,描点大小等

好了 上代码:

LinearLayout layout = (LinearLayout)findViewById(R.id.chart);

//生成图表

chart = ChartFactory.getTimeChartView(this, getDateDemoDataset(), getDemoRenderer(), "MM/dd HH:mm");

layout.addView(chart, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.FILL_PARENT));

private XYMultipleSeriesDataset getDateDemoDataset() {

dataset1 = new XYMultipleSeriesDataset();

long value = System.currentTimeMillis();

//try {

//value = format1.parse("2020-03-11 00:00:00").getTime();

//} catch (ParseException e) {

TODO Auto-generated catch block

//e.printStackTrace();

//}

Date[] dd=new Date[nr];

for (int i = 0; i < nr; i++) {

dd[i]=new Date(value+1000*1800*i);

}

Random r = new Random();

for (int i = 0; i < SERIES_NR; i++) {

series1 = new TimeSeries("Demo series ");

for (int k = 0; k < nr; k++) {

// series1.add(new Date(value+k*1000*24*3600), 20 +r.nextInt() % 10);

series1.add(dd[k], 20 +r.nextInt() % 10);

}

dataset1.addSeries(series1);

}

Log.i(TAG, dataset1.toString());

return dataset1;

}

private XYMultipleSeriesRenderer getDemoRenderer() {

XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

// renderer.setChartTitle("实时曲线");//标题

// renderer.setChartTitleTextSize(20);

renderer.setAxisTitleTextSize(16);

renderer.setAxesColor(Color.BLACK);

renderer.setLabelsTextSize(15); //数轴刻度字体大小

renderer.setLabelsColor(Color.BLACK);

renderer.setLegendTextSize(15); //曲线说明

renderer.setXLabelsColor(Color.BLACK);

renderer.setYLabelsColor(0,Color.BLACK);

renderer.setShowCustomTextGrid(true); // 设置X轴和Y轴网格是否显示.

renderer.setGridColor(Color.WHITE);// LTGRAY); //网格颜色,灰色

renderer.setMarginsColor(Color.BLUE); // 设置四边颜色

renderer.setBackgroundColor(Color.WHITE); //设置中间背景色

//

renderer.setShowLegend(true);

renderer.setMargins(new int[] {20, 30, 30, 0});

XYSeriesRenderer r = new XYSeriesRenderer();

r.setColor(Color.RED);

r.setChartValuesTextSize(15);

r.setPointStyle(PointStyle.CIRCLE);

r.setFillBelowLine(true);

// r.setFillBelowLineColor(Color.WHITE);

r.setFillPoints(true);

renderer.addSeriesRenderer(r);

renderer.setPanEnabled(true, true);

renderer.setShowGrid(true);

renderer.setYAxisMax(50);

renderer.setYAxisMin(-20);

return renderer;

}

final int nr = 48;

时间曲线图的横坐标为时间轴,对齐要相应的处理。

文件上传在审核。后续修改源码地址。

标签:20,Color,AChartEngine,实时,int,renderer,new,Android,true

来源: https://blog.youkuaiyun.com/u010143630/article/details/104818901

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值