andriod饼图简单实现
2014-04-11 16:49
330 查看
接下来是饼图,依旧是简单实现,没办法菜鸟,以后改进吧。
效果图:
接下来是代码:
效果图:
接下来是代码:
package mychart; import android.content.Context; import android.graphics.BlurMaskFilter; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Path; import android.graphics.Path.Direction; import android.graphics.RectF; import android.graphics.Typeface; import android.view.View; public class PieView extends View { private int[] data; //数据 private String[] info; //文本信息 private float[] percent; //比例 private int[] colors = //颜色 new int[]{Color.RED, Color.YELLOW, Color.BLUE, Color.GREEN, Color.CYAN}; private Paint mainPaint; //轮廓画笔 private int ScrHeight; //屏幕高度 private int ScrWidth; //屏幕宽度 private Paint arrPaint; //填充画笔 private Paint textPaint = null; //文本画笔 //构造函数 public PieView(Context context,int[] data, String[] info) { super(context); this.data = data; this.info = info; initData(); initPaint(); } //初始化画笔 private void initPaint(){ mainPaint = new Paint(); mainPaint.setAntiAlias(true); mainPaint.setColor(Color.WHITE); mainPaint.setStyle(Style.STROKE); mainPaint.setStrokeWidth(3); arrPaint = new Paint(); arrPaint.setStyle(Style.FILL); BlurMaskFilter PaintBGBlur = new BlurMaskFilter( 2, BlurMaskFilter.Blur.SOLID); arrPaint.setMaskFilter(PaintBGBlur); textPaint = new Paint(); textPaint.setColor(Color.BLUE); textPaint.setTextSize(16); textPaint.setTypeface(Typeface.DEFAULT_BOLD); } //数据转化比例 private void initData(){ int sum=0; for (int i = 0 ;i < data.length; i++){ sum += data[i]; } percent = new float[data.length]; for (int i = 0 ;i < data.length; i++){ percent[i] = (float)data[i] /sum * 360; } } //绘图 protected void onDraw(Canvas canvas) { super.onDraw(canvas); ScrHeight = getHeight(); ScrWidth = getWidth(); float cirX = ScrWidth / 2; float cirY = ScrHeight / 3 ; float radius = ScrHeight / 4 ; float arcLeft = cirX - radius; float arcTop = cirY - radius ; float arcRight = cirX + radius ; float arcBottom = cirY + radius ; RectF arcRF0 = new RectF(arcLeft, arcTop, arcRight, arcBottom); float CurrPer = 0; for(int i=0; i<percent.length; i++) { arrPaint.setColor(colors[i]); canvas.drawArc(arcRF0, CurrPer, percent[i], true, arrPaint); canvas.drawArc(arcRF0, CurrPer, percent[i], true, mainPaint); CurrPer += percent[i]; } } }
相关文章推荐
- andriodjie——xRecyclerView网络获取数据简单实现
- Andriod雷达图简单实现
- andriod面积图简单实现
- 【大白鹿学习andriod开发 第三弹】基本组件学习+实现简单登陆界面
- andriod折线图简单实现
- andriod——简单实现二级购物车
- andriod柱形图简单实现
- 最简单快速的Apache二级域名实现方法介绍
- windows服务的简单实现(原创)
- Socket TCP 简单聊天的实现
- C#,Castle,NHibernate,Oracle,最简单的实现
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
- Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
- Java实现简单的聊天室程序
- centos实现两种秒级任务的简单方法
- golang 实现简单的一致性哈希
- 用Asp.net实现简单的文字水印
- 使用自定义Camera实现简单拍照功能
- java实现三种简单排序以及改良:冒泡排序,选择排序,直接插入排序
- Android简单调用相机Camera功能,实现打开照相功能