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

来源:互联网 发布:阿里云带宽价格 编辑:程序博客网 时间:2024/05/22 16:40

这里写图片描述

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));}@Overrideprotected 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方法。

0 0
原创粉丝点击