您的位置:首页 > 其它

标准自定义控件CirvleView

2016-06-07 09:59 204 查看
1.写一个类继承View

2.自定义属性CircleColor

3.重写onMeasure方法

4.重写onDraw方法

<?xml version=“1.0” encoding=“utf-8”?>

<resources>

<declare-styleable name=”CircleView”>

<attr name="circle_color" format="color"/>

</declare-styleable>

</resources>

public class CircleView extends View {

private int mColor =Color.RED;

private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

public CircleView (Context context, AttributeSet attrs){

this(context,attrs,0)

public CircleView(Context context ,AttrbuteSet attrs, int deStyeAttr){

super (context,attrs,deStyleAttr);

TypedArray a= context.obtainStyledAttributes(attrs,R.styleable.CircleView);

mColor=a.getColor(R.styleable.CircleView_circle_color,Color.RED);

a.recycle();

init();

}

private void init(){

mPaint.setColor(mColor);

}

@override

protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){

super.onMeasure(widthMeasureSpec,heightMeasureSpec);

int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);

int widthSpecSize =MeasureSpec.getSize(withMeasureSpec);

int heightSpecMode =MeasureSpec.getMode(heightMeasureSpec);

int heightSpecSize=MeasureSpec.getSize(heightMeasureSpec);

if(widthSpecMode==MeasureSpec.AT_MOST&&heightSpecMode ==MeasureSpec.AT_MOST){

setMeasuredDimension(200,200);

}else if(withSpecMode==MeasureSpec.AT_MOST)[

setMeasuredDimension(200,heightSpecSize);

} else if(heightMeasureMode == MeasureSpec.AT_MOST){

setMeasuredDimension(widthSpecSize,200);

}

}

@overtide

protected void onDraw (Canvas canvas){

super.onDraw(canvas);

final int paddingLeft =getPaddingLeft();

final int paddingRight=getPaddingRight();

final int paddingTop=getPaddingTop();

final int paddingBottom =getPaddingBottom();

int width =getWidth()-paddingLeft- paddingRight;

int height=getHeight()-paddingTop-paddingBottom;

int radius = Math.min(width,height)/2;

canvas.drawCircle(paddingLeft+width/2,paddingTop+height/2,radius,mPaint);

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: