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);// 小弧形
}
}
}