最近需要实现用android来画折线图,所以百度了一下,发现确实很多,也很乱,现在整理两种方法(第二种方法在【android绘画折线图二】中实现),仅供大家参考,一起学习研究。

第一种使用ChartFactory.getLineChartIntent()方法获取,这种方法首先需要一个achartengine-1.0.0.jar(项目中有),然后建立一个简单的android项目

项目中所需要导入的包有:

import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.model.XYMultipleSeriesDataset;import org.achartengine.model.XYSeries;import org.achartengine.renderer.XYMultipleSeriesRenderer;import org.achartengine.renderer.XYSeriesRenderer;import android.app.ListActivity;import android.content.Intent;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.ListView;import android.widget.SimpleAdapter;

接着在自己的activity中这样编写:

public class MyPaintActivity extends ListActivity {    //参考地址  http://www.eoeandroid.com/forum.php?mod=viewthread&tid=98457    private static final int SERIES_NR = 2;    private ArrayList<Map<String, String>> maps = new ArrayList<Map<String, String>>();    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);//         setContentView(R.layout.main);        // 加入ListItem “调度查询”        HashMap<String, String> map = new HashMap<String, String>();        map.put("name", "折线图");        map.put("desc", "显示折线图");        maps.add(map);        // 构建listView的适配器        SimpleAdapter adapter = new SimpleAdapter(this, maps,                android.R.layout.simple_list_item_2, new String[] { "name",                        "desc" }, new int[] { android.R.id.text1,                        android.R.id.text2 });        // SDK库中提供的一个包含两个TextView的layout new String[]{"name","desc"},        // maps中的两个key new int[]{android.R.id.text1,android.R.id.text2}        // 两个TextView的id );        this.setListAdapter(adapter);    }    @Override    protected void onListItemClick(ListView l, View v, int position, long id) {        // TODO Auto-generated method stub        super.onListItemClick(l, v, position, id);        try {            Intent intent = ChartFactory.getLineChartIntent(MyPaintActivity.this, getDataset(),                    getRenderer());            startActivity(intent);                    } catch (Exception e) {            e.printStackTrace();        }    }    private XYMultipleSeriesDataset getDataset() {        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();        final int nr = 10;        // 每个系列种包含10个随机数        Random r = new Random();        for (int i = 0; i < SERIES_NR; i++) {            // 新建一个系列(线条)            XYSeries series = new XYSeries("Series" + (i + 1));            for (int k = 0; k < nr; k++) {                int x = r.nextInt() % 10;                // x:0-10之间的随机整数                int y = 50 + r.nextInt() % 50;                // y:50-100之间的随机整数                series.add(x, y);                // 往系列中加入一个随机分布的点            }            // 把添加了点的折线放入dataset             dataset.addSeries(series);        }        return dataset;    }    public XYMultipleSeriesRenderer getRenderer() {        // 新建一个xymultipleseries        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();        renderer.setAxisTitleTextSize(16);        // 设置坐标轴标题文本大小        renderer.setChartTitleTextSize(20);        // 设置图表标题文本大小        renderer.setLabelsTextSize(15);        // 设置轴标签文本大小        renderer.setLegendTextSize(15);        // 设置图例文本大小        renderer.setMargins(new int[] { 20, 30, 15, 0 });        // 设置4边留白        // 设置一个系列的颜色为蓝色        XYSeriesRenderer r = new XYSeriesRenderer();        r.setColor(Color.BLUE);        // 往xymultiplerender中增加一个系列        renderer.addSeriesRenderer(r);        // 设置另一个系列的颜色为红色        r = new XYSeriesRenderer();        r.setColor(Color.GREEN);        // 往xymultiplerender中增加另一个系列        renderer.addSeriesRenderer(r);        return renderer;    }}

这样画出来之后,直接运行会发现是不行的,程序直接停止运行,这是因为程序需要org.achartengine.GraphicalActivity这个activity支持,所以在你的资源文件AndroidManifest.xml中加上一句:

<activity android:name="org.achartengine.GraphicalActivity">

然后在运行项目,点击“显示折线图”就可以看到效果啦!

注明:项目源码在MyPaint.zip中,achartengine-1.0.0.jar也在该源码项目中

更多相关文章

  1. TextView——文本省略显示
  2. 将Android项目导入到Eclipse开发环境
  3. Android O新特性系列
  4. 关于ADT(eclipse android)项目迁移到Android studio工具教程(上)
  5. ANDROID Porting系列九、Lights
  6. Android中的文本框,图片以及点击事件的设置
  7. AutoCompleteTextView(自动完成文本框)
  8. Android音乐播放器开发小记——项目简介

随机推荐

  1. RR与RC隔离级别下索引和锁的测试脚本示例
  2. MySQL使用全库备份数据恢复单表数据的方
  3. MySQL用户账户管理和权限管理深入讲解
  4. windows 环境下 MySQL 8.0.13 免安装版配
  5. MYSQL8.0.13免安装版配置教程实例详解
  6. Centos7.5安装mysql5.7.24二进制包方式部
  7. 基于更新SQL语句理解MySQL锁定详解
  8. 使用PDO防sql注入的原理分析
  9. MySQL 8.0.13 下载安装教程图文详解
  10. MySQL5.6的zip包安装教程详解