您的位置:首页 > 移动开发 > Android开发

Android自定义View之圆形TextView

2016-04-05 17:20 501 查看

圆形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!" />


源码下载地址:源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: