您的位置:首页 > 移动开发 > Android开发

文章标题 Android 自定义控件---- View1

2017-05-12 13:54 423 查看


public class MyView extends View {

private RectF mrect;
private float circleXY;
private float radius;
private Paint cPaint;
private Paint marcPaint;
private Paint mTextPaint;
private float length;
private String textStr = "60%";

public MyView(Context context) {
super(context);
init();
}

public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}

public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}

private void init(){

WindowManager window = (WindowManager)this.getContext()
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics displayMetrics = new DisplayMetrics();
window.getDefaultDisplay().getMetrics(displayMetrics);
this.length = displayMetrics.widthPixels;

this.circleXY = this.length / 2;
this.radius = (float) (this.length * 0.5 / 2);

this.marcPaint = new Paint();
this.marcPaint.setStyle(Paint.Style.STROKE);
this.marcPaint.setStrokeWidth(40);
this.marcPaint.setColor(Color.BLUE);

this.cPaint = new Paint();
this.cPaint.setStyle(Paint.Style.FILL);
this.cPaint.setColor(Color.GREEN);

this.mTextPaint = new Paint();
this.mTextPaint.setColor(Color.BLACK);
this.mTextPaint.setStyle(Paint.Style.FILL);
this.mTextPaint.setTextSize(60);

this.mrect = new RectF(
(float)(length * 0.1) ,
(float)(length * 0.1),
(float)(length * 0.9),
(float)(length * 0.9));

}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

canvas.drawCircle(this.circleXY , circleXY , radius , cPaint);
canvas.drawArc(mrect , 270 , 240 , false , marcPaint);

//测量字符串的在屏幕上的占用长度
float mWidth = mTextPaint.measureText(textStr);
canvas.drawText(textStr , 0 , textStr.length() ,
circleXY - mWidth / 4 , circleXY + mWidth / 4 ,
mTextPaint);
}


}

通过继承View , 重写onDraw方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: