Android 柱形图

柱形图 用的是AChartEngine

需要引用achartengine-1.0.0.jar包。下载地址:http://download.csdn.net/detail/yaohucaizi/5128672。具体代码如下:

public class XYMultipleActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xymultiple);

        //初始数据
           String[] titles = new String[] { "2008", "2007" };
            List<double[]> values = new ArrayList<double[]>();
            values.add(new double[] { 14230, 12300, 14240, 15244, 15900, 19200, 22030, 21200, 19500, 15500, 12600, 14000 });
            values.add(new double[] { 5230, 7300, 9240, 10540, 7900, 9200, 12030, 11200, 9500, 10500, 11600, 13500 });
            int[] colors = new int[] { Color.BLUE, Color.CYAN };

        //图形风格
            XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
            setChartSettings(renderer, "Monthly sales in the last 2 years", "Month", "Units sold",
                    0.5, 12.5, 0, 24000, Color.GRAY, Color.LTGRAY);
            renderer.getSeriesRendererAt(0).setDisplayChartValues(true);//设置是否在柱体上方显示值
            renderer.getSeriesRendererAt(1).setDisplayChartValues(true);
            renderer.setXLabels(12);//设置X轴显示的刻度标签的个数
            renderer.setYLabels(10);//设置Y轴显示的刻度标签的个数
            renderer.setXLabelsAlign(Align.LEFT);//设置刻度线与X轴之间的相对位置关系
            renderer.setYLabelsAlign(Align.LEFT);//设置刻度线与Y轴之间的相对位置关系
            renderer.setPanEnabled(true, false);
            renderer.setZoomEnabled(false);
            renderer.setZoomRate(1.1f);//放大倍数
            renderer.setBarSpacing(0.5f);//两柱形间的距离

            View view = ChartFactory.getBarChartView(this, buildBarDataset(titles, values), renderer, Type.DEFAULT); //Type.STACKED
            view.setBackgroundColor(Color.BLACK);
            setContentView(view);
    }

     protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values) {
            XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
            int length = titles.length;
            for (int i = 0; i < length; i++) {
                CategorySeries series = new CategorySeries(titles[i]);
                double[] v = values.get(i);
                int seriesLength = v.length;
                for (int k = 0; k < seriesLength; k++) {
                    series.add(v[k]);
                }
                dataset.addSeries(series.toXYSeries());
            }
            return dataset;
        }

        protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
            XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
            renderer.setAxisTitleTextSize(16);// 设置坐标轴标题文本大小
            renderer.setChartTitleTextSize(20);// 设置图表标题文本大小
            renderer.setLabelsTextSize(15);// 设置轴标签文本大小
            renderer.setLegendTextSize(15); // 设置图例文本大小
            int length = colors.length;
            for (int i = 0; i < length; i++) {
                SimpleSeriesRenderer r = new SimpleSeriesRenderer();
                r.setColor(colors[i]);
                renderer.addSeriesRenderer(r);
            }
            return renderer;
        }

        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);//设置X轴名称
            renderer.setYTitle(yTitle);//设置Y轴名称
            renderer.setXAxisMin(xMin);//设置X轴的最小值
            renderer.setXAxisMax(xMax);//设置X轴的最大值
            renderer.setYAxisMin(yMin);//设置Y轴的最小值
            renderer.setYAxisMax(yMax);//设置Y轴的最大值
            renderer.setAxesColor(axesColor);//设置坐标轴颜色
            renderer.setLabelsColor(labelsColor);
        }

}

柱形图的主要风格设置:

1.    修改背景色或设置背景图片
背景色设置需要设置两项:setMarginsColor(设置四边颜色)以及setBackgroundColor(设置中间背景色)
设置背景图片:
        http://blog.csdn.net/kmyhy/article/details/6590294
2.    setAxisTitleTextSize(16);// 设置坐标轴标题文本大小
3.    setChartTitleTextSize(20); // 设置图表标题文本大小
4.    setLabelsTextSize(15); // 设置轴标签文本大小
5.    setLegendTextSize(15); // 设置图例文本大小
6.    renderer.setChartTitle( "个人收支表");//设置柱图名称
7.    renderer.setXTitle( "名单" );//设置X轴名称
8.    renderer.setYTitle( "金额" );//设置Y轴名称
9.    renderer.setXAxisMin(0.5);//设置X轴的最小值为0.5
10.  renderer.setXAxisMax(5.5);//设置X轴的最大值为5
11.  renderer.setYAxisMin(0);//设置Y轴的最小值为0
12.  renderer.setYAxisMax(500);//设置Y轴最大值为500
13.  renderer.setDisplayChartValues(true);//设置是否在柱体上方显示值
14.  renderer.setShowGrid(true);//设置是否在图表中显示网格
15.  renderer.setXLabels(0);//设置X轴显示的刻度标签的个数
16.  如果想要在X轴显示自定义的标签,那么首先要设置renderer.setXLabels(0);其次我们要renderer.addTextLabel()循环添加
17.  renderer.setXLabelsAlign(Align.RIGHT);//设置刻度线与X轴之间的相对位置关系
18.  renderer.setYLabelsAlign(Align.RIGHT);//设置刻度线与Y轴之间的相对位置关系
19.  renderer.setZoomButtonsVisible(true);//设置可以缩放
20.  renderer.setPanLimits(newdouble[] { 0, 20, 0, 140 });//设置拉动的范围
21.  renderer.setZoomLimits(newdouble[] { 0.5, 20, 1, 150 });//设置缩放的范围
22.  renderer.setRange(newdouble[]{0d, 5d, 0d, 100d}); //设置chart的视图范围
23.  renderer.setFitLegend(true);// 调整合适的位置
24.  renderer.setClickEnabled(true)//设置是否可以滑动及放大缩小;
25.  Dataset和Render参数介绍:
       http://blog.csdn.net/lk_blog/article/details/7645661

