/** * 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); } }
自定义画圆
最新推荐文章于 2022-12-09 14:55:10 发布