Android Studio利用AChartEngine制作饼图的方法

前言:

众所周知,大家在很多项目中都会使用到图表,具体表现形式为饼图、折线图、柱状图等,但是网上有很多图表架包都是需要收费的,而Google的AChartEngine是免费的,于是AChartEngine就变成了首选方案,接下来就介绍一下AChartEngine在项目中的具体使用方法。下面话不多说了,来一起看看详细的介绍吧

AChartEngine简介:

AChartEngine是一款基于Android的图表绘制引擎;

AChartEngine支持绘制饼图、柱状图、折线图、散点图等;

AChartEngine绘制的图表都支持水平(默认)或垂直方式展示,并且支持许多其他的自定义功能;

所有的图表都可以建立为一个view,也可以建立为一个用于启动activity的intent。

AChartEngine的运行机制:

每个图表都需要一个数据集 (Dataset) 和 渲染器集合 (Renderer);

数据集:由许多数据组成;

渲染器:由不同的子渲染器组成;

获取Activity 或 组件 : 图表工厂 (ChartFactory) 通过调用 数据集 (Dataset) 和 渲染器集合 (Renderer) 可以生成带图表的 GraphicalView 或者 GraphicalActivity。

效果图:

具体步骤:

1、下载AChartEngine库:http://code.google.com/p/achartengine/downloads/list

2、将下载的jar包引入到项目中(具体方法可参考我的另一篇博文:Android Studio 在项目中引用第三方jar包)

3、构建数据集(Dataset),CategorySeries.add(String category,double value)

double[] values = {500.00, 800.00, 1000.00, 900.00};
double sumVal = values[0] + values[1] + values[2] + values[3];

CategorySeries dataset = buildCategoryDataset("图文报表", values);

protected CategorySeries buildCategoryDataset(String title, double[] values){
 CategorySeries series = new CategorySeries(title);
 series.add("房租:"+values[0], values[0]/sumVal);
 series.add("伙食费:"+values[1], values[1]/sumVal);
 series.add("生活费:"+values[2], values[2]/sumVal);
 series.add("其它:"+values[3], values[3]/sumVal);
 return series;
}

4、构建渲染器(Renderer)

饼图的渲染器:

private DefaultRenderer getPieRenderer(){
 DefaultRenderer renderer = new DefaultRenderer();
 renderer.setZoomButtonsVisible(true);//设置显示放大放小缩小按钮
 renderer.setZoomEnabled(true);//设置允许放大放小
 //设置各个类别分别对应的颜色
 SimpleSeriesRenderer yellowRenderer = new SimpleSeriesRenderer();
 yellowRenderer.setColor(Color.YELLOW);
 SimpleSeriesRenderer blueRenderer = new SimpleSeriesRenderer();
 blueRenderer.setColor(Color.BLUE);
 SimpleSeriesRenderer redRenderer = new SimpleSeriesRenderer();
 redRenderer.setColor(Color.RED);
 renderer.addSeriesRenderer(yellowRenderer);
 renderer.addSeriesRenderer(blueRenderer);
 renderer.addSeriesRenderer(redRenderer);

 renderer.setLabelsTextSize(30);//设置坐标字号
 renderer.setLegendTextSize(50);//设置图例字号
 renderer.setApplyBackgroundColor(true);//设置是否应用背景色
 renderer.setBackgroundColor(Color.BLACK);

 return renderer;
}

对应的颜色:

int[] colors = {Color.BLUE, Color.GREEN, Color.MAGENTA, Color.RED};

DefaultRenderer renderer = buildCategoryRenderer(colors);

protected DefaultRenderer buildCategoryRenderer(int[] colors){
 DefaultRenderer renderer = new DefaultRenderer();
 renderer.setLegendTextSize(35);//设置左下角标注文字的大小
 renderer.setLabelsTextSize(25);//饼图上标记文字的字体大小
 renderer.setLabelsColor(Color.BLACK);//饼图上标记文字的颜色
 renderer.setPanEnabled(false);
 renderer.setDisplayValues(true);//显示数据

 for(int color : colors){
 SimpleSeriesRenderer r = new SimpleSeriesRenderer();
 r.setColor(color);
 //设置百分比
 r.setChartValuesFormat(NumberFormat.getPercentInstance());
 renderer.addSeriesRenderer(r);
 }
 return renderer;
}

5、生成饼图

有两种方式:调用ChartFactory.getPieChartIntent()或者 getPieChartView()

区别在于:

一个返回Intent,这个intent可以启动一个特定的activity;

另一个返回GraphicalView,这个GraphicalView可以灵活设置,它可以仅作为一部分显示在任何activity上

用ChartFactory.getPieChartIntent()方法生成饼图:

(备注:使用该方法的话,则需要在AndroidManifest.xml中注册org.achartengine.GraphicalActivity,添加位置如下图:)

用ChartFactory.getPieChartView()方法生成饼图:

先在布局文件中创建控件:

<LinearLayout
 android:id="@+id/ll_expense_piechart"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerHorizontal="true"
 android:layout_centerVertical="true"
 android:orientation="vertical">
</LinearLayout>

Activity文件中生成饼图:

private LinearLayout ll_expense_piechart;
private GraphicalView graphicalView;

private void initPieChart(View v){
 ll_expense_piechart = (LinearLayout) v.findViewById(R.id.ll_expense_piechart);
 ll_expense_piechart.removeAllViews();

 graphicalView = ChartFactory.getPieChartView(getContext()
  ,dataset, renderer);//饼状图
 graphicalView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

 ll_expense_piechart.addView(graphicalView);
}

Renderer常用的设置:

addSeriesRenderer(SimpleSeriesRenderer renderer)增加一个renderer到multiple renderer中

setApplyBackgroundColor(boolean apply) 设置是否应用背景色

setBackgroundColor(int color) 设置背景色

setChartTitle(java.lang.String title)设置图表的标题

setChartTitleTextSize(float textSize)设置图表标题字号

setClickEnabled(boolean enabled) 设置是否允许单击事件

setFitLegend(boolean fit) 设置图例字号自适应

setLegendHeight(int height)设置图例高度(单位: pixels)

setLegendTextSize(float textSize) 设置图例字号

setPanEnabled(boolean enabled) 设置是否允许拖动

setShowLegend(boolean showLegend) 设置是否显示图例

setTextTypeface(java.lang.String typefaceName, int style) 设置字体名和类型

setZoomButtonsVisible(boolean visible) 设置是否显示放大缩小按钮

setZoomEnabled(boolean enabled) 设置是否允许放大和缩小

setZoomRate(float rate) 设置放大缩小的倍率

setDisplayValues(boolean enabled) 设置是否显示数据

