android acchartengine学习入门实例

AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。

 

该项目地址位于: http://code.google.com/p/achartengine/

你可以选择合适的版本下载,每个版本都有一个jar包、实例源代码和java doc提供下载。当前最新版本为0.6。

需要注意的是,0.6版本不再支持Android 2.0以下(包含2.0)。也就是说如果你的目标平台使用了7以下SDK版本,比如Android 1.5-2.0。则需要下载老版本的ACE 0.5。

本文以ACE 0.5为例。

1、新建Android Project

在工程中新建一个文件夹比如lib,用于存放ACE Libraries,把achartegine-0.5.0.jar包复制到lib里面。

然后把这个jar的路径添加到项目的Build Path中。

2、修改AndroidManifest.xml

主要是加入一个<activity>:

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

呆会我们使用ACE生成柱状图,会在一个特殊的Activit中才能显示,这个Activity就是ACE库中的 GraphicalActivity 。我们需要在AndroidManifest.xml中申明它,否则Android会报找不到Activity错误。

3、新建Activity

新建一个类,比如叫做main:

public class main extends ListActivity {

private static final int SERIES_NR = 2;

    /** Called when the activity is first created. */

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 , // SDK 库中提供的一个包含两个 TextView 的 layout

        new String[]{ "name" , "desc" }, // maps 中的两个 key

        new int []{android.R.id. text1 ,android.R.id. text2 } // 两个 TextView 的 id      

        );

        this .setListAdapter(adapter);

       

    }

    // ListItem 监听器方法

    protected void onListItemClick(ListView l, View v, int position, long id) {

        super .onListItemClick(l, v, position, id);

        XYMultipleSeriesRenderer renderer = getBarDemoRenderer();

        Intent intent = ChartFactory.getBarChartIntent ( this , getBarDemoDataset(), renderer, Type. DEFAULT );

        startActivity(intent);

    }

    private XYMultipleSeriesDataset getBarDemoDataset() {

        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

        final int nr = 10;

        Random r = new Random();

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

          CategorySeries series = new CategorySeries( "Demo series " + (i + 1));

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

            series.add(100 + r.nextInt() % 100);

          }

          dataset.addSeries(series.toXYSeries());

        }

        return dataset;

      }

    public XYMultipleSeriesRenderer getBarDemoRenderer() {

        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

        SimpleSeriesRenderer r = new SimpleSeriesRenderer();

        r.setColor(Color. BLUE );

        renderer.addSeriesRenderer(r);

        r = new SimpleSeriesRenderer();

        r.setColor(Color. GREEN );

        renderer.addSeriesRenderer(r);

        setChartSettings(renderer);

        return renderer;

      }

 

       private void setChartSettings(XYMultipleSeriesRenderer renderer) {

        renderer.setChartTitle( "Chart demo" );

        renderer.setXTitle( "x values" );

        renderer.setYTitle( "y values" );

        renderer.setXAxisMin(0.5);

        renderer.setXAxisMax(10.5);

        renderer.setYAxisMin(0);

        renderer.setYAxisMax(210);

      }

}

先把上面的代码进行简单的复制粘贴。好了,运行程序试试:

 

好了,下面来看代码。

onCreate方法不需要多说了吧,一个ListActivity而已。

在 onListItemClick 方法中,当用户点击了“显示图表”之后,构造一个intent对象,然后用startActivity发送消息到前面AndroidManifest.xml申明的那个activity( 即 GraphicalActivity )。于是图表就显示出来了。

关键是intent的构造方法 ChartFactory.getBarChartIntent。

ChartFactory提供了许多有用的工厂方法,如果你需要生成一个折线图,可以用它的 getLineChartIntent 方法。

getBarChartIntent 方法有点复杂,需要我们准备很多参数传入。其中一个是 XYMultipleSeriesDataset 类型的对象,用于提供图表需要表示的数据集,这里我们用 getBarDemoDataset 来得到它。另外一个是 XYMultipleSeriesRenderer 类型的对象,用于提供图表展现时的一些样式,这里我们用 getBarDemoRenderer 方法来得到它。

getLineChartIntent 方法很无聊,使用了一些随机数来作为图表数据。注意柱状图是支持多系列的,这里生成了两个系列的数据。

getBarDemoRenderer 方法构建了一个 XYMultipleSeriesRenderer 用来设置2个系列各自的颜色,然后调用 setChartSettings 方法设置了下坐标轴样式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值