Android使用自定义View实现饼状图的实例代码

本文讲述了Android使用自定义View实现饼状图的实例代码。分享给大家供大家参考,具体如下:

1.效果图

2.代码实现

public class PieChartView extends View {
 private Paint mPaint;
 private List<PieData>pieDataList;
 // 饼状图初始绘制角度
 private float mStartAngle = 0;
 public PieChartView(Context context) {
 this(context, null);
 }
 public PieChartView(Context context, @Nullable AttributeSet attrs) {
 super(context, attrs);
 init();
 }
 public void setData(List<PieData> dataList){
 if (null == dataList || dataList.size() == 0)
 return;
 pieDataList = dataList;
 invalidate(); //触发onDraw
 }
 private void init() {
 mPaint = new Paint();
 mPaint.setAntiAlias(true);
 mPaint.setStyle(Paint.Style.FILL);
 mPaint.setStrokeWidth(4);
 rectF = new RectF(100f, 100f, 600f, 600f); //正方形背景
 }
 private RectF rectF;
 @Override
 protected void onDraw(Canvas canvas) {
 super.onDraw(canvas);
 if (null == pieDataList || pieDataList.size() == 0)
 return;
 float currentAngle = mStartAngle;
 for (int i = 0;i<pieDataList.size();i++){
 PieData pieData = pieDataList.get(i);
 mPaint.setColor(pieData.color);
 canvas.drawArc(rectF,currentAngle,pieData.angle,true,mPaint); //画弧
 currentAngle += pieData.angle;
 }
 }
}

3.使用:

int values[] = {30, 30, 40}; //右侧的图的数据,{10, 20, 70} 图左
List<PieData> pieDataList = new ArrayList<>();
PieData pieData1 = new PieData();
pieData1.percentage = (float) values[0] / 100;
pieData1.angle = pieData1.percentage * 360;
pieData1.color = Color.RED;
pieDataList.add(pieData1);
PieData pieData2 = new PieData();
pieData2.percentage = (float) values[1] / 100;
pieData2.angle = pieData2.percentage * 360;
pieData2.color = Color.GREEN;
pieDataList.add(pieData2);
PieData pieData3 = new PieData();
pieData3.percentage = (float) values[2] / 100;
pieData3.angle = pieData3.percentage * 360;
pieData3.color = Color.YELLOW;
pieDataList.add(pieData3); 

PieChartView pieChartView = new PieChartView(mContext);
pieChartView.setData(pieDataList);
addView(pieChartView); 

以上所述是小编给大家介绍的Android使用自定义View实现饼状图的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 手把手教你用Android自定义饼状图

    照例先上效果图 通过该例子,你能学到什么: 对Paint 深入理解,画绘制饼图,矩形,文字等 加深对canvas的API的掌握,对自定义View掌握 下面我们分七步来完成一个简单的饼形图绘制过程. 1. 重新View的构造方法 public PieView(Context context) { this(context, null); } public PieView(Context context, AttributeSet attrs) { this(context, attrs, 0);

  • Android自定义View实现饼状图带动画效果

    一个简单的自定义view饼状图,加入了动画效果 先看一下效果 下面就直接上代码了 public class Yidong2 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new PointView(this)); } public class PointView

  • Android动态绘制饼状图的示例代码

    项目里面的需求,当时搜索到MPAndroidChart库,可以实现,但是只是一个需求就引用偌大的一个库,感觉不太爽,打算自己自定义一个. 一.惯例先上效果图 更新图 二.GitHub 代码地址,欢迎指正https://github.com/MNXP/XPPieChart 三.思路 1.空心图(一个大圆中心绘制一个小圆)   2.根据数据算出所占的角度   3.根据动画获取当前绘制的角度   4.根据当前角度获取Paint使用的颜色   5.动态绘制即将绘制的 和 绘制已经绘制的部分(最重要) 四

  • 安卓(Android)开发之自定义饼状图

    先来看看效果图 先分析饼状图的构成,非常明显,饼状图就是一个又一个的扇形构成的,每个扇形都有不同的颜色,对应的有名字,数据和百分比. 经以上信息可以得出饼状图的最基本数据应包括:名字 数据值 百分比 对应的角度 颜色. 用户关心的数据 : 名字 数据值 百分比 需要程序计算的数据: 百分比 对应的角度 其中颜色这一项可以用户指 public class PieData { private String name; // 名字 private float value; // 数值 private

  • Android MPAndroidChart开源图表库之饼状图的代码

    MPAndroidChart是一款基于Android的开源图表库,MPAndroidChart不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活.MPAndroidChart同样拥有常用的图表类型:线型图.饼图.柱状图和散点图. GitHub地址 下面主要实现以下饼状图: 1.从上面的地址中下载最新mpandroidchartlibrary-2-0-8.jar包, 然后copy到项目的libs中: 2.定义xml文件: 3.主要Java逻辑代码如下

  • Android自定义控件实现饼状图

    本文实现一个如图所示的控件,包括两部分,左边的饼状图和中间的两个小方块,及右边的两行文字 实现起来比较简单,只是一些绘图API的调用 核心代码在onDraw函数里边,对静态控件进行绘制即可 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); /** * 饼状图的x坐标 */ float centreX= getWidth()/5; /** * 饼状图的y坐标 */ float centreY= getHei

  • MPAndroidChart开源图表库的使用介绍之饼状图、折线图和柱状图

    MPAndroidChart开源图表库之饼状图 为大家介绍一款图标开源库MPAndroidChart,它不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,用起来非常灵活.MPAndroidChart同样拥有常用的图表类型:线型图.饼图.柱状图和散点图. mpandroidchartlibrary.jar包下载地址: https://github.com/PhilJay/MPAndroidChart/releases 下面主要实现以下饼状图: 1.从上面的地址中下载

  • Android使用自定义View实现饼状图的实例代码

    本文讲述了Android使用自定义View实现饼状图的实例代码.分享给大家供大家参考,具体如下: 1.效果图 2.代码实现 public class PieChartView extends View { private Paint mPaint; private List<PieData>pieDataList; // 饼状图初始绘制角度 private float mStartAngle = 0; public PieChartView(Context context) { this(co

  • 利用Tkinter和matplotlib两种方式画饼状图的实例

    当我们学习python的时候,总会用到一些常用的模块,接下来我就详细讲解下利用两种不同的方式画饼状图. 首先利用[Tkinter]中的canvas画布来画饼状图: from tkinter import Tk, Canvas def DrawPie(): #创建窗口 windows=Tk() #添加标题 windows.title("画饼图") # 设置画布样式 canvas=Canvas(windows,height=500,width=500) # 将画布打包到窗口 canvas.

  • Android自定义View实现箭头沿圆转动实例代码

    具体代码如下所示: //MyCircleView类 public class MyCircleView extends View{ //当前画笔画圆的颜色 private int CurrenCircleBoundColor; private Paint paint; ////从xml中获取的颜色 private int circleBundColor; private float circleBoundWidth; private float pivotX; private float piv

  • Python数据可视化:饼状图的实例讲解

    使用python实现论文里面的饼状图: 原图: python代码实现: # # 饼状图 # plot.figure(figsize=(8,8)) labels = [u'Canteen', u'Supermarket', u'Dorm', u'Others'] sizes = [73, 21, 4, 2] colors = ['red', 'yellow', 'blue', 'green'] explode = (0.05, 0, 0, 0) patches, l_text, p_text =

  • Android HelloChart开源库图表之折线图的实例代码

    前面我们介绍了开源图表库MPAndroidChart,请参考: Android MPAndroidChart开源库图表之折线图的实例代码 我们今天介绍的将是一个更为优秀的图表库,比MPAndroidChart性能更好,功能更完善,UI风格更美观,坐标轴更精细. 支持缩放.滑动以及平移.Zoom(pinch to zoom, double tap zoom), scroll and fling 支持自定义坐标轴(比如坐标轴位置:上下左右内部),支持自动生成坐标轴.Custom and auto-g

  • Android MPAndroidChart开源库图表之折线图的实例代码

    本文讲述了Android MPAndroidChart开源库图表之折线图的实例代码.分享给大家供大家参考,具体如下: 承接上一篇文章,请参考Android HelloChart开源库图表之折线图的实例代码 1. 将mpandroidchartlibrary-2-0-8.jar包copy到项目的libs中: 2. 定义xml文件. 3.  主要Java逻辑代码如下,注释已经都添加上了. package com.example.mpandroidlinechart; import java.util

  • jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】

    本文实例讲述了jQuery插件FusionCharts绘制的3D饼状图效果.分享给大家供大家参考,具体如下: 1.实现源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>最新版FusionCharts3D饼图</title> <script src="js/jquery-1.4.2.min.js"></s

  • Android自定义View实现天气预报折线图

    本文实例为大家分享了Android自定义View画天气预报折线图的具体代码,供大家参考,具体内容如下 效果图如下: 刚开始尝试用第三方画曲线的框架来画效果图,后来发现曲线间的阴影当有负数的度数的时候画不出来,而且不需要点击放大.点点可点的效果,用框架显得很臃肿,所以最后用自定义View来画的折线图.自定义画折线图的大致思路:这个图是有多个四边形组成的(4个点连接起来就是一个四边形),两边延伸:添加四个多余的点,将左右的边距设置成负数即可. 代码如下: public class WeatherCh

随机推荐