PS:我们在做安卓程序的时候,免不了会做一些图形,自己可以选择自定义view ,就是用Canvas画,也可以用写好的jar包,就是achartengine.jar,使用jar包的好处就快速绘制图形,不用我们计算坐标等,计算坐标就会和数学结合,通过sin,cos等来计算,遇到3维那就更麻烦了,就像OpenGL一样,空间视角,三维制作,我的博客里也有一些,感兴趣的小火鸡可以看一下,

上效果图:

步骤:

1:首先找到jar包,导入achartengine.jar,放在项目的libs目录下即可,记得要添加一下呦。

下载地址:http://download.csdn.net/download/jjhahage/10114288

2:创建activity_main.xml文件,给view分配一个空间。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="cn.liuzhitong.charttest1_1.MainActivity"> <LinearLayout
android:id="@+id/id_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> </LinearLayout>
</RelativeLayout>

创建MainActivity.java文件。这里先拿出重要代码,后面有总代码。

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
setContentView(R.layout.activity_main);
LinearLayout ll= (LinearLayout) findViewById(R.id.id_layout);
//创建图表,首先要创建数据源和渲染器,然后让一个方法调用即可,
view = ChartFactory.getPieChartView(this,getData(),getRenderer());
ll.addView(view);

2-1:创建这个饼图方法就是getPieChartView(this,数据,渲染器);

数据getData()

 //创建饼图
public CategorySeries getData()
{ cs = new CategorySeries("第一个饼图"); cs.add("黄金",30);
cs.add("铂金",10);
cs.add("黑金",60); return cs;
}

渲染器getRenderer()

public DefaultRenderer getRenderer(){
//创建渲染器,描绘器对象
renderer = new DefaultRenderer(); ssr1 = new SimpleSeriesRenderer();
ssr2 = new SimpleSeriesRenderer();
ssr3 = new SimpleSeriesRenderer();
ssr1.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
ssr2.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
ssr3.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
ssr1.setColor(Color.YELLOW);
ssr2.setColor(Color.CYAN);
ssr3.setColor(Color.BLACK);
renderer.addSeriesRenderer(ssr1);
renderer.addSeriesRenderer(ssr2);
renderer.addSeriesRenderer(ssr3); renderer.setChartTitle("第一个饼图");
renderer.setShowLabels(true);//设置显示标签
renderer.setShowLegend(true);//显示底部说明标签
renderer.setLabelsTextSize(20);//设置标签字体大小,
renderer.setAntialiasing(true);//消失锯齿
renderer.setApplyBackgroundColor(true);//想要添加背景要先申请
renderer.setBackgroundColor(Color.DKGRAY);
renderer.setChartTitleTextSize(30);
renderer.setDisplayValues(true); //显示数据,这个不写就不会显示出百分比。。
renderer.setZoomButtonsVisible(true); //显示缩小放大图标 return renderer;
}

3:创建定时器,定时每秒重画一次


 Timer time=new Timer();

        handler = new Handler() {// 这里的Handler实例将配合下面的Timer实例,完成定时更新图表的功能
public void handleMessage(Message msg) {
if (msg.what == 1) {
init();// 刷新图表具体方法 Handler将此并入主线程
}
// super.handleMessage(msg);
}
};
TimerTask task = new TimerTask() {
public void run() {// 通过消息更新
Log.i("task", " task ok ");
Message message = new Message();
message.what = 1;// 消息定义标志
handler.sendMessage(message);
}
}; time.schedule(task,1,1000);// 执行任务, 一秒一次

