Android自定义View之圆形TextView

圆形TextView

圆形TextView源码:

public class CircleTextView extends TextView{
    public static final String TAG = "CircleTextView";
    private Paint mBgPaint = new Paint();
    private Context mContext;

    PaintFlagsDrawFilter pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);

    public CircleTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
        init(context);
    }

    public CircleTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        init(context);
    }

    public CircleTextView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        init(context);
    }

    public void init(Context context){
        mContext = context;
        mBgPaint.setAntiAlias(true);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // TODO Auto-generated method stub
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int measuredWidth = getMeasuredWidth();
        int measuredHeight = getMeasuredHeight();
        int max = Math.max(measuredWidth, measuredHeight);
        setMeasuredDimension(max, max);
    }

    @Override
    public void setBackgroundColor(int color) {
        // TODO Auto-generated method stub
        mBgPaint.setColor(color);
    }

    public void setNotifiText(int text){
        // if(text>99){
        // String string = 99+"+";
        // setText(string);
        // return;
        // }
        setText(text+"");
    }

    @Override
    public void draw(Canvas canvas) {
        // TODO Auto-generated method stub
        canvas.setDrawFilter(pfd);
        canvas.drawCircle(getWidth()/2, getHeight()/2, Math.max(getWidth(), getHeight())/2, mBgPaint);
        super.draw(canvas);
    }
}

使用方式:
在XML文件中如下声明使用

       <com.tt.circletextview.view.CircleTextView
        android:gravity="center"
        android:layout_centerInParent="true"
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

源码下载地址:源码

你可能感兴趣的:(textview)