自定义view:实现一个简单的进度圆形
下面是实现上图中右上角的”简单版”的圆形加载view
package com.sky.graphics;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
public class CleanArcView extends View{
private int mSweep=-225;
private int mStart=275;
private Paint paint;
private int mWidth;
private int mHeigth;
private RectF oval;
public CleanArcView(Context context) {
this(context,null);
// TODO Auto-generated constructor stub
}
public CleanArcView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public void setmStart(int mStarting) {
if (mStart==275) {
mStart=275;
}
mStart+=mStarting;
}
public int getmStart() {
return mStart;
}
private void init() {
paint=new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setStrokeWidth(5);
paint.setStyle(Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
mWidth=getWidth()/2;
mHeigth=getHeight()/2;
drawStartOrSweep(canvas);
}
// 这四个 参数 分别代表的意思是:left top right bottom 上下左右呗。啊,不是 是 左 上 右 下。 下面给大家解释
// left : 矩形左边的X坐标 150 ---->图片中的A点
// top: 矩形顶部的Y坐标 75 ---->图片中的B点
// right : 矩形右边的X坐标 260 ----->图片中的C点
// bottom: 矩形底部的Y坐标 120 ------->图片中的D点
// 说白了就是左上角的坐标是(150,75),右下角的坐标是(260,120),这样就好理解了
private void drawStartOrSweep(Canvas canvas) {
Log.d("Sky getWidth", ""+canvas.getWidth());
Log.d("Sky getHeight", ""+canvas.getHeight());
//240 339 300,399
oval=new RectF(mWidth, mHeigth, mHeigth+60, mHeigth+60);
// canvas.drawRect(oval, paint);
canvas.drawArc(oval, -225, mStart, false, paint);
invalidate();
}
}
调用方法:
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int max=cl.getmStart();
if (max==275) {
return ;
}
cl.setmStart(15);
}
});
findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
cl.setmStart(-15);
}
});
}