AChartEngine折线图实例
最近做项目要用到图表,在网上找相关的解决方案找了很久,搜到最多的就是这个框架,所以就开始研究下怎么使用,首先研究的就是折线图,如是做了一个实例。
AChartEngine下载地址:http://code.google.com/p/achartengine/downloads/list 。
先简单描述下这个例子:用开源的图表框架AChartEngine的折线图显示最近7天的最高气温变化趋势。
最终效果如下图(手机分辨率800*480,4寸大小):

布局文件activity_line_chart.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffffff"
tools:context=".MainActivity" > <LinearLayout android:id="@+id/chart"
android:orientation="horizontal"
android:background="#ffffff"
android:splitMotionEvents="false"
android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1"/> </LinearLayout>
java代码文件MainActivity.java:
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer; import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.widget.LinearLayout; public class MainActivity extends Activity {
LinearLayout chart;
GraphicalView chartView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_line_chart);
chart = (LinearLayout) findViewById(R.id.chart);
showChart();
}
private void showChart() {
XYMultipleSeriesDataset mDataSet=getDataSet();
XYMultipleSeriesRenderer mRefender=getRefender();
chartView=ChartFactory.getLineChartView(this, mDataSet, mRefender);
chart.addView(chartView);
}
private XYMultipleSeriesDataset getDataSet() {
XYMultipleSeriesDataset seriesDataset=new XYMultipleSeriesDataset();
XYSeries xySeries1=new XYSeries("北京最近7天最高温度变化趋势");
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
seriesDataset.addSeries(xySeries1); XYSeries xySeries2=new XYSeries("北京最近7天最低温度变化趋势");
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
seriesDataset.addSeries(xySeries2); return seriesDataset;
}
private XYMultipleSeriesRenderer getRefender() {
/*描绘器,设置图表整体效果,比如x,y轴效果,缩放比例,颜色设置*/
XYMultipleSeriesRenderer seriesRenderer=new XYMultipleSeriesRenderer(); seriesRenderer.setChartTitleTextSize();//设置图表标题的字体大小(图的最上面文字)
seriesRenderer.setMargins(new int[] { , , , });//设置外边距,顺序为:上左下右
//坐标轴设置
seriesRenderer.setAxisTitleTextSize();//设置坐标轴标题字体的大小
seriesRenderer.setYAxisMin(-);//设置y轴的起始值
seriesRenderer.setYAxisMax();//设置y轴的最大值
seriesRenderer.setXAxisMin(0.5);//设置x轴起始值
seriesRenderer.setXAxisMax(7.5);//设置x轴最大值
seriesRenderer.setXTitle("日期");//设置x轴标题
seriesRenderer.setYTitle("温度");//设置y轴标题
//颜色设置
seriesRenderer.setApplyBackgroundColor(true);//是应用设置的背景颜色
seriesRenderer.setLabelsColor(0xFF85848D);//设置标签颜色
seriesRenderer.setBackgroundColor(Color.argb(, , , ));//设置图表的背景颜色
//缩放设置
seriesRenderer.setZoomButtonsVisible(false);//设置缩放按钮是否可见
seriesRenderer.setZoomEnabled(false); //图表是否可以缩放设置
seriesRenderer.setZoomInLimitX();
// seriesRenderer.setZoomRate(1);//缩放比例设置
//图表移动设置
seriesRenderer.setPanEnabled(false);//图表是否可以移动 //legend(最下面的文字说明)设置
// seriesRenderer.setShowLegend(true);//控制legend(说明文字 )是否显示
// seriesRenderer.setLegendHeight(80);//设置说明的高度,单位px
// seriesRenderer.setLegendTextSize(16);//设置说明字体大小
//坐标轴标签设置
seriesRenderer.setLabelsTextSize();//设置标签字体大小
seriesRenderer.setXLabelsAlign(Align.CENTER);
seriesRenderer.setYLabelsAlign(Align.LEFT);
seriesRenderer.setXLabels();//显示的x轴标签的个数
seriesRenderer.addXTextLabel(, "6/24");//针对特定的x轴值增加文本标签
seriesRenderer.addXTextLabel(, "6/25");
seriesRenderer.addXTextLabel(, "6/26");
seriesRenderer.addXTextLabel(, "6/27");
seriesRenderer.addXTextLabel(, "6/28");
seriesRenderer.addXTextLabel(, "6/29");
seriesRenderer.addXTextLabel(, "今天");
seriesRenderer.setPointSize();//设置坐标点大小 seriesRenderer.setMarginsColor(Color.WHITE);//设置外边距空间的颜色
seriesRenderer.setClickEnabled(false);
seriesRenderer.setChartTitle("北京最近7天温度变化趋势图"); /*某一组数据的描绘器,描绘该组数据的个性化显示效果,主要是字体跟颜色的效果*/
XYSeriesRenderer xySeriesRenderer1=new XYSeriesRenderer();
xySeriesRenderer1.setAnnotationsColor(0xFFFF0000);//设置注释(注释可以着重标注某一坐标)的颜色
xySeriesRenderer1.setAnnotationsTextAlign(Align.CENTER);//设置注释的位置
xySeriesRenderer1.setAnnotationsTextSize();//设置注释文字的大小
xySeriesRenderer1.setPointStyle(PointStyle.CIRCLE);//坐标点的显示风格
xySeriesRenderer1.setPointStrokeWidth();//坐标点的大小
xySeriesRenderer1.setColor(0xFFF46C48);//表示该组数据的图或线的颜色
xySeriesRenderer1.setDisplayChartValues(false);//设置是否显示坐标点的y轴坐标值
xySeriesRenderer1.setChartValuesTextSize();//设置显示的坐标点值的字体大小 /*某一组数据的描绘器,描绘该组数据的个性化显示效果,主要是字体跟颜色的效果*/
XYSeriesRenderer xySeriesRenderer2=new XYSeriesRenderer();
xySeriesRenderer2.setPointStyle(PointStyle.CIRCLE);//坐标点的显示风格
xySeriesRenderer2.setPointStrokeWidth();//坐标点的大小
xySeriesRenderer2.setColor(0xFF00C8FF);//表示该组数据的图或线的颜色
xySeriesRenderer2.setDisplayChartValues(false);//设置是否显示坐标点的y轴坐标值
xySeriesRenderer2.setChartValuesTextSize();//设置显示的坐标点值的字体大小 seriesRenderer.addSeriesRenderer(xySeriesRenderer1);
seriesRenderer.addSeriesRenderer(xySeriesRenderer2);
return seriesRenderer;
}
}
遇到的问题:
1.图表中显示文字(图表标题,XY轴标签,说明文字)的大小单位是像素,会导致在高像素密度的设备上显示的字体非常小,在低像素密度的设备上显示字体偏大的情况,这个问题目前还不知道怎么解决。
2.还有就是已经设置了禁止缩放:
seriesRenderer.setZoomEnabled(false);
但是实际运行的效果是通过双指进行操作竟然能够缩放。
补充:
把某个坐标点标注出来,比如说把最高气温(1,36)这个坐标着重标注出来。
XYSeries seriesAt = mDataSet.getSeriesAt();//mDataSet为数据设置器XYMultipleSeriesDataset
seriesAt.addAnnotation("最高", , );
效果如下(xiaomi3截屏):

