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
生肖星座 三丰软件 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 美图 中国文化英文版 多播 租车 短信
2017-7-26 20:37:50
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  Android开发资料网