自定义View的入门点. 主要是练练手, 关键是继承对应的组件类, 利用paint画笔的属性设置, 在Canvas上绘画实现.
圆环ImageView
public class CircleImageView extends ImageView{
private final Paint paint;
private final Context context;
public CircleImageView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
this.paint = new Paint();
this.paint.setAntiAlias(true); //消除锯齿
this.paint.setStyle(Style.STROKE); //绘制空心圆或 空心矩形
}
@Override
protected void onDraw(Canvas canvas){
int center = getWidth()/2;
int innerCircle = utils.dip2px(context, 50); //内圆半径
int ringWidth = utils.dip2px(context, 5); //圆环宽度
this.paint.setARGB(255, 138, 43, 226);
this.paint.setStrokeWidth(2);
canvas.drawCircle(center, center, innerCircle, this.paint);
this.paint.setARGB(255,200,85,198);
this.paint.setStrokeWidth(ringWidth);
canvas.drawCircle(center, center, innerCircle+utils.dip2px(context, 10), this.paint);
this.paint.setARGB(255,200,102,75);
this.paint.setStrokeWidth(ringWidth);
canvas.drawCircle(center, center, innerCircle+utils.dip2px(context, 20), this.paint);
super.onDraw(canvas);
}
}
圆角按钮Button
/**
* 自定义圆角Button
* @author KinHo
*
*/
public class BorderButton_1 extends Button{
public BorderButton_1(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// 实例化一支画笔
Paint paint = new Paint();
paint.setStrokeWidth(1);
paint.setStyle(Style.STROKE); // 设置样式-空心矩形
paint.setColor(android.graphics.Color.DKGRAY); // 设置颜色
paint.setAntiAlias(true); //抗锯齿
RectF rectF = new RectF(2,0,this.getWidth()-2,this.getHeight()-2);
canvas.drawRoundRect(rectF, 20, 20, paint); // 绘制一个矩形
}
}
效果图: