自定义画圆

来源:互联网 发布:淘宝延长收货 花呗 编辑:程序博客网 时间:2024/05/20 20:05
/** * 1.名字: boss * 2.时间: 2016/11/30 14:38  * 3.作用:自定义TextView绘制圆 */public class TextCircleView extends TextView {    private Paint mPaint;    public TextCircleView(Context context) {        super(context);        // TODO Auto-generated constructor stub    }    //xml创建TextCircleView调用这个构造函数    public TextCircleView(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub        init();    }    //new TextCircleView调用这个构造函数    public TextCircleView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        init();    }    /**     * 初始化画笔     */    public void init()    {        mPaint = new Paint();    }    /**     * 调用onDraw绘制边框     */    @Override    protected void onDraw(Canvas canvas) {        // TODO Auto-generated method stub        super.onDraw(canvas);        //创建一个RectF,用来限定绘制圆弧的范围        RectF rectf = new RectF();        //设置画笔的颜色        mPaint.setColor(getPaint().getColor());        //设置画笔的样式,空心        mPaint.setStyle(Paint.Style.STROKE);        //设置抗锯齿        mPaint.setAntiAlias(true);        //设置画得一个半径,然后比较长和宽,以最大的值来确定长方形的长宽,确定半径        int r = getMeasuredWidth() > getMeasuredHeight() ? getMeasuredWidth() : getMeasuredHeight();        //如果设置的padding不一样绘制出来的是椭圆形。绘制的时候考虑padding        //Log.i("边界", "宽度"+getMeasuredWidth()+"高度"+getMeasuredHeight()+"getPaddingLeft()"+getPaddingLeft()+"getPaddingTop"+getPaddingTop()+"getPaddingRight(): "+getPaddingRight()+"getPaddingBottom()"+getPaddingBottom());        //当padding都为0的时候,绘制出来的就是RectF限定的区域就是一个正方形        rectf.set(getPaddingLeft(),getPaddingTop(),r-getPaddingRight(),r-getPaddingBottom());        //绘制圆弧        canvas.drawArc(rectf,0,360,false,mPaint);    }}
0 0
原创粉丝点击