您好,登錄后才能下訂單哦!
角標,英語是badge,也就是“徽章,像章,獎章; 象征,標記”的意思。
效果圖
可以看到圖中的環信單聊這個app右上角的紅色的圓圈,里面有6這個數字的,就是一種角標。
一般來說,應用的角標是用來標記有多少條提醒(Notification)沒讀(unread),一旦點擊提示進應用閱讀了,角標也會消失。
一些必要的說明
角標原本是蘋果的iOS中的東西,Android原生并不支持角標,因為Google的意思是讓大家用Notification(提示欄)即可,不過無妨,厲害的Android第三方廠商可以通過在自定義的Launcher(啟動器)中操作來實現添加角標。
原理
添加角標的原理就是發送一個Broadcast(廣播),在廣播的Intent中指定需要被添加角標的應用的packageName(包名),className(類名),count(角標數目)。當然了,不同廠商的手機的角標操作的Intent的action是不一樣的。
在AndroidManifest.xml中添加讀取和寫入角標的權限:
<uses-permission android:name="com.sec.android.provider.badge.permission.READ" /> <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />
設置角標和清除角標的工具類
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"; //設置角標 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); } //清除角標 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(); } }
注意:
因為不同手機廠商的action不同,所以可能導致某些手機不能使用,在此推薦一個github的第三方庫:https://github.com/leolin310148/ShortcutBadger
github地址:https://github.com/zhouxu88/AppBadge
完整demo下載地址:AppBadge_jb51.rar
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。