Android為應(yīng)用添加數(shù)字角標(biāo)的簡(jiǎn)單實(shí)現(xiàn)
角標(biāo),英語(yǔ)是badge,也就是“徽章,像章,獎(jiǎng)?wù)拢?象征,標(biāo)記”的意思。
效果圖
可以看到圖中的環(huán)信單聊這個(gè)app右上角的紅色的圓圈,里面有6這個(gè)數(shù)字的,就是一種角標(biāo)。
一般來(lái)說(shuō),應(yīng)用的角標(biāo)是用來(lái)標(biāo)記有多少條提醒(Notification)沒(méi)讀(unread),一旦點(diǎn)擊提示進(jìn)應(yīng)用閱讀了,角標(biāo)也會(huì)消失。
一些必要的說(shuō)明
角標(biāo)原本是蘋果的iOS中的東西,Android原生并不支持角標(biāo),因?yàn)镚oogle的意思是讓大家用Notification(提示欄)即可,不過(guò)無(wú)妨,厲害的Android第三方廠商可以通過(guò)在自定義的Launcher(啟動(dòng)器)中操作來(lái)實(shí)現(xiàn)添加角標(biāo)。
原理
添加角標(biāo)的原理就是發(fā)送一個(gè)Broadcast(廣播),在廣播的Intent中指定需要被添加角標(biāo)的應(yīng)用的packageName(包名),className(類名),count(角標(biāo)數(shù)目)。當(dāng)然了,不同廠商的手機(jī)的角標(biāo)操作的Intent的action是不一樣的。
在AndroidManifest.xml中添加讀取和寫入角標(biāo)的權(quán)限:
<uses-permission android:name="com.sec.android.provider.badge.permission.READ" /> <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />
設(shè)置角標(biāo)和清除角標(biāo)的工具類
public class BadgeUtils { private static final String INTENT_ACTION = "android.intent.action.BADGE_COUNT_UPDATE"; private static final String INTENT_EXTRA_BADGE_COUNT = "badge_count"; private static final String INTENT_EXTRA_PACKAGENAME = "badge_count_package_name"; private static final String INTENT_EXTRA_ACTIVITY_NAME = "badge_count_class_name"; //設(shè)置角標(biāo) public static void setBadgeCount(Context context, int badgeCount) { Intent intent = new Intent(INTENT_ACTION); intent.putExtra(INTENT_EXTRA_BADGE_COUNT, badgeCount); intent.putExtra(INTENT_EXTRA_PACKAGENAME, getComponentName(context).getPackageName()); intent.putExtra(INTENT_EXTRA_ACTIVITY_NAME, getComponentName(context).getClassName()); context.sendBroadcast(intent); } //清除角標(biāo) public static void removeBadge(Context context){ setBadgeCount(context,0); } //獲取ComponentName private static ComponentName getComponentName(Context context) { return context.getApplicationContext().getPackageManager() .getLaunchIntentForPackage(context.getApplicationContext().getPackageName()) .getComponent(); } }
注意:
因?yàn)椴煌謾C(jī)廠商的action不同,所以可能導(dǎo)致某些手機(jī)不能使用,在此推薦一個(gè)github的第三方庫(kù):https://github.com/leolin310148/ShortcutBadger
github地址:https://github.com/zhouxu88/AppBadge
完整demo下載地址:AppBadge_jb51.rar
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android自定義textview實(shí)現(xiàn)豎直滾動(dòng)跑馬燈效果
這篇文章主要為大家詳細(xì)介紹了Android自定義textview實(shí)現(xiàn)豎直滾動(dòng)跑馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Android實(shí)現(xiàn)View滑動(dòng)的幾種方式
Android中的View類是所有UI控件的基類(Base class),也就是說(shuō)我們平時(shí)所有到的各種UI控件,比如Button、ImagView等等都繼承自View類。這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)View滑動(dòng)的幾種方式,需要的朋友可以參考下2016-04-04jenkins 遠(yuǎn)程構(gòu)建Android的過(guò)程詳解
這篇文章主要介紹了jenkins 遠(yuǎn)程構(gòu)建Android的過(guò)程詳解的相關(guān)資料,需要的朋友可以參考下2016-09-09Android實(shí)現(xiàn)QQ登錄界面遇到問(wèn)題及解決方法
本文給大家介紹android仿qq登錄界面的實(shí)現(xiàn)代碼,在實(shí)現(xiàn)此功能過(guò)程中遇到各種問(wèn)題,但是最終都順利解決,如果大家對(duì)android qq登錄界面實(shí)現(xiàn)方法感興趣的朋友一起學(xué)習(xí)吧2016-09-09Android 使用AsyncTask實(shí)現(xiàn)多任務(wù)多線程斷點(diǎn)續(xù)傳下載
這篇文章主要介紹了Android 使用AsyncTask實(shí)現(xiàn)多任務(wù)多線程斷點(diǎn)續(xù)傳下載的相關(guān)資料,需要的朋友可以參考下2018-05-05