圆弧百分比

来源:互联网 发布:网络语9999是什么意思 编辑:程序博客网 时间:2024/05/04 23:41

效果



代码


package com.cainiao.nursingrelease.ui.views;import com.cainiao.nursingrelease.R;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.View;/** *  我的发布自定义view * 项目:NursingRelease * @author liujie *日期:2015-11-21下午3:04:17 */public class PersionView extends View {private int ScrWidth,ScrHeight; //演示用的百分比例,实际使用中,即为外部传入的比例参数  private  float arrPer[] = new float[]{20f,30f,50f};  //RGB颜色数组private final int arrColorRgb[][] = { {129, 193, 106},{255, 255, 255}, {253, 180, 90}} ;public PersionView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stubDisplayMetrics dm = getResources().getDisplayMetrics();ScrHeight = dm.heightPixels;ScrWidth = dm.widthPixels;}public PersionView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stubDisplayMetrics dm = getResources().getDisplayMetrics();ScrHeight = dm.heightPixels;ScrWidth = dm.widthPixels;} public void onDraw(Canvas canvas){//画布背景canvas.drawColor(getResources().getColor(R.color.title_bg));                            float cirX = ScrWidth / 2;          float cirY = ScrHeight / 5;          float radius = ScrHeight / 7 ;//150;                                            float arcLeft = cirX - radius;          float arcTop  = cirY - radius ;          float arcRight = cirX + radius ;          float arcBottom = cirY + radius ;          RectF arcRF0 = new RectF(arcLeft ,arcTop,arcRight,arcBottom);           //画笔初始化Paint PaintArc = new Paint();  PaintArc.setAntiAlias(true);Paint PaintLabel = new Paint();  PaintLabel.setTextSize(22);      canvas.drawText("author:xiongchuanliang", 50, ScrHeight - 280, PaintLabel); PaintLabel.setColor(Color.WHITE);PaintLabel.setTextSize(16);         float Percentage = 0.0f; float CurrPer = 0.0f;int i= 0;          for(i=0; i<arrPer.length; i++)           {              //将百分比转换为饼图显示角度              Percentage = 360 * (arrPer[i]/ 100);              Percentage = (float)(Math.round(Percentage *100))/100;              //分配颜色                        PaintArc.setARGB(255,arrColorRgb[i][0], arrColorRgb[i][1], arrColorRgb[i][2]);            //在饼图中显示所占比例              canvas.drawArc(arcRF0, CurrPer, Percentage, true, PaintArc);               CurrPer += Percentage;          }                       //画圆心        PaintArc.setColor(getResources().getColor(R.color.title_bg));        canvas.drawCircle(cirX,cirY,4*radius/6,PaintArc);   }}


0 0