26.ChartView.repaint();是重新绘图的命令
27.关于AChartEngine的点击事件,双击事件,滑动事件均可以用自定义事件解决,但是需要注意的是先设置renderer.setClickEnabled(false);
28.若是添加图形后变形,可以设置 renderer.setInScroll(true);
29.renderer.setGridColor();//设置网格颜色
30.renderer.setAxesColor();//设置坐标轴颜色
时间: 2024-08-26 11:15:47

Android 柱形图的相关文章

Android柱形图 绘制

一直在维护www.halloandroid.com我的个人博客网站,发现漏了一篇没发在上面,补回来. 上次写了一篇有关自定义折线图的文章,今天写一篇关于柱形图的文章,因为看了网上一位阿拉丁神灯大神的文章,所以自己也想动手写一个,熟练和学习一下自定义View.话不多说,开始撸! 整体的思路: 画柱状图 –>画竖线 –>画顶部横线 –>画文字 自定义View四步骤走起: 还是我们自定View的那几个步骤: 1.自定义View的属性 2.在View的构造方法中获得我们自定义的属性 [ 3.重写

Android开发之自定义View专题(一):自定义柱形图

博主之前做的项目中,需要用到报表功能,之前在网上百度谷歌各种结果,没有一个是能够满足博主的老板的需求的,无奈之前博主只好自己去研究.终于研究出了一个不错的结果.先上效果图: 这是博主的一个项目的一个报表.老板要求可以点击左侧的月份进行月份比较,也可以点击选择月份,右边柱形图条状是可以响应点击事件的,并且可以左右滑动切换月份,如果柱形图内容过长超出界面,也是可以左右滑动查看未显示全的内容的.这里只讲柱形图的生成,其他界面效果博主就不讲解了.实际效果和这样有点差异,但不大,主要是实际效果在柱形图的顶

Android自定义view之绘制实用型的柱形图和折线图

概述: 前几天突然需要做两种图表--柱形图.折线图,于是第一反应是先看看网上有没有现成的,结果有是有,但都不是我想要的,而且大多数不是用纯android代码完成,HTML5似乎完成这类工作要容易得多,但是我本人并不会HTML5,只能黯然神伤,掩面流泪,最终只能自己敲代码了. **知识点:**android自定义view.图形图像.Fragment.MVC模式. Demo 界面是模仿红圈营销搭建的 折线图: 代码,注释很详细,直接看代码就行了: public class LineChartView

Android自定义控件系列四:绘制实用型的柱形图和折线图

概述: 前几天突然需要做两种图表--柱形图.折线图,于是第一反应是先看看网上有没有现成的,结果有是有,但都不是想要的,而且大多数不是用纯android代码完成,不过HTML5似乎完成这类工作要容易得多,单是非我们所擅长. **知识点:**android自定义view.图形图像.Fragment.MVC模式. Demo 界面是模仿红圈营销搭建的 折线图:  代码,注释很详细,直接看代码就行了: 001.public class LineChartView extends View { 002. 0

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

[转]Android开源项目分类汇总

我喜欢收集源码,如今这个时代,我觉得我们要做的不是做前人做过的事,而是学习他们的经验然后在这基础上创新做出更伟大的事. 转自https://github.com/Trinea/android-open-project Android开源项目第一篇——个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView

GitHub上史上最全的Android开源项目分类汇总

今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫的界面特效设计.个性化控件.工具库.优秀的Android开源项目.开发测试工具.优秀个人和团体等.可以这样说,每一位Andorid开发人员都能从中找到一个或多个适用自己项目的解决方案,消化吸收并加以利用,可以为自己的APP增色不少.文章最后还列出了部分国外著名Android开发者的信息,包括GitHub地址

android获取某应用的帧数据

android获取某应用的帧数据: 说明: (打开手机 开发者选项-GPU显示配置文件(显示于 adb shell dumpsys gfxinfo)勾上,只有4.1以上支持) 在android4.1中,谷歌提供了一个工具来,叫做" GPU呈现模式分析(Profile GPU rendering)", 在开启这个功能后,系统就会记录保留每个界面最后128帧图像绘制的相关时间信息 开始操作: 命令行 adb shell dumpsys gfxinfo com.taobao.mobile.d

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签