注释的代码,可以写也可以不写,写了也不会出错。

 //模拟动态赋值,
    public void init()
{ cs.clear();//清空之前的数据 Random random = new Random();
int R1 = random.nextInt(100);
int R2 = random.nextInt(100);
int R3 = random.nextInt(100);
// 设置种类名称和对应的数值,前面是(key,value)键值对
cs.add("黄金",R1);
cs.add("铂金",R2);
cs.add("黑金",R3);
// renderer = new DefaultRenderer();
// ssr1.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
// ssr2.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
// ssr3.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
// ssr1.setColor(Color.BLACK);
// ssr2.setColor(Color.YELLOW);
// ssr3.setColor(Color.CYAN);
// renderer.addSeriesRenderer(ssr1);
// renderer.addSeriesRenderer(ssr2);
// renderer.addSeriesRenderer(ssr3); //让底部说明标签显示,如果不行,那就只会在初始化的时候显示一次
renderer.setShowLabels(true);//设置显示标签
renderer.setShowLegend(true);//显示底部说明标签
renderer.setLabelsTextSize(20);//设置标签字体大小,
renderer.setAntialiasing(true);//消失锯齿
renderer.setApplyBackgroundColor(true);//想要添加背景要先申请
renderer.setBackgroundColor(Color.DKGRAY);
view.repaint();//重画,不写就不会显示动态变化 }

4:总代码

package cn.liuzhitong.charttest1_1;

import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Window;
import android.widget.LinearLayout; import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.model.CategorySeries;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer; import java.text.NumberFormat;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask; public class MainActivity extends AppCompatActivity { private GraphicalView view;
private CategorySeries cs; public Handler handler;
private DefaultRenderer renderer;
private SimpleSeriesRenderer ssr1;
private SimpleSeriesRenderer ssr2;
private SimpleSeriesRenderer ssr3; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
setContentView(R.layout.activity_main);
LinearLayout ll= (LinearLayout) findViewById(R.id.id_layout);
//创建图表,首先要创建数据源和渲染器,然后让一个方法调用即可,
view = ChartFactory.getPieChartView(this,getData(),getRenderer());
ll.addView(view); Timer time=new Timer(); handler = new Handler() {// 这里的Handler实例将配合下面的Timer实例,完成定时更新图表的功能
public void handleMessage(Message msg) {
if (msg.what == 1) {
init();// 刷新图表具体方法 Handler将此并入主线程
}
// super.handleMessage(msg);
}
};
TimerTask task = new TimerTask() {
public void run() {// 通过消息更新
Log.i("task", " task ok ");
Message message = new Message();
message.what = 1;// 消息定义标志
handler.sendMessage(message);
}
}; time.schedule(task,1,1000);// 执行任务, 一秒一次 } //模拟动态赋值,
public void init()
{ cs.clear();//清空之前的数据 Random random = new Random();
int R1 = random.nextInt(100);
int R2 = random.nextInt(100);
int R3 = random.nextInt(100);
// 设置种类名称和对应的数值,前面是(key,value)键值对
cs.add("黄金",R1);
cs.add("铂金",R2);
cs.add("黑金",R3);
// renderer = new DefaultRenderer();
// ssr1.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
// ssr2.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
// ssr3.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
// ssr1.setColor(Color.BLACK);
// ssr2.setColor(Color.YELLOW);
// ssr3.setColor(Color.CYAN);
// renderer.addSeriesRenderer(ssr1);
// renderer.addSeriesRenderer(ssr2);
// renderer.addSeriesRenderer(ssr3); //让底部说明标签显示,如果不行,那就只会在初始化的时候显示一次
renderer.setShowLabels(true);//设置显示标签
renderer.setShowLegend(true);//显示底部说明标签
renderer.setLabelsTextSize(20);//设置标签字体大小,
renderer.setAntialiasing(true);//消失锯齿
renderer.setApplyBackgroundColor(true);//想要添加背景要先申请
renderer.setBackgroundColor(Color.DKGRAY);
view.repaint();//重画,不写就不会显示动态变化 } //创建饼图
public CategorySeries getData()
{ cs = new CategorySeries("第一个饼图"); cs.add("黄金",30);
cs.add("铂金",10);
cs.add("黑金",60); return cs;
}
//创建渲染器
public DefaultRenderer getRenderer(){
//创建渲染器,描绘器对象
renderer = new DefaultRenderer(); ssr1 = new SimpleSeriesRenderer();
ssr2 = new SimpleSeriesRenderer();
ssr3 = new SimpleSeriesRenderer();
ssr1.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
ssr2.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
ssr3.setChartValuesFormat(NumberFormat.getPercentInstance());// 设置百分比
ssr1.setColor(Color.YELLOW);
ssr2.setColor(Color.CYAN);
ssr3.setColor(Color.BLACK);
renderer.addSeriesRenderer(ssr1);
renderer.addSeriesRenderer(ssr2);
renderer.addSeriesRenderer(ssr3); renderer.setChartTitle("第一个饼图");
renderer.setShowLabels(true);//设置显示标签
renderer.setShowLegend(true);//显示底部说明标签
renderer.setLabelsTextSize(20);//设置标签字体大小,
renderer.setAntialiasing(true);//消失锯齿
renderer.setApplyBackgroundColor(true);//想要添加背景要先申请
renderer.setBackgroundColor(Color.DKGRAY);
renderer.setChartTitleTextSize(30);
renderer.setDisplayValues(true); //显示数据,这个不写就不会显示出百分比。。
renderer.setZoomButtonsVisible(true); //显示缩小放大图标 return renderer;
} }

Achartengine.jar绘制动态图形一 --饼图的更多相关文章

  1. Achartengine.jar绘制动态图形-饼图

    Achartengine.jar绘制动态图形一 --饼图 PS:我们在做安卓程序的时候,免不了会做一些图形,自己可以选择自定义view ,就是用Canvas画,也可以用写好的jar包,就是achart ...

  2. 用Python绘制一套“会跳舞”的动态图形给你看看

    在读技术博客的过程中,我们会发现那些能够把知识.成果讲透的博主很多都会做动态图表.他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法. 看这优美的舞姿 很多人学 ...

  3. css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数

    本文同时发表于本人个人网站 www.yaoxiaowen.com 距离上一篇文章已经一个月了,相比于写代码,发现写文章的确是更需要坚持的事情.言归正传,梳理一下这一个月来,在写ife任务时,有必要记录 ...

  4. matlab绘制三维图形

    原文地址:种三维曲面图. 程序如下: [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2, ...

  5. 绘制基本图形和线型(StrokeStyle)的设置详解

    绘制基本图形和线型(StrokeStyle)的设置详解 目前,在博客园上,相对写得比较好的两个关于Direct2D的教程系列,分别是万一的Direct2D系列和zdd的Direct2D系列.有兴趣的网 ...

  6. css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数

    本文同时发表于本人个人网站 www.yaoxiaowen.com 距离上一篇文章已经一个月了,相比于写代码,发现写文章的确是更需要坚持的事情.言归正传,梳理一下这一个月来,在写ife任务时,有必要记录 ...

  7. Direct2D教程II——绘制基本图形和线型(StrokeStyle)的设置详解

    目前,在博客园上,相对写得比较好的两个关于Direct2D的教程系列,分别是万一的Direct2D系列和zdd的Direct2D系列.有兴趣的网友可以去看看.本系列也是介绍Direct2D的教程,是基 ...

  8. 10 个超炫绘制图表图形的 Javascript 插件【转载+整理】

    原文地址 现在,有很多在线绘制图表和图形(Charts and Graphs)的 JavaScript 插件,这些插件还都是免费,以及图表库.这些插件大量出现的原因是基于一个事实:人们不再依赖于 Fl ...

  9. 学习笔记:HTML5 Canvas绘制简单图形

    HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...

随机推荐

  1. 个人笔记之json实现模糊查询

    1:首先创建一个项目如:(说明:此项目是在eclipse创建的) 2.在创建相对应的包如: 3.创建写好相对应的配置文件如: applicationContext.xml具体内容如下: <?xm ...

  2. mysql初体验

    1.mysql数据库: 数据库----文件夹 数据表----文件 数据数据行---文件中的一行数据2. 初始: show databases; 查看当前mysql都有那些数据库,也就是根目录有哪些文件 ...

  3. Ubuntu下编译Bilibili/ijkplayer

    在做Android客户端视频播放器的过程中熟悉ijkplayer.他在视频支持协议上要比Android原生的mediaplayer做的要好.因此,自己也基于Bilibili/ijkplayer的重新编 ...

  4. Azure cli使用arm创建多网卡虚拟机

    登录 Azure CLI 并使用 Resource Manager 模式: azure config mode arm 在以下示例中,请将示例参数名称替换为你自己的值.示例参数名称包括 myResou ...

  5. 简单的Spring Web工程跳转且传参Demo

    jdbc.properties jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.1.136:3306/ ...

  6. Linux下如何彻底删除MySQL

    1.查找以前是否装有mysql 命令:rpm -qa|grep -i mysql可以看到如下图的所示: 说明之前安装了:MySQL-client-5.5.25a-1.rhel5MySQL-server ...

  7. Spring JDBC(二)SimpleJdbcInsert

    上一篇写了关于jdbcTemplate的一些基本使用,这一篇来聊聊SimpleJdbcInsert SimpleJdbcInsert是springjdbc提供的一个简化插入操作的类,下面来看一下常用的 ...

  8. SQL_Server 学习笔记(一)

    一:SQL基础 1 SQL SELECT DISTINCT 语法 SELECT DISTINCT Company FROM Orders 2.TOP SELECT TOP number|percent ...

  9. 二叉树的递归遍历 The Falling Leaves UVa 699

    题意:对于每一棵树,每一个结点都有它的水平位置,左子结点在根节点的水平位置-1,右子节点在根节点的位置+1,从左至右输出每个水平位置的节点之和 解题思路:由于上题所示的遍历方式如同二叉树的前序遍历,与 ...

  10. IntelliJ IDEA(四) :Settings【Appearance and Behavior】

    前言 IDEA是一个智能开发工具,每个开发者的使用习惯不同,如何个性化自己的IDEA?我们可以通过Settings功能来设置.Settings文件是IDEA的配置文件,通过他可以设置主题,项目,插件, ...