setChartValuesFormat(NumberFormat format) 设置百分比

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Android Studio 1.2版安装设置图文教程

    这两天Google更新了Android Studio 1.2正式版,新版本的设置界面大变面,设置条目较旧版本进行了归类,不像以前那样列表长长的了. 趁着安装新版本的机会,把常用的设置记录一下,放到博客里面,以作备忘. 下载 正式版的Android Studio和SDK可以在下面的链接进行下载 http://developer.android.com/sdk/index.html 关于下载,我建议下载绿色版的Android Studio和SDK,别下安装包版捆绑版的,这样如果有哪个出了问题要重装,

  • 图解Windows环境下Android Studio安装和使用教程

    鉴于谷歌最新推出的Android Studio备受开发者的推崇,所以也跟着体验一下. 一.介绍Android Studio  Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试. 最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环

  • 详解升级Android Studio3.0时遇到的几个问题

    今天收到了Android Studio3.0更新推送,在升级过程中遇到几个问题,在这里把问题和解决方法记录下,方便要升级的童鞋.如果还有童鞋遇到不同的问题,也可以评论下我做下记录 1.gradle打包,自定义apk名称代码报错(Cannot set the value of read-only property 'outputFile' ) 报错 Error:(56, 0) Cannot set the value of read-only property 'outputFile' for

  • Android Studio使用小技巧:自定义Logcat

    我们都知道Logcat是我们Android开发调试最常用的一个工具,但是Android Studio默认的Logcat调试的颜色是一样的,我们不好区分verbose.debug.error等分类信息,今天就来教大家自定义Logcat的提示信息. 打开Preference->Editor->Colors & Fonts->Android Logcat(或者搜索logcat),如果我们默认选择的是Darcula主题会看到如下界面: 这个默认的是无法更改,我们可以点击"Sav

  • 浅谈Android Studio3.0更新之路(遇坑必入)

    序言:作为这个世界上走在最前沿的生物"猿",怎么能对新事物一无所知呢,10月26日,随着Android 8.1 Oreo的预览版发布,Android Studio3.0正式版也发布了,作为Android开发的猿们我们应该早就知道谷歌在今年5月的开发者大会上就说了要支持Kotlin语言,所以这次更新一个比较大的点就在于支持Kotlin语言了,下面就跟着LZ的脚步来探索一下AS3.0吧 相信很多人很早就体验过谷歌爸爸放出来的体验版本了,虽然说正式版已经出了,但是很多人也不敢轻易贸然的更新,

  • Android studio 3.0安装配置方法图文教程

    本文为大家分享了Android studio安装与配置,具体内容如下 1.首先下载Android studio安装包,可以从http://www.android-studio.org/,下载最新版本,这里采用3.0版本进行演示,对应安装包为android-studio-ide-171.4408382-windows.exe,安装包大小681 MB,安装包不带SDK 2.下载好该安装包之后,点击进行安装,依次出现以下界面 在这里自己选择程序安装路径 这里Android studio程序安装完毕,但

  • Android Studio使用小技巧:提取方法代码片段

    今天来给大家介绍一个非常有用的Studio Tips,有些时候我们在一个方法内部写了过多的代码,然后想要把一些代码提取出来再放在一个单独的方法里,通常我们的做法是复制粘贴,现在我来教给大家一个非常简洁的方法,先看下gif演示吧: 怎么样很方便吧?操作方法很简单,只需要选中一些代码,然后操作快捷键 Cmd + Option + M 就ok了,Windows是 Ctrl + Alt + M,很简单方便的一个小技巧分享给大家.

  • Android Studio导入第三方类库的方法

    一.导入*.jar包 1.直接copy ①复制*.jar包,粘贴到主工程目录的libs下边 ②右键,将此jar包设置成自己的library ③然后在工程右键的选择项目单击Open Module Settings,在Dependencies中选择添加文件 这样,就表示jar包添加成功了. 打开app目录下的build.gradle 表示添加成功. 2.build.gradle里边添加一句: 复制代码 代码如下: compile fileTree(include: ['*.jar'], dir: '

  • Android Studio利用AChartEngine制作饼图的方法

    前言: 众所周知,大家在很多项目中都会使用到图表,具体表现形式为饼图.折线图.柱状图等,但是网上有很多图表架包都是需要收费的,而Google的AChartEngine是免费的,于是AChartEngine就变成了首选方案,接下来就介绍一下AChartEngine在项目中的具体使用方法.下面话不多说了,来一起看看详细的介绍吧 AChartEngine简介: AChartEngine是一款基于Android的图表绘制引擎: AChartEngine支持绘制饼图.柱状图.折线图.散点图等: AChar

  • Android Studio 利用Splash制作APP启动界面的方法

    最近又开始学习Android studio 了,在制作APP时,都有一个启动的界面,看上去美观且实用(也可以作为以后的广告位← 那怎样制作呢? 第一步:新建Splash 如图,新建一个Empty Activity. 然后将名字改为SplashActivity. 第二步:SplashActivity的内容 如图: 方便起见,我把代码贴出来,代码如下: public class SplashActivity extends Activity { // private final int SPLASH

  • Android studio利用gradle打jar包并混淆的方法详解

    本文主要介绍了Android studio利用gradle打jar包并混淆的方法,下面话不多说,来看看详细的介绍吧. 首先打jar包的配置很简单,使用jar的task,可以参考gradle官方文档,具体代码如下: task buildJar(type: Jar, dependsOn: ['assembleRelease']) { destinationDir = file('build/outputs/jar/') appendix = "" baseName = "&quo

  • 深踩Android Studio 缓存的坑及解决方法

    本文记录的是今天在群里提到的昨天所踩的一个坑,有关 AndroidStudio 缓存的. 先说一下背景. 我负责的一个项目,对一个图表库有外部依赖.这个图表库是我在维护的,由于新功能在开发中,所以我就使用了 SNAPSHOT 版本发布到 OJO(oss.jfrog.org) 上.我在项目中刚更新了依赖,忽然想到还少几个 API,于是发布了 SNAPSHOT 版本. 故事就这样开始了. 这时候回到 AndroidStudio 再去 Sync Project with Gradle Files 肯定

  • android studio使用SQLiteOpenHelper()建立数据库的方法

    在android studio中存储数据有三个方法,分别是: (1)简单存储--SharedPreferences (2)文件存储:内部存储--应用程序私有文件外部存储--SD卡资源文件--只读( RAW .XML) (3)数据库存储--SQLiteDataBase 今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenH elper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功

  • Android studio 利用共享存储进行用户的注册和登录验证功能

      //注册功能 public class MainActivity extends AppCompatActivity { //声明共享存储(全局变量) private SharedPreferences spf; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //

  • Android Studio中使用lambda表达式的方法

    1.module的build.gradle里buildTypes中添加: compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 2.module的build.gradle里defaultConfig中添加: jackOptions.enabled = true 3.注意事项:jack可能会导致中文乱码,所以需要在gradle.proper

  • Android Studio中引入Lambda表达式的方法

    本文介绍的是在Android Studio中引入Lambda表达式的方法,下面话不多说,来看看详细的介绍. 方法如下: 依次点击 [File][Other Settings][Default Project Structure]确保当前项目使用的JDK版本是1.8. 打开项目(Project)的build.gradle,在dependencies节点添加 classpath 'me.tatarka:gradle-retrolambda:3.2.0' 打开项目(Module)的build.grad

  • Android Studio 报错“app:processDebugResources"解决方法

    Android Studio 报错"app:processDebugResources"解决方法 Android Studio项目Build的时候报了这么一个错误: Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Pro

  • Android Studio配置内嵌JDK的方法

    今天发现JDK环境变量没有配置好. 我没有专门去下载java,在下载Android Studio时,会自带内嵌的JDK. 打开File-OtherSettings-DefaultProjectStructure,可看到AS已自动勾选Use embedded JDK,而且是官方推荐的做法. 以下是配置环境变量的操作. java 1.8以后就无需CLASSPATH环境变量了. 我们只需配置JAVA_HOME和PATH即可. JAVA_HOME C:\AndroidStudio\jre (JDK安装目

随机推荐