夜色丶如歌 2015-01-16 09:50 采纳率: 0%
浏览 2328

Android中AChartEngine属性

我写的柱状图,传入的值是float类型的,但是在柱顶显示的时候,显示的数字后面跟好多位的有效数字,比如4.2131241214这样的,如何让他只显示限定位数的啊,求大神指教啊

  • 写回答

4条回答 默认 最新

  • WorldMobile 2015-01-16 16:17
    关注

    关于achartengine的使用一些小经验 - Mentos

    最近项目上要使用图表,便开始在网上找各种图表架包,好看的都是收费的,最后还是决定用google的achartengine.achartengine使用起来还算好,就是修改样式很烦.下面就分享下开发经验吧.
    所有的chart都分两块,一块是Renderer(如XYMultipleSeriesRenderer,我的理解是,这个renderer为视图render的模板,就是你想用什么图标,一个图图表基本分2层,这个是最下面一层),一块是Dataset(如XYMultipleSeriesDataset,用于对视图数值的处理).
    这边我就拿折线图举例吧.
    首先需要
    XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();//创建你需要的图表最下面的图层
    XYSeriesRenderer seriesRenderer = new XYSeriesRenderer();//创建你需要在图层上显示的具体内容的图层
    mRenderer.addSeriesRenderer(seriesRenderer);//添加进去
    XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset()//创建数据层
    XYSeries series = new XYSeries("标题");//创建具体的数据层
    series .add(x, y);//添加数据,一般都是for循环数据不断操作这一步添加的
    mDataset.addSeries(series);
    然后调用ChartFactory.getLineChartIntent(context, mDataset, mRenderer),得到一个Intent类型的intent,startActivity(intent)就能得到图表了.这边需要在AndroidManifest.xml加上.这边是跳界面查看图表,是全屏的.ChartFactory可以得到很多视图,ChartFactory.getBarChartIntent(context, dataset, renderer, type, activityTitle)就可以得到一个柱状图.以此类推啊.
    有时候项目中开发,需要在界面的某一块展示视图,这时候我们可以通过 ChartFactory.getLineChartView(context, mDataset, mRenderer)得到一个GraphicalView类型的视图.(这边就不要需要在AndroidManifest.xml加上.)
    其实图表的使用流程就是这样.但要做一个自己想要的视图,就需要设置mRenderer 的样式,seriesRenderer 的样式.
    mRenderer样式设置:
    mRenderer.setShowAxes(false);//设置是否需要显示坐标轴
    mRenderer.setXAxisMin(1.3d);//设置X轴最小值
    mRenderer.setXAxisMax(10d);//设置X轴最大值
    mRenderer.setYAxisMin(0d); //设置Y轴最小值
    mRenderer.setYAxisMax(maxY + maxY / 6); // 设置Y轴最大值
    mRenderer.setChartTitleTextSize(0);//设置图表标题字体大小,我这边设置0是把标题隐藏掉
    mRenderer.setYLabels(7);//设置Y轴标签数
    mRenderer.setExternalZoomEnabled(true);//设置是否可以缩放
    mRenderer.setZoomInLimitY(maxY + maxY / 6);//设置Y轴最大缩放限
    mRenderer.setZoomInLimitX(5);//设置X轴最大缩放限
    mRenderer.setPanEnabled(true, false);//设置滑动,这边是横向可以滑动,竖向不可滑动
    mRenderer.setXLabels(XLabel.size() - 1);//设置X标签数量
    mRenderer.setXLabelsPadding(200);//设置标签的间距
    mRenderer.setXLabelsAngle(-45f);//设置标签倾斜度
    for (int i = 0; i < XLabel.size(); i++)
    {
    mRenderer.addXTextLabel(i, XLabel.get(i));//这边是自定义自己的标签,显示自己想要的X轴的标签,需要注意的是需要setXLabels(0)放在标签重叠(就是自定义的标签与图表默认的标签)
    }

    mRenderer.setPanLimits(new double[] {0, (XLabel.size()) * 2, 0, maxY});//设置滑动范围,这边我很好奇他的单位,一直有点小问题
    mRenderer.setAxesColor(context.getResources().getColor(R.color.text_hui));//设置数轴的颜色
    mRenderer.setGridColor(context.getResources().getColor(R.color.text_hui999999)); //设置网格的颜色

    mRenderer.setShowGrid(true); /设置是否需要显示网格
    mRenderer.setYTitle(label);//设置Y轴标题
    mRenderer.setLabelsColor(Color.BLACK);//设置标签颜色
    mRenderer.setYLabelsAlign(Align.LEFT, 0);//设置标签居Y轴的方向
    mRenderer.setAxisTitleTextSize(20);
    mRenderer.setYLabelsColor(0, context.getResources().getColor(R.color.text_hui)); mRenderer.setLabelsTextSize(14);
    mRenderer.setZoomLimits(new double[] {0, maxX * 5, 0, maxY + maxY / 6});//设置缩放限制,setZoomInLimitY等一样
    mRenderer.setXLabelsColor(context.getResources().getColor(R.color.text_hui));
    mRenderer.setMarginsColor(context.getResources().getColor(R.color.chart_bg));//设置画布距数轴之间的颜色
    mRenderer.setZoomRate(1.4f);//放大几倍
    seriesRenderer设置部分:
    seriesRenderer.setFillBelowLine(false); // 设置折线下方是否填充
    seriesRenderer.setFillBelowLineColor(context.getResources().getColor(R.color.chart_content_color));//填充色
    seriesRenderer.setPointStyle(PointStyle.CIRCLE); /折线点的样式
    seriesRenderer.setPointStrokeWidth(5f);//折线点的大小
    seriesRenderer.setDisplayChartValues(true);//设置显示折线的点对应的值
    seriesRenderer.setChartValuesTextSize(16);
    seriesRenderer.setColor(Color.BLUE);
    seriesRenderer.setChartValuesSpacing(7);
    seriesRenderer.setLineWidth(3.0f)//折线宽度
    seriesRenderer.setDisplayChartValuesDistance(5);///折线点的值距离折线点的距离
    seriesRenderer.setChartValuesTextAlign(Align.RIGHT);
    DecimalFormat df1 = new DecimalFormat(".00");
    seriesRenderer.setChartValuesFormat(df1);//设置折线点的值的格式,显示小数点后2位
    大体就是这样,这边举例的是折线图,其实柱状图也是这样的流程.可以参考demo,样式我只能提供这么多了.一句话,不管什么视图,流程都是这个流程.
    如果有啥不对的,欢迎指出,不能把错的分享给别人了,嘿嘿.

    评论

报告相同问题?

悬赏问题

  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥85 maple软件,solve求反函数,出现rootof怎么办?
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