百分比canvas绘图

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

public class PanelDountChart extends View {

 private final static String TAG = "PanelDountChart2";

 int percent = -1;// 百分比
 int strokeWidth = 7;
 String strBGColor_RGB = "";
 String strFGColor_RGB = "";
 int radius = 50;// 半径

 public PanelDountChart(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
 }

 public PanelDountChart(Context context, AttributeSet attrs) {
  super(context, attrs);

  strokeWidth = attrs.getAttributeIntValue(null, "StrokeWidth",
    strokeWidth);
  radius = attrs.getAttributeIntValue(null, "Radius", radius);
  strBGColor_RGB = attrs.getAttributeValue(null, "BGColor_RGB");
  strFGColor_RGB = attrs.getAttributeValue(null, "FGColor_RGB");
  if (TextUtils.isEmpty(strBGColor_RGB))
   strBGColor_RGB = "79,106,145";
  if (TextUtils.isEmpty(strFGColor_RGB))
   strFGColor_RGB = "45,226,9";

 }

 public PanelDountChart(Context context) {
  super(context);
 }

 public void setColorRGB(String strBGColor_RGB, String strFGColor_RGB) {
  if (!TextUtils.isEmpty(strBGColor_RGB))
   this.strBGColor_RGB = strBGColor_RGB;
  if (!TextUtils.isEmpty(strFGColor_RGB))
   this.strFGColor_RGB = strFGColor_RGB;
  this.postInvalidate();
 }

 /**
  * 设置所占百分比
  *
  * @param percent
  */
 public void setPercent(int percent) {
  this.percent = percent;
  this.postInvalidate();
 }

 /**
  * 设置所占百分比
  *
  * @param percent
  */
 public void setstrokeWidth(int strokeWidth) {
  this.strokeWidth = strokeWidth;
  this.postInvalidate();
 }

 @Override
 public void onDraw(Canvas canvas) {

  Log.i(TAG, "onDraw percent:" + percent + ",strokeWidth:" + strokeWidth
    + ",radius:" + radius);

  if (percent < 0)
   return;

  // 画布背景为透明色
  canvas.drawColor(Color.TRANSPARENT);

  {
   int sweepAngle = 360 * percent / 100;// 根据百分比计算度数

   // 创建画笔
   Paint p = new Paint();
   p.setAntiAlias(true);

   String colors[] = strBGColor_RGB.split(",");
   p.setColor(Color.argb(255, Integer.parseInt(colors[0]),
     Integer.parseInt(colors[1]), Integer.parseInt(colors[2])));// 设置背景

   // canvas.drawText("Hello", 10, 20, p);// 画文本

   p.setStyle(Paint.Style.STROKE);// 设置空心

   p.setStrokeWidth(strokeWidth);// 线条宽度

   canvas.drawCircle(radius + strokeWidth, radius + strokeWidth,
     radius, p);// x、y代表坐标、radius是半径、paint是画笔,就是画图的颜色;

   String colors_fg[] = strFGColor_RGB.split(",");
   p.setColor(Color.argb(255, Integer.parseInt(colors_fg[0]),
     Integer.parseInt(colors_fg[1]),
     Integer.parseInt(colors_fg[2])));// 设置前景

   RectF oval1 = new RectF(strokeWidth, strokeWidth, radius * 2
     + strokeWidth, radius * 2 + strokeWidth);// 指定圆弧的外轮廓矩形区域。
   canvas.drawArc(oval1, /*
         * 圆弧起始角度,单位为度。
         */-90, /*
           * 圆弧扫过的角度,顺时针方向,单位为度。
           */sweepAngle,/*
              * 如果为True时,在绘制圆弧时将圆心包括在内,
              * 通常用来绘制扇形 。
              */false,/*
                * 绘制圆弧的画板属性,如颜色,是否填充等
                * 。
                */
     p);// 小弧形

  }

 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值