zoukankan      html  css  js  c++  java
  • android 绘制图表

    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 方法设置了下坐标轴样式。
     

    附件下载:
      柱状图实例

     

    转:http://llwbrothers.blog.51cto.com/2360705/565476

  • 相关阅读:
    OutputCache 缓存key的创建 CreateOutputCachedItemKey
    Asp.net Web Api源码调试
    asp.net mvc源码分析DefaultModelBinder 自定义的普通数据类型的绑定和验证
    Asp.net web Api源码分析HttpParameterBinding
    Asp.net web Api源码分析HttpRequestMessage的创建
    asp.net mvc源码分析ActionResult篇 RazorView.RenderView
    Asp.Net MVC 项目预编译 View
    Asp.net Web.config文件读取路径你真的清楚吗?
    asp.net 动态创建TextBox控件 如何加载状态信息
    asp.net mvc源码分析BeginForm方法 和ClientValidationEnabled 属性
  • 原文地址:https://www.cnblogs.com/gzggyy/p/2777288.html
Copyright © 2011-2022 走看看