- 浏览: 146826 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xjk112:
2015-05-08 13:21
我奋斗了18年才和你坐在一起喝咖啡[转] -
sandy_vv:
给达内广告,收费 ?
Java 利用url下载MP3保存到本地 -
78945612:
哥们
这个对于初学者怎么整呢?
android 定时关机 -
cn23snyga:
请教贵博,用ACE 绘制出的图表,可以捕捉到点击事件的坐标值 ...
使用achartengine开发曲线图相关的Android应用程序(zhuan) -
qi19901212:
楼主你好,我开发的achartengine放在 scrollv ...
Android开发工具之AChartEngine
应用程序的开发过程中,经常会遇到和曲线图打交道的情况,相比自己写代码绘制,无疑的,使用一些美观高效的开源库是一个更好的选择。目前开源的曲线图绘制工作有很多,本文以achartengine为例,介绍在Android系统下开发曲线图相关程序的有关方法。
AChartEngine是专为Android系统设计的图形库,可以用于绘制多种图表,具体列表如下,且每张图上都支持多条曲线:
line chart ; area chart ; scatter chart ; time chart ; bar chart ;
pie chart ; bubble chart ; doughnut chart ; range (high-low) bar chart ;
下面主要介绍画line chart的方法:
几个主要的类:
XYMultipleSeriesRenderer renderer; //曲线图的格式,包括颜色,值的范围,点和线的形状等等
XYMultipleSeriesDataset dataset; //保存点集数据 ,包括每条曲线的X,Y坐标
对图表而言几个重要的变量:
String[] titles; //每条曲线的名称
List<double []> x; //点集的x坐标
List<double []> y; //点集的y坐标
int[] colors; //每条曲线的颜色
PointStyle[] styles; //每条曲线点的形状
XYMultipleSeriesRenderer中的一些重要的方法,由名称可以看出具体功能:
public void addSeriesRenderer(SimpleSeriesRenderer renderer)
public void removeSeriesRenderer(SimpleSeriesRenderer renderer)
public SimpleSeriesRenderer getSeriesRendererAt(int index)
public void setBackgroundColor(int color)
public void setAxesColor(int color)
public void setLabelsColor(int color)
public void setShowAxes(boolean showAxes)
public void setChartTitle(String title)
public void setChartTitleTextSize(float textSize)
public void setXTitle(String title)
public void setAxisTitleTextSize(float textSize)
public void setXAxisMin(double min)
public void setXAxisMax(double max)
public void setYTitle(String title)
public void setYAxisMin(double min)
public void setYAxisMax(double max)
XYMultipleSeriesDataset中的一些重要方法,由名称可看出具体功能:
public void addSeries(XYSeries series)
public void removeSeries(int index)
public void removeSeries(XYSeries series)
AChartEngine的事例代码中提供了一些管理XYMultipleSeriesDataset和XYMultipleSeriesRenderer的方式,通过buildRenderer,setChartSettings,buildDataset来实现,减少了分条目设置属性的麻烦,具体见代码中的函数。
下文代码在一张图中绘制了两条曲线,并在主窗体中显示出来:
package net.ispiders;
import java.util.ArrayList;
import java.util.List;
import org.achartengine.ChartFactory;
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.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
public class chartDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] titles = new String[] { "First", "Second"};
List x = new ArrayList();
List y = new ArrayList();
x.add(new double[] { 1, 3, 5, 7, 9, 11} );
x.add(new double[] { 0, 2, 4, 6, 8, 10} );
y.add(new double[] { 3, 14, 5, 30, 20, 25});
y.add(new double[] { 18, 9, 21, 15, 10, 6});
XYMultipleSeriesDataset dataset = buildDataset(titles, x, y);
int[] colors = new int[] { Color.BLUE, Color.GREEN};
PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND};
XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles, true);
setChartSettings(renderer, "Line Chart Demo", "X", "Y", -1, 12, 0, 35 , Color.WHITE, Color.WHITE);
View chart = ChartFactory.getLineChartView(this, dataset, renderer);
setContentView(chart);
}
protected XYMultipleSeriesDataset buildDataset(String[] titles,
List xValues,
List yValues)
{
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length; //有几条线
for (int i = 0; i < length; i++)
{
XYSeries series = new XYSeries(titles[i]); //根据每条线的名称创建
double[] xV = xValues.get(i); //获取第i条线的数据
double[] yV = yValues.get(i);
int seriesLength = xV.length; //有几个点
for (int k = 0; k < seriesLength; k++) //每条线里有几个点
{
series.add(xV[k], yV[k]);
}
dataset.addSeries(series);
}
return dataset;
}
protected XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles, boolean fill)
{
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
int length = colors.length;
for (int i = 0; i < length; i++)
{
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
r.setPointStyle(styles[i]);
r.setFillPoints(fill);
renderer.addSeriesRenderer(r);
}
return renderer;
}
protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title,
String xTitle,String yTitle, double xMin,
double xMax, double yMin, double yMax,
int axesColor,int labelsColor)
{
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
renderer.setXAxisMax(xMax);
renderer.setYAxisMin(yMin);
renderer.setYAxisMax(yMax);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
}
}
发表评论
-
Android开发之Tools
2011-10-02 00:19 897AChartEngine is a charting libr ... -
或许您还不知道的八款开源Android游戏引擎
2011-09-29 12:38 765很多初学Android游戏开发 ... -
Android开发工具之AChartEngine
2011-09-29 12:11 3024最近在做一个关于股票的软件(for Android),在软件中 ... -
android 事件处理(转)
2011-09-15 12:14 1082android中的事件类型分为按键事件和屏幕触摸事件,Touc ... -
android paint设置字体 中文字体 楷体 和自动换行方法(zhuan)
2011-09-14 16:19 3816Bitmap bmp = BitmapFactory.deco ... -
Android Canvas类介绍(zhuan)
2011-09-14 14:57 934当我们调整好画笔之后,现在需要绘制到画布上,这就得用Can ... -
Android Canvas类介绍(zhuan)
2011-09-14 14:56 0当我们调整好画笔之后,现在需要绘制到画布上,这就得用Can ... -
Android OpenGL之生成FloatBuffer
2011-09-06 08:56 1474public FloatBuffer getFloatBuff ... -
Activity之间的跳转(A-B-A)
2011-09-05 12:29 982Activity A 中: Intent intent ... -
Android OpenGL相关
2011-09-02 15:46 7110x10000是出于OPENGL前期内存节约的考虑, 以INT ... -
Android 返回键
2011-09-01 17:11 1066@Override public boolean onK ... -
android selector(zhuan)
2011-08-30 10:06 536<?xml version="1.0" ... -
android 定时关机
2011-08-29 10:19 1259Calendar calendar = Calendar.ge ... -
android 相关2
2011-08-25 12:31 770AndroidManifest.xml的activity里加a ... -
Android ListView刷新 (Handler/Service)
2011-08-03 21:40 2103本文转自http://blog.sina.com.cn/s/b ... -
Android 中的ListView内容刷新问题(转)
2011-08-03 21:22 1187本文转自http://www.linuxidc.com/Lin ... -
android listview
2011-08-03 21:21 786Android 中的ListView内容刷新 对于ListV ... -
android相关
2011-07-21 12:48 783android:screenOrientation=" ... -
Android中JNI程序的编写(zhuan)
2011-07-15 18:48 948zhuan(http://luco1130.blog.163. ... -
Android_Handler,Looper,Message深入分析
2011-04-07 18:49 1466在网上有许多资料对这三者关系的分析,但都比较笼统不够细 ...
相关推荐
本资源是一个android 动态曲线图的实际例子,希望有需要的同学们能够得到帮助
android achartengine曲线图 最新版
主要是aChartEngine 图表中线性图表的time chart的使用,以时间为x轴单位,可以自由的设置单位为年 月 日 时 分 秒等,可以自由的设置间隔大小
使用AChartengine画折线图Demo
针对安卓中的数据处理,进行简单的 数据显示,新手很好用的,后期可以做成比如测试软件,比如是屏幕帧数曲线图、cpu频率曲线图等等
使用Achartengine实现Android折线图开发的一个Demo
Android中使用AChartEngine 来绘图的demo,比google code上的demo简单易懂。相关文章请看: http://blog.csdn.net/suiyuansanren/article/details/19819437
<Android开发代码库>achartengine实现柱状图、圆饼图、线图等 http://write.blog.csdn.net/postlist <Android开发代码库>achartengine实现柱状图、圆饼图、线图等 http://write.blog.csdn.net/postlist <Android...
基于achartengine双Y轴动态图表Android源码,画的是折线图随x轴移动并实时更新数据,当然也可以弄成别的图,长时间运行内存不会溢出,WHO用WHO开心
android比较不错的 achartengine 股票曲线图
Android制作曲线、柱状图、饼形等图表——使用AChartEngine
对于数据的可视化,之前,是想直接用Canvas 来画,不过,评估了一下,工作量挺大的,因为,是一个人开发,而且是从零开始,如果写一个Canvas 画报表的方法,太费时间了,于是,上网找了一下,使用AchartEngine,...
android折线图(AChartEngine和ichartjs)的实现
Android使用AChartEngine制作动态心电图效果
android中AchartEngine制作柱图
截止分数 使用 achartengine 绘制图形的 Android 应用程序
源码参考,欢迎下载
本实例是采用AChartEngine进行绘制折线图的一个例子,采用随机数作为采样点,同步参考博客http://blog.csdn.net/danming60520/article/details/14127639
android achartengine 图表 时间轴 achartengine开发的关于时间的折线图