android群英传笔记--第三章--自定义控件三简单形状View

来源:互联网 发布:php阿里蜘蛛池 编辑:程序博客网 时间:2024/05/17 04:25

这里写图片描述
onMeasure OnDraw 最简单的使用教程

 @Override    protected void onMeasure(int widthMeasureSpec,                             int heightMeasureSpec) {        mMeasureWidth = MeasureSpec.getSize(widthMeasureSpec);        mMeasureHeigth = MeasureSpec.getSize(heightMeasureSpec);        setMeasuredDimension(mMeasureWidth, mMeasureHeigth);        initView();    }
 @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        // 绘制圆        canvas.drawCircle(mCircleXY, mCircleXY, mRadius, mCirclePaint);        // 绘制弧线        canvas.drawArc(mArcRectF, 270, mSweepAngle, false, mArcPaint);        // 绘制文字        canvas.drawText(mShowText, 0, mShowText.length(),                mCircleXY, mCircleXY + (mShowTextSize / 4), mTextPaint);    }

关键逻辑方法:

private void initView() {        float length = 0;        if (mMeasureHeigth >= mMeasureWidth) {            length = mMeasureWidth;        } else {            length = mMeasureHeigth;        }        mCircleXY = length / 2;        mRadius = (float) (length * 0.5 / 2);        mCirclePaint = new Paint();        mCirclePaint.setAntiAlias(true);        mCirclePaint.setColor(getResources().getColor(                android.R.color.holo_blue_bright));        mArcRectF = new RectF(                (float) (length * 0.1),                (float) (length * 0.1),                (float) (length * 0.9),                (float) (length * 0.9));        mSweepAngle = (mSweepValue / 100f) * 360f;        mArcPaint = new Paint();        mArcPaint.setAntiAlias(true);        mArcPaint.setColor(getResources().getColor(                android.R.color.darker_gray));        mArcPaint.setStrokeWidth((float) (length * 0.1));        mArcPaint.setStyle(Style.STROKE);        mShowText = setShowText();        mShowTextSize = setShowTextSize();        mTextPaint = new Paint();        mTextPaint.setTextSize(mShowTextSize);        mTextPaint.setTextAlign(Paint.Align.CENTER);    }
0 0