AChartEngine

AChartEngine是Android平台上的图表绘制引擎,提供了包括折线图、柱状图、饼状图等图表显示。它的官网地址是http://achartengine.org/,源码下载页面是http://code.google.com/p/achartengine/,当然谷歌失火,殃及AChartEngine,大陆访问不了这个下载页面,若要下载最新版的jar包可前往下面这个地址:
http://repository-achartengine.forge.cloudbees.com/snapshot/org/achartengine/achartengine/


使用AChartEngine要在代码中设置许多属性,无法一一说明,下面还是直接上个代码例子(成绩统计图):
import java.util.ArrayList;import java.util.List;import org.achartengine.ChartFactory;import org.achartengine.chart.PointStyle;import org.achartengine.model.XYMultipleSeriesDataset;import org.achartengine.model.XYSeries;import org.achartengine.renderer.XYMultipleSeriesRenderer;import org.achartengine.renderer.XYSeriesRenderer;import com.example.mastersec.R;import android.content.Context;import android.content.Intent;import android.graphics.Color;import android.graphics.Paint.Align;public class ScoreChart extends AbstractDemoChart {@Overridepublic Intent execute(Context context) {String[] titles = new String[] { "成绩分布曲线" };List<double[]> x = new ArrayList<double[]>();for (int i = 0; i < titles.length; i++) {x.add(new double[] { 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 });}List<double[]> values = new ArrayList<double[]>();values.add(new double[] { 2, 0, 1, 2, 3, 3, 4, 3, 1, 3, 4, 5, 3, 7, 8, 5, 3, 2, 0, 0 });int[] colors = new int[] { 0xff2200 - 16777216 };PointStyle[] styles = new PointStyle[] { PointStyle.POINT };XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(1);setRenderer(renderer, colors, styles);int length = renderer.getSeriesRendererCount();for (int i = 0; i < length; i++) {XYSeriesRenderer r = (XYSeriesRenderer) renderer.getSeriesRendererAt(i);r.setLineWidth(1f);}renderer.setChartTitle("分布曲线"); // 图表标题renderer.setXTitle("分数段"); //  // X轴标题renderer.setYTitle("人数"); // Y轴标题renderer.setXAxisMin(0); // X轴最小标尺renderer.setXAxisMax(120); // X轴最大标尺renderer.setYAxisMin(0); // Y轴最小标尺renderer.setYAxisMax(11); // Y轴最大标尺renderer.setXLabels(0); // X轴标记数renderer.setYLabels(11); // Y轴标记数renderer.setAxesColor(Color.BLACK); // 坐标轴颜色renderer.setLabelsColor(Color.BLACK); // 主标题、X轴标题、Y轴标题、annoation颜色renderer.addXTextLabel(0, "0"); // 添加X轴标记文本renderer.addXTextLabel(10, "10");renderer.addXTextLabel(20, "20");renderer.addXTextLabel(30, "30");renderer.addXTextLabel(40, "40");renderer.addXTextLabel(50, "50");renderer.addXTextLabel(60, "60");renderer.addXTextLabel(70, "70");renderer.addXTextLabel(80, "80");renderer.addXTextLabel(90, "90");renderer.addXTextLabel(100, "100");renderer.addXTextLabel(115, "分数");renderer.addYTextLabel(11, "人数"); // 添加Y轴标记文本renderer.setAxisTitleTextSize(20); // 坐标轴标题字体大小:16renderer.setChartTitleTextSize(context.getResources().getDimension(R.dimen.chart_titile_size)); // 图表标题字体大小:20renderer.setLabelsTextSize(context.getResources().getDimension(R.dimen.chart_label_size)); // 轴标签字体大小:15renderer.setPointSize(35f); // 点的大小renderer.setLegendHeight((int) context.getResources().getDimension(R.dimen.chart_legend_height)); // 底部高度renderer.setLegendTextSize(context.getResources().getDimension(R.dimen.chart_legend_size)); // 底部文字大小,包括annoation大小renderer.setMargins(new int[] {(int) context.getResources().getDimension(R.dimen.chart_top_margin),(int) context.getResources().getDimension(R.dimen.chart_left_margin),(int) context.getResources().getDimension(R.dimen.chart_bottom_margin),(int) context.getResources().getDimension(R.dimen.chart_right_margin) }); // 上间距,左间距,下间距,右间距renderer.setGridColor(Color.rgb(100, 100, 100)); // renderer.setShowGridX(true); // 是否显示X轴网格renderer.setShowGridY(true); // 是否显示Y轴网格renderer.setXLabelsAlign(Align.LEFT); // X轴标记的对齐方式renderer.setYLabelsAlign(Align.RIGHT); // Y轴标记的对齐方式renderer.setZoomButtonsVisible(false); // 是否显示缩放按钮renderer.setPanEnabled(false); // 是否允许拖动renderer.setMarginsColor(Color.rgb(200, 255, 200)); // 空白处颜色renderer.setApplyBackgroundColor(false); // 是否应用背景色renderer.setXLabelsColor(Color.rgb(0, 100, 255)); // X轴标记颜色renderer.setYLabelsColor(0, Color.rgb(255, 30, 30)); // Y轴标记颜色XYMultipleSeriesDataset dataset = buildDataset(titles, x, values);XYSeries series = dataset.getSeriesAt(0);int offset = 4;series.addAnnotation("●", 72 - offset, 7 + (8 - 7 + 1) / 5 * 2); // 在指定位置添加注解Intent intent = ChartFactory.getCubicLineChartIntent(context, dataset,renderer, 0.3f,context.getResources().getString(R.string.app_name));return intent;}@Overridepublic String getName() {return null;}@Overridepublic String getDesc() {return null;}}


调用图表页面的代码如下:
ScoreChart scoreChart = new ScoreChart();Intent intent = scoreChart.execute(mContext);mContext.startActivity(intent);


下面是示例代码的图表截图:




MPAndroidChart

MPAndroidChart是又一款国外的图表绘制控件库,除了基本的图表显示,还支持图表展开的动画效果。不过正因为提供了动画效果,所以为了兼容低版本的Android系统,工程中还需引用nineoldandroids的jar包。即我们的工程要同时加入nineoldandroids-2.4.0.jar和mpandroidchartlibrary-2.2.4.1.jar。


MPAndroidChart源码在github的地址是https://github.com/PhilJay/MPAndroidChart,具体用法可参考github上的demo,这里不再赘述。下面是MPAndroidChart的一个柱状图动画截图:




XCL-Charts

XCL-Charts是国人写的图表控件库,它的图表比较符合我们的习惯,也支持动画效果。XCL-Charts源码在github的地址是https://github.com/xcltapestry/XCL-Charts,jar包名为xcl-charts-2.4.jar,具体用法可参考github上的demo。下面是XCL-Charts的一个饼状图截图:







点此查看Android开发笔记的完整目录

更多相关文章

  1. android 通知 和 通知的声音 (附源码)
  2. Android中intent启动Activity中intent.setFlags()的作用
  3. Android中全屏 及 去掉标题栏
  4. Android(安卓)标题栏添加常驻图标 Notification
  5. MPAndroidChart开源图表库(一)之饼状图
  6. Android利用activity-alias动态更新图标icon,标题label
  7. Android定制日历,支持周月切换,日期标记,农历显示,节假日
  8. Android获取屏幕高度、状态栏高度、标题栏高度
  9. Material Design之TabLayout的用法(标题栏滑动+ViewPager)

随机推荐

  1. Android——填坑android studio2.3.3升级
  2. Android系统启动研究1
  3. 轻松搞定 android MVP 架构、okHttp 网络
  4. Android(安卓)应用语言设置的实现
  5. 后台应用不应做Android待机电池杀手
  6. Android和四大主流手机操作系统的区别联
  7. Android(安卓)PopupWindow的使用技巧
  8. Google Docs for Android 应用改进平板使
  9. 【转】 Mac环境下Android APK包反编译详
  10. 大话企业级android读书笔记(一)