android绘制进度条
public class MainActivity extends Activity {
private CircleProgress cp;
private ImageView iv;
int finish = 80;
private int centerX,centerY;
private int textSize = 38;
private int roundWidth = 14;
private float finished =80,unfinished = 20;
Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) \{
super.onCreate(savedInstanceState);
setContentView(R.layout.login\_activity);
cp = (CircleProgress) this.findViewById(R.id.cp\_home);
iv=(ImageView) this.findViewById(R.id.iv);
if(iv == null)\{
Log.v("iv", "null");
return;
\}
drawProgress();
\}
public void drawCircle(View view)\{
cp.setProgress(finish,100 - finish);
finish--;
\}
private void drawProgress()\{
Bitmap bitmap1 = null;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.chart\_bg).
copy(Bitmap.Config.ARGB\_8888, true);
bitmap1 = Bitmap.createBitmap(bitmap);
centerX = bitmap1.getWidth()/2;
centerY = bitmap1.getHeight()/2;
Canvas canvas = new Canvas(bitmap1);
paint = new Paint();
drawText(canvas);
drawTaskFinish(canvas);
drawTaskUnfinish(canvas);
iv.setImageBitmap(bitmap1);
\}
private void drawText(Canvas canvas)\{
//半径
int radius = (int)(centerX - roundWidth/2);
paint.setColor(Color.parseColor("\#3061AE"));
paint.setStrokeWidth(0);
paint.setTextSize(textSize);
paint.setTypeface(Typeface.DEFAULT\_BOLD); //设置字体
int percent = (int)((finished / (finished + unfinished)) \* 100);
float textWidth = paint.measureText(percent + "%");
canvas.drawText(percent + "%", centerX - textWidth / 2, centerY + textSize/3, paint);
paint.setStrokeWidth(roundWidth); //设置圆环的宽度
paint.setColor(Color.parseColor("\#FF721A")); //设置进度的颜色
paint.setStyle(Style.STROKE);
RectF oval = new RectF(centerX - radius, centerY - radius, centerX
+ radius, centerY + radius);
if(percent >0)\{
//根据进度画圆弧,同时改变起始角度,进行绘制
canvas.drawArc(oval, -90, 360 \* percent/100, false, paint);
\}
\}
/\*\*
\* 绘制完成任务的形状
\* @param canvas
\*/
private void drawTaskFinish(Canvas canvas)\{
if(finished <=0)\{
return;
\}
int centerFinishX = (int) (centerX + centerX \* 0.6);
paint.setColor(Color.parseColor("\#FF721A"));
paint.setStyle(Paint.Style.FILL\_AND\_STROKE);
canvas.drawCircle(centerFinishX, centerFinishX, 20, paint);
paint.setColor(Color.WHITE);
paint.setStrokeWidth(0);
paint.setTextSize(12);
paint.setTypeface(Typeface.DEFAULT\_BOLD);
float textWidth = paint.measureText(finished + "万");
canvas.drawText(finished + "万", centerFinishX - textWidth / 2,
centerFinishX + 6, paint);
\}
/\*\*
\* 绘制未完成的任务图形
\* @param canvas
\*/
private void drawTaskUnfinish(Canvas canvas)\{
if(unfinished <=0)\{
return;
\}
int centerUnfinishX = (int) (centerX - centerX \* 0.6);
paint.setColor(Color.parseColor("\#1FC2F3"));
paint.setStyle(Paint.Style.FILL\_AND\_STROKE);
canvas.drawCircle(centerUnfinishX, centerUnfinishX, 20, paint);
paint.setColor(Color.WHITE);
paint.setStrokeWidth(0);
paint.setTextSize(12);
paint.setTypeface(Typeface.DEFAULT\_BOLD);
float textWidth = paint.measureText(unfinished + "万");
canvas.drawText(unfinished + "万", centerUnfinishX - textWidth / 2,
centerUnfinishX + 6, paint);
\}
}
还没有评论,来说两句吧...