Android消息個(gè)數(shù)提醒控件使用詳解
前言
在QQ中有消息個(gè)數(shù)提醒的控件,雖然現(xiàn)在沒用到,但是以后可能會(huì)用到,所以就實(shí)現(xiàn)它,也不難。
實(shí)現(xiàn)
效果圖如下:
先貼源碼了:
public class TipNumberView extends TextView { private Paint mBgPaint ; PaintFlagsDrawFilter pfd; public TipNumberView(Context context, AttributeSet attrs) { super(context, attrs); //初始化畫筆 mBgPaint = new Paint(); mBgPaint.setColor(Color.RED); mBgPaint.setAntiAlias(true); pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); } public TipNumberView(Context context) { this(context,null); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); //得到測量的高度和寬度 int measuredWidth = getMeasuredWidth(); int measuredHeight = getMeasuredHeight(); int max = Math.max(measuredWidth, measuredHeight); //設(shè)置控件區(qū)域大小 setMeasuredDimension(max, max); } //設(shè)置背景顏色 @Override public void setBackgroundColor(int color){ mBgPaint.setColor(color); } /** * 設(shè)置通知個(gè)數(shù)顯示 * @param text */ public void setNotifiText(int text){ setText(text+""); } public void setNotifiText(String text){ setText(text); } //繪圖 @Override public void draw(Canvas canvas) { //設(shè)置繪圖無鋸齒 canvas.setDrawFilter(pfd); canvas.drawCircle(getWidth()/2, getHeight()/2, Math.max(getWidth()/2, getHeight())/2, mBgPaint); super.draw(canvas); } }
我是直接繼承至TextView,因?yàn)門extView有setText方法,所以只需要繪制圓形的紅色背景,然后調(diào)用方法setText即可,這就是實(shí)現(xiàn)的思路。
先要覆蓋onMeasure方法來得到寬度和高度,因?yàn)楸尘盀閳A形,所以我們?nèi)挾群透叨葍烧咧g的最大值,然后設(shè)置控件大小為一個(gè)正方形,在這個(gè)正方形的矩形里面,調(diào)用drawCircle方法來繪制圓形,設(shè)置畫筆的顏色為紅色即可。
小結(jié)
在布局文件使用這個(gè)類的時(shí)候,要設(shè)置android:gravity為center,這樣數(shù)字就可以居中了,之所以沒有繼承View來進(jìn)行寫,因?yàn)閂iew還要自己去畫數(shù)字,這樣就增加了難度,不值得了。
源碼下載點(diǎn)擊這里。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android自定義View實(shí)現(xiàn)圓形加載進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)圓形加載進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06Android編程實(shí)現(xiàn)Listview點(diǎn)擊展開和隱藏的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)Listview點(diǎn)擊展開和隱藏的方法,涉及Android中Listview的響應(yīng)點(diǎn)擊與樣式變換相關(guān)操作技巧,需要的朋友可以參考下2015-12-12解析:繼承ViewGroup后的子類如何重寫onMeasure方法
本篇文章是對繼承ViewGroup后的子類如何重寫onMeasure方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06android基礎(chǔ)總結(jié)篇之一:Activity生命周期
本篇文章主要介紹了android基礎(chǔ)總結(jié)篇之一:Activity生命周期,想要學(xué)習(xí)的可以了解一下。2016-11-11Android實(shí)現(xiàn)左右滑動(dòng)切換圖片
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)左右滑動(dòng)切換圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Kotlin by lazy關(guān)鍵字深入探究實(shí)現(xiàn)原理
這篇文章主要介紹了by lazy,在kotlin中使用是很常見的,用于實(shí)現(xiàn)懶加載某個(gè)數(shù)據(jù)。而這兩個(gè)單詞不是一體的,其中by是kotlin中的關(guān)鍵字,用于實(shí)現(xiàn)委托;lazy是一個(gè)方法,他的返回值是委托的具體對象2022-11-11Android design包自定義tablayout的底部導(dǎo)航欄的實(shí)現(xiàn)方法
這篇文章主要介紹了Android design包自定義tablayout的底部導(dǎo)航欄的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01Android自定義View實(shí)現(xiàn)隨手勢滑動(dòng)控件
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)隨手勢滑動(dòng)的控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android 進(jìn)度條顯示在標(biāo)題欄的實(shí)現(xiàn)方法
android進(jìn)度條顯示在標(biāo)題欄的實(shí)現(xiàn)方法,大概分文xml文件和java文件,具體代碼內(nèi)容大家可以通過本文學(xué)習(xí)下2017-01-01