Android消息個(gè)數(shù)提醒控件使用詳解
前言
在QQ中有消息個(gè)數(shù)提醒的控件,雖然現(xiàn)在沒(méi)用到,但是以后可能會(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);
//得到測(cè)量的高度和寬度
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è)置繪圖無(wú)鋸齒
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方法來(lái)得到寬度和高度,因?yàn)楸尘盀閳A形,所以我們?nèi)挾群透叨葍烧咧g的最大值,然后設(shè)置控件大小為一個(gè)正方形,在這個(gè)正方形的矩形里面,調(diào)用drawCircle方法來(lái)繪制圓形,設(shè)置畫筆的顏色為紅色即可。
小結(jié)
在布局文件使用這個(gè)類的時(shí)候,要設(shè)置android:gravity為center,這樣數(shù)字就可以居中了,之所以沒(méi)有繼承View來(lái)進(jìn)行寫,因?yàn)閂iew還要自己去畫數(shù)字,這樣就增加了難度,不值得了。
源碼下載點(diǎn)擊這里。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android 個(gè)人理財(cái)工具一:項(xiàng)目概述與啟動(dòng)界面的實(shí)現(xiàn)
本文主要介紹Android 開(kāi)發(fā)個(gè)人理財(cái)工具項(xiàng)目概述與啟動(dòng)界面的實(shí)現(xiàn),這里主要對(duì)實(shí)現(xiàn)項(xiàng)目的流程做了詳細(xì)概述,并對(duì)啟動(dòng)界面簡(jiǎn)單實(shí)現(xiàn),有需要的小伙伴可以參考下2016-08-08
Android編程中TextView寬度過(guò)大導(dǎo)致Drawable無(wú)法居中問(wèn)題解決方法
這篇文章主要介紹了Android編程中TextView寬度過(guò)大導(dǎo)致Drawable無(wú)法居中問(wèn)題解決方法,以實(shí)例形式較為詳細(xì)的分析了TextView設(shè)置及xml布局與調(diào)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
Android仿UC底部菜單欄實(shí)現(xiàn)原理與代碼
最近剛看完ViewPager,開(kāi)始我打算用自定義的imgBtn,但是發(fā)現(xiàn)放在pager選項(xiàng)卡中不好排版,所以最好選了GridView,接下來(lái)介紹底部菜單欄實(shí)現(xiàn)2013-01-01
android打開(kāi)應(yīng)用所在的市場(chǎng)頁(yè)面進(jìn)行評(píng)分操作的方法
這篇文章主要介紹了android打開(kāi)應(yīng)用所在的市場(chǎng)頁(yè)面進(jìn)行評(píng)分操作的方法,涉及Android操作市場(chǎng)頁(yè)面評(píng)分效果的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
Android Studio EditText點(diǎn)擊圖標(biāo)清除文本內(nèi)容的實(shí)例解析
這篇文章主要介紹了Android Studio EditText點(diǎn)擊圖標(biāo)清除文本內(nèi)容的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11

