Android 实时曲线图/折线图

基于开源框架AChartEnginee绘制图表表格,实现显示数据折线图,对比功能。效果图如下:


新建工程

通过Android studio新建项目,添加achartenginee.jar依赖。点击下载jar


初始化图表

数据集

根据需求设置多条曲线,一条曲线对应一个XYSeries实例

	series = new XYSeries(title);
		series2 = new XYSeries("123");
		// 创建一个数据集的实例,这个数据集将被用来创建图表
		mDataset = new XYMultipleSeriesDataset();
		// 将点集添加到这个数据集中
		mDataset.addSeries(series);
		mDataset.addSeries(series2);

属性样式

设置曲线样式,这里要注意,一条曲线执行一次如下设置,以顺序相互对应,否则将会报错:Datasetand renderer should not be null  andshould have the same number of series

XYSeriesRenderer r = new XYSeriesRenderer();
		// 设置图表中曲线本身的样式,包括颜色、点的大小以及线的粗细等
		r.setColor(color);
		r.setPointStyle(style);
		r.setFillPoints(fill);
		r.setLineWidth(3);
		renderer.addSeriesRenderer(r);

设置图表样式

// 有关对图表的渲染可参看api文档
		renderer.setApplyBackgroundColor(true);
		renderer.setBackgroundColor(getResources().getColor(
				R.color.black));
		renderer.setChartTitle(title);
		renderer.setChartTitleTextSize(20);
		renderer.setLabelsTextSize(19);// 设置坐标轴标签文字的大小
		renderer.setXTitle(xTitle);
		renderer.setYTitle(yTitle);
		renderer.setXAxisMin(xMin);
		renderer.setXAxisMax(xMax);
		renderer.setYAxisMin(yMin);
		renderer.setYAxisMax(yMax);
		//renderer.setYAxisAlign(Align.RIGHT, 0);//用来调整Y轴放置的位置,表示将第一条Y轴放在右侧
		renderer.setAxesColor(axesColor);
		renderer.setLabelsColor(labelsColor);
		renderer.setShowGrid(true);
		renderer.setGridColor(Color.GRAY);
		renderer.setXLabels(10);//若不想显示X标签刻度,设置为0 即可
		renderer.setYLabels(10);
		renderer.setLabelsTextSize(18);// 设置坐标轴标签文字的大小
		renderer.setXLabelsColor(labelsColor);
		renderer.setYLabelsColor(0, labelsColor);
		renderer.setYLabelsVerticalPadding(-5);
		renderer.setXTitle("");
		renderer.setYTitle("");
		renderer.setYLabelsAlign(Align.RIGHT);
		renderer.setAxisTitleTextSize(20);
		renderer.setPointSize((float) 1);
		renderer.setShowLegend(false);
		renderer.setFitLegend(true);
		renderer.setMargins(new int[] { 30, 45, 10, 20 });// 设置图表的外边框(上/左/下/右)
		//表格边框颜色
		renderer.setMarginsColor(getResources().getColor(
				R.color.cardio_bg_color));

 

显示数据

这里我们是模拟实时数据,通过handler递归调用不断获取新数据

Runnable runnable = new Runnable() {

		@Override
		public void run() {
			ArrayList<Integer> datas = new ArrayList<Integer>();
			for (int i = 0; i < 1; i++) {
				datas.add(random.nextInt(2000)+500);
			}
			ArrayList<Integer> datas2 = new ArrayList<Integer>();
			for (int i = 0; i < 1; i++) {
				datas2.add(random.nextInt(2000)+500);
			}

			updateCharts(datas);
			updateChartsMoreLine(datas2);			
			handler.postDelayed(this, POINT_GENERATE_PERIOD);
		}
	};

protected void updateCharts(ArrayList<Integer> datas) {
		for (int addY : datas) {
			series.add(i, addY);
			i++;
		}
		if (i < MAX_POINT) {
			renderer.setXAxisMin(0);
			renderer.setXAxisMax(MAX_POINT);
		} else {
			renderer.setXAxisMin(series.getItemCount() - MAX_POINT);
			renderer.setXAxisMax(series.getItemCount());
		}
		chart.repaint();
	}

protected void updateChartsMoreLine(ArrayList<Integer> datas) {
		for (int addY : datas) {
			series2.add(i2, addY);
			i2++;
		}
		chart.repaint();
	}


想要源码的留下邮箱

  • 28
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 349
    评论
Android实时曲线图是一种用于实时展示数据的图表,常用于与传感器相关的项目中。根据引用中的内容,有两种实现方式。其中每种实现方式都包含两种展现方式,即曲线图平移方向为左和右。在实现过程中,可以使用布局文件R.layout.custom_marker_view来自定义Marker View,如引用所示。该布局文件使用RelativeLayout包裹一个TextView,用于展示数据点的具体数值。 如果你希望查看完整的实现工程,可以参考引用中提供的链接。该链接中提供了一个完整的工程示例,其中心电图数据被修改成了随机数数据。在使用该工程时,需要先导入Android-support-V7-appcompat库,然后再导入RealTimeChart库。注意,导入完毕后需要修改Library引用,具体步骤是右击RealTimeChart工程,选择Properties->Android->下方Library->add->选择android-support-V7-appcompat即可。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Android利用Achartengine实现实时曲线图](https://blog.csdn.net/qq_42820594/article/details/103063596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Android 一步步实现曲线图折线图、柱状图、雷达图,动态心跳图](https://blog.csdn.net/gao511147456/article/details/108412584)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 349
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风晴03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值