AChartEngine折线图实例的更多相关文章
- JFreeChart绘制折线图实例
JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. package c ...
- python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- 最牛逼android上的图表库MpChart(二) 折线图
最牛逼android上的图表库MpChart二 折线图 MpChart折线图介绍 MpChart折线图实例 MpChart效果 最牛逼android上的图表库MpChart(二) 折线图 最近工作中, ...
- Android图表引擎AChartEngine之折线图使用
最近在帮老师做一个课题,其中app端需要显示折线图以便直观地看数据波动,上网查了些资料后发现了这款图标引擎,另外感谢李坤老师的博客,帮助很大. 废话不多说,下面写代码. 一.AChartEngine是 ...
- achartengine画出动态折线图
achartengine画出动态折线图的效果最近有个项目需要用到实时曲线图,我也上网搜索了一下,最后还是选择使用achartengine这个现成的东西,毕竟自己再canvas一下实在是太麻烦,而且项目 ...
- AChartEngine 安卓折线图 柱形图等利器
http://www.eoeandroid.com/thread-548233-1-6.html 最近公司项目中要用到折线图,状态类型的图标要用到折线图,柱形图等,并且能够动态显示,在网上找了许多de ...
- 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图
折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...
- Android AChartEngine 去除折线图黑边
通常使用AChartEngine画出的折线图,如果背景不是黑色,则会在折线图的坐标轴旁边出现黑边,如图所示: 试了好多设置,最后终于发现,去除黑边的设置是: mRenderer.setMarginsC ...
- 使用achartengine实现自定义折线图 ----附代码 调试OK
achartengine作为android开发中最常用的实现图标的开源框架,使用比较方便,参考官方文档谢了如下Demo,实现了自定义折线图. package edu.ustb.chart; impor ...
随机推荐
- A1060 Are They Equal (25 分)
一.技术总结 cnta.cntb用于记录小数点出现的位置下标,初始化为strlen(字符串)长度. q.p用于记录第一个非0(非小数点)出现的下标,可以用于计算次方和方便统计输出的字符串,考虑到前面可 ...
- C#开发BIMFACE系列20 服务端API之获取模型数据5:批量获取构件属性
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列18 服务端API之获取模型数据3:获取构件属性>中介绍了获取单个文件/模型的单个构建的属性,本篇介绍 ...
- 利用Runtime对Ivar实例变量进行共用的归档和解档方式
一.介绍 在OC中每一个对象持有的变量都是实例变量,实例变量包括成员变量和属性变量,在runtime中用Ivar表示对象的实例变量.其实,runtime源码中可以看到,Ivar也是一个结构体(基本上在 ...
- dotnetcore实现Aop
dotnetcore实现Aop Aop大家都不陌生,然而今天给大家不将讲官方的filter,今天给大家分享一个轻量级的Aop解决方案(AspectCore) 什么是AspectCore AspectC ...
- MongoDB系列---集合与文档操作03
MongoDB-——Collection 学习大纲: 1.集合操作 2.文档操作 知识回顾: 上一篇我们讲述了如何对MongoDB的权限和用户进行日常的基本操作,来达到我们对数据库的基本安全保障. 一 ...
- MySqlBulkLoader 中文乱码
MySQL驱动:MySqlConnector GitHub地址:https://github.com/mysql-net/MySqlConnector.git 文档地址:https://mysql-n ...
- 利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API
微软动态CRM专家罗勇 ,回复337或者20190521可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 配置Dynamics 365 & PowerApps 支 ...
- Flutter学习笔记(1)--环境安装
flutter最近显得格外的火,公司的同事也一直在谈论flutter,感觉自己不学学就要失业了...所以决定顺应潮流学习以下flutter,做一下学习笔记,希望可以给需要的同学带来一些帮助~ 正文为f ...
- INSTALL_FAILED_NO_MATCHING_ABIS解决办法
解决方法: 在project切换到Android状态下的build.grade(Module:app)中添加如下内容即可: splits { abi { enable true reset() inc ...
- Android Monkey使用
Monkey 是什么? Android SDK自带的压力测试工具,也是一个命令行工具.它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用程序进行压力测试. (1 ...