<强>前言强>
在QQ中有消息个数提醒的控件,虽然现在没用的到,但是以后可能会用的到,所以就实现它,也不难。
<>强实现强>
效果图如下:
先贴源码了:
公开课TipNumberView延伸TextView { 私人油漆mBgPaint; PaintFlagsDrawFilter pfd; 公共TipNumberView(上下文语境,AttributeSet attrs) { 超级(上下文,attrs);//初始化画笔 mBgPaint=new油漆(); mBgPaint.setColor (Color.RED); mBgPaint.setAntiAlias(真正的); pfd=new PaintFlagsDrawFilter (0, Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); } 公共TipNumberView(上下文语境){ 这(上下文,null); } @Override 保护无效onMeasure (int widthMeasureSpec int heightMeasureSpec) { 超级。onMeasure (widthMeasureSpec heightMeasureSpec);//得到测量的高度和宽度 int measuredWidth=getMeasuredWidth (); int measuredHeight=getMeasuredHeight (); int max=数学。马克斯(measuredWidth measuredHeight);//设置控件区域大小 setMeasuredDimension (max,马克斯); }//设置背景颜色 @Override 公共空间setBackgroundColor (int颜色){ mBgPaint.setColor(颜色); }/* * *设置通知个数显示 * @param文本 */公共空间setNotifiText (int文本){ setText(文本+ " "); } 公共空间setNotifiText(字符串文本){ setText(文本); }//绘图 @Override 公共空画(帆布画布){//设置绘图无锯齿 canvas.setDrawFilter (pfd); canvas.drawCircle (getWidth()/2,获得()/2,Math.max (getWidth()/2,获得())/2,mBgPaint); super.draw(画布); } } >之前我是直接继承至TextView,因为TextView有setText方法,所以只需要绘制圆形的红色背景,然后调用方法setText即可,这就是实现的思路。
先要覆盖onMeasure方法来得到宽度和高度,因为背景为圆形,所以我们取宽度和高度两者之间的最大值,然后设置控件大小为一个正方形,在这个正方形的矩形里面,调用drawCircle方法来绘制圆形,设置画笔的颜色为红色即可。
<强>小结强>
在布局文件使用这个类的时候,要设置android:重力为中心,这样数字就可以居中了,之所以没有继承视图来进行写,因为视图还要自己去画数字,这样就增加了难度,不值得了。
源码下载点击这里。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Android消息个数提醒控件使用详解