Android开发技术网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
Android新手教程 Android开发经验 Android开发资讯
Android开发问答 Android实例教程 Framework底层开发
  Android开发资料网 -> Android开发经验 -> android在ScrollView和listview中使用achartengine图表 -> 正文阅读
Android开发经验 最新文章
ScrollView布局里面嵌套viewpager,viewpag
有没有大神做过类似应用安卓市场这种应用或
如何让dialog充满屏幕的宽?
内存泄露从入门到精通三部曲之基础知识篇
android访问远程数据库
【双11预告】极客学院最惠玩儿,小米插线板
分享个免费的翻墙插件
隐藏输入键盘
android在ScrollView和listview中使用achar
关于achartengine的使用一些小经验

[Android开发经验]android在ScrollView和listview中使用achartengine图表

  2015-01-21 10:58:49
achartengine官方给出的demo界面实在太丑,为此根据网上总结写出个例子,并且在ScrollView和ListView中嵌入图表
首先是Activity
public class MainActivity extends Activity
{
        private LinearLayout  barchart,linechart;         //装图表的容器
        private GraphicalView barChartView,lineChartView; //显示图表的view
        ListView list;
        ArrayList<View> Array_views=new ArrayList<View>();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                //显示到listview里
//                list=(ListView) findViewById(R.id.list);
//                Array_views.add(mChartView);
//                Array_views.add(drawine());
//                MyAdapet adapter =new MyAdapet(this, Array_views);
//                list.setAdapter(adapter);
               
                barchart=(LinearLayout) findViewById(R.id.barchart);
                linechart=(LinearLayout) findViewById(R.id.linechart);
                barChartView=ChartFactory.getBarChartView(this, getBarDataSet(), getBarRenderer() , Type.DEFAULT);
                lineChartView=ChartFactory.getLineChartView(this, getLineDataSet(), getLineRenderer());
                barchart.addView(barChartView);
                linechart.addView(lineChartView);        
        }
         XYMultipleSeriesDataset getLineDataSet()
        {
                XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
                 List<double[]> x = new ArrayList<double[]>();
             List<double[]> y = new ArrayList<double[]>();
                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});
                String[] titles = new String[] { "First", "Second"};
                int length = titles.length;                  //有几条线
                for (int i = 0; i < length; i++)
                {
                        XYSeries series = new XYSeries(titles[i]);    //根据每条线的名称创建
                        double[] xV =  x.get(i);                      //获取第i条线的数据
                        double[] yV =  y.get(i);
                        int seriesLength = xV.length;                 //有几个点
               
                        for (int k = 0; k < seriesLength; k++)        //每条线里有几个点
                        {
                                series.add(xV[k], yV[k]);
                        }
                dataset.addSeries(series);
                }
                return dataset;
        }
         
         XYMultipleSeriesRenderer getLineRenderer()
         {
                  XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
                  setChartSettings(renderer, "线性图", "时间", "功率", 0, 12, 0, 35 , Color.argb(255, 75, 178, 100), Color.argb(255, 75, 178, 100));
                   int[] colors = new int[] { Color.BLUE, Color.GREEN};
                PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND};   
                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(false);
                        renderer.addSeriesRenderer(r);
                       
                    }
                    renderer.getSeriesRendererAt(0).setDisplayChartValues(true);
                    renderer.getSeriesRendererAt(1).setDisplayChartValues(true);
                    renderer.setChartTitleTextSize(20);             // 设置标题的字体大小  
                renderer.setZoomButtonsVisible(false);          //是否显示缩放控件
                renderer.setApplyBackgroundColor(true);         //设置背景使能,为true下面的设置背景才有效
                renderer.setMarginsColor(Color.WHITE);          //设置图表的底色
                    renderer.setBackgroundColor(Color.argb(255, 215, 230, 222));  //设置图表的颜色
                    renderer.setAntialiasing(true);           // 消除锯齿  
                    renderer.setPanEnabled(true, false);    // 允许左右拖动,但不允许上下拖动.  
                    renderer.setShowLegend(false);
                    renderer.setMargins(new int[] {40, 50, 10, 0});   //图表内容的边距 上、左、下、右
                    
                    renderer.setXLabelsAlign(Align.CENTER);    // 刻度线与X轴坐标文字居中对齐  
                renderer.setYLabelsAlign(Align.RIGHT);    // Y轴与Y轴坐标文字右对齐  
//                renderer.setXLabels(0);                  // X轴的近似坐标数  (这样不显示横坐标)   
                renderer.setShowGridX(true);            //显示垂直于y轴的网格线
                renderer.setPointSize(5);              //设置点的大小(图上显示的点的大小和图例中点的大小都会被设置)
                renderer.setLabelsTextSize(22);        //设置刻度显示文字的大小(XY轴都会被设置)
                renderer.setYLabels(8);                //设置y轴显示8个点,根据最大值和最小值自动计算点的间隔
                renderer.setXLabels(6);                 //设置x轴显示6个点,根据最大值和最小值自动计算点的间隔  
                renderer.setChartValuesTextSize(18f);
                renderer.setDisplayValues(true);
                renderer.setAxisTitleTextSize(20);                         //设置轴标题文字的大小
                
                return renderer;
                 
         }
          
          /**
             * 构造数据
             * [url=home.php?mod=space&uid=7300]@return[/url]
             */  
            public XYMultipleSeriesDataset getBarDataSet() {  
                // 构造数据  
                XYMultipleSeriesDataset barDataset = new XYMultipleSeriesDataset();  
                CategorySeries barSeries = new CategorySeries("2014年10月");  
                barSeries.add(865.5969);  
                barSeries.add(2492.6479);  
                barSeries.add(891.0137);  
                barSeries.add(0.0);  
                barSeries.add(691.0568);
                barSeries.add(865.5969);  
                barSeries.add(2492.6479);  
                barSeries.add(891.0137);  
                barSeries.add(0.0);  
                barSeries.add(691.0568);  
                barSeries.add(865.5969);  
                barSeries.add(2492.6479);  
                barSeries.add(891.0137);  
                barSeries.add(0.0);  
                barSeries.add(691.0568);  
                barSeries.add(865.5969);  
                barSeries.add(2492.6479);  
                barSeries.add(891.0137);  
                barSeries.add(0.0);  
                barSeries.add(691.0568);  
                barDataset.addSeries(barSeries.toXYSeries());  
                return barDataset;  
            }  
          
            /**
             * 构造渲染器
             * @return
             */  
            public XYMultipleSeriesRenderer getBarRenderer() {  
                XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
                setChartSettings(renderer, "柱形图", "网络类型", "金钱", 0.5d, 5.5d, 0d, 3000d, Color.argb(255, 75, 178, 100), Color.argb(255, 75, 178, 100));
                renderer.setChartTitleTextSize(20);             // 设置标题的字体大小  
                renderer.setZoomButtonsVisible(false);          //是否显示缩放控件
                renderer.setApplyBackgroundColor(true);         //设置背景使能,为true下面的设置背景才有效
                renderer.setMarginsColor(Color.WHITE);          //设置图表的底色
                    renderer.setBackgroundColor(Color.argb(255, 215, 230, 222));  //设置图表的颜色
                    renderer.setAntialiasing(true);  // 消除锯齿  
                    renderer.addXTextLabel(1, "电网");  
                renderer.addXTextLabel(2, "通信");  
                renderer.addXTextLabel(3, "宽带");  
                renderer.addXTextLabel(4, "专网");  
                renderer.addXTextLabel(5, "轨交");
                renderer.addXTextLabel(6, "电网");  
                renderer.addXTextLabel(7, "通信");  
                renderer.addXTextLabel(8, "宽带");  
                renderer.addXTextLabel(9, "专网");  
                renderer.addXTextLabel(11, "轨交");
                renderer.addXTextLabel(12, "电网");  
                renderer.addXTextLabel(13, "通信");  
                renderer.addXTextLabel(14, "宽带");  
                renderer.addXTextLabel(15, "专网");  
                renderer.addXTextLabel(16, "轨交");
                renderer.addXTextLabel(17, "电网");  
                renderer.addXTextLabel(18, "通信");  
                renderer.addXTextLabel(19, "宽带");  
                renderer.addXTextLabel(20, "专网");  
                renderer.addXTextLabel(21, "轨交");
                
                    SimpleSeriesRenderer sr = new SimpleSeriesRenderer();   
                sr.setColor(Color.argb(255, 75, 178, 100));  // 设置每条柱子的颜色  
                sr.setChartValuesSpacing(10);
                renderer.setBarSpacing(1f);            // 柱子间宽度  
                renderer.addSeriesRenderer(sr);
                renderer.getSeriesRendererAt(0).setDisplayChartValues(true);  // 设置每个柱子上是否显示数值  ,此方法用在addSeriesRenderer方法后,要不然数组越界
//                renderer.setDisplayChartValues(true);    //设置是否在柱体上方显示值
                renderer.setChartValuesTextSize(15f);    //设置柱体上方显示值字体的大小,此方法用在addSeriesRenderer方法后,要不然没效果
               
                renderer.setXLabels(0);                  // X轴的近似坐标数  (这样不显示横坐标)   
                renderer.setYLabels(6);                  // Y轴的近似坐标数  
//               
                renderer.setXLabelsAlign(Align.CENTER);    // 刻度线与X轴坐标文字居中对齐  
                renderer.setYLabelsAlign(Align.RIGHT);    // Y轴与Y轴坐标文字右对齐  
               
                renderer.setLabelsTextSize(20);          //设置坐标轴 值的文字大小
                renderer.setAxisTitleTextSize(20);       // 设置坐标轴标题的字体大小  
                    renderer.setShowGridX(true);            //显示垂直于y轴的网格线
                    renderer.setLegendHeight(45);           
                    renderer.setZoomEnabled(false, false);  //设置是否能放大
                renderer.setPanEnabled(true, false);    // 允许左右拖动,但不允许上下拖动.  
                renderer.setYAxisAlign(Align.LEFT, 0);
                renderer.setMargins(new int[] {40, 50, 10, 0});   //图表内容的边距 上、左、下、右
                return renderer;  
            }  
            /**图表通用属性设置
                 * @param renderer
                 * @param title 图表的标题
                 * @param xTitle x轴的标题
                 * @param yTitle y轴的标题
                 * @param xMin  X轴最小值
                 * @param xMax  X轴最大值
                 * @param yMin  y轴最小值
                 * @param yMax  y轴最大值
                 * @param axesColor  坐标轴颜色
                 * @param labelsColor x轴,y轴 标题的颜色
                 */
                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);
                }
}
复制代码
二、布局文件activity_main.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="none" >
                <LinearLayout
                    android:layout_width="match_parent"
                     android:orientation="vertical"  
                    android:layout_height="match_parent"
                    android:padding="0dp">
             <TextView
          android:layout_width="wrap_content"
          android:layout_height="50dp"
          android:text="aadssd"
          />               
                 <!--   <ListView
                android:id="@+id/list"
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                
        ></ListView> -->
   
           <LinearLayout
                 android:layout_width="match_parent"
                         android:orientation="vertical"
                         android:layout_height="500dp">
             <LinearLayout
                                 android:id="@+id/barchart"
                                 android:layout_width="match_parent"
                                 android:orientation="vertical"
                                 android:layout_height="250dp" />  
                                 <View
                                     android:layout_height="2dp"
                                     android:layout_width="match_parent"
                                     android:background="@android:color/darker_gray"/>
             <LinearLayout
                                 android:id="@+id/linechart"
                                 android:layout_width="match_parent"
                                 android:orientation="vertical"
                                 android:layout_height="250dp" />
           </LinearLayout>
                   <TextView
          android:layout_width="wrap_content"
          android:layout_height="50dp"
          android:text="aadssd" />
             <TextView
          android:layout_width="wrap_content"
          android:layout_height="50dp"
          android:text="aadssd"/>
          <TextView
          android:layout_width="wrap_content"
          android:layout_height="50dp"
          android:text="aadssd" />   
           <TextView
          android:layout_width="wrap_content"
          android:layout_height="50dp"
          android:text="aadssd"/>
             <TextView
          android:layout_width="wrap_content"
          android:layout_height="50dp"
          android:text="aadssd"/>
             <TextView
          android:layout_width="wrap_content"
          android:layout_height="50dp"
          android:text="aadssd" />
         
        </LinearLayout>
</ScrollView>
复制代码
如果用listView,则item 布局layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="vertical"
    >
<LinearLayout
    android:id="@+id/root_item"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
复制代码
简单吧。。。。。。。



so cool

不错,很好的例子

demo呢
           

hxm 发表于 2015-1-10 11:37
demo呢
你新建一个demo,然后把代码复制一下就行,,布局放到布局,

请问怎么限制他的缩放倍数 比如我想限制他的x轴最多放大5倍

上一篇文章      下一篇文章      查看所有文章
2015-01-21 10:58:20  
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-23 17:45:27
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  Android开发资料网