堆疊通知信息

zqum1804 8年前發布 | 6K 次閱讀 安卓開發 Android開發 移動開發

在你的手機上,你不應該給相似的內容產生多條通知。比如用戶收到了兩條新信息時,你不應該生成兩條信息而是一條總結性信息:“2條新消息”。

但是總結消息在手表上是不適用的,因為如果不能在手表上閱讀每條信息的細節,用戶們就需要打開手機來查看消息內容。所以在手表上,你需要把所有的信息堆疊起來。被堆疊起來的信息看起來就像一張卡片,用戶可以分別的查看每條信息。而且, setGroup() 方法讓你的app在手機上仍然顯示一條總結性的消息。

把通知添加到組里

為了添加到正確的組,你要在調用setGroup方法的時候需要指定一個key來標識。

final static String GROUP_KEY_EMAILS = "group_key_emails";

// 建立Notification并設置到合適的組里
Notification notif = new NotificationCompat.Builder(mContext)
         .setContentTitle("New mail from " + sender1)
         .setContentText(subject1)
         .setSmallIcon(R.drawable.new_mail)
         .setGroup(GROUP_KEY_EMAILS)
         .build();

// 發送通知
NotificationManagerCompat notificationManager =
        NotificationManagerCompat.from(this);
notificationManager.notify(notificationId1, notif);

接下來,當你在創建其他通知的時候,指定相同的key。這個通知將會和上面的這個通知堆疊起來。

Notification notif2 = new NotificationCompat.Builder(mContext)
         .setContentTitle("New mail from " + sender2)
         .setContentText(subject2)
         .setSmallIcon(R.drawable.new_mail)
         .setGroup(GROUP_KEY_EMAILS)
         .build();notificationManager.notify(notificationId2, notif2);

默認的,通知會按照你添加的順序來排列,最新的通知會顯示在最上面。你也可以通過調用 setSortKey() 來按照你想要的方式排序。

添加總結性的消息

在你的手機上提供總結性的消息仍然是非常重要的,用setGroupSummary()來添加這個專用的總結消息。

這個總結消息將不會出現在你的手表上,而只會出現在你的手機上。

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),
        R.drawable.ic_large_icon);
// 建立 InboxStyle 風格的通知
Notification summaryNotification = new NotificationCompat.Builder(mContext)
        .setContentTitle("2 new messages")
        .setSmallIcon(R.drawable.ic_small_icon)
        .setLargeIcon(largeIcon)
        .setStyle(new NotificationCompat.InboxStyle()
                .addLine("Alex Faaborg   Check this out")
                .addLine("Jeff Chang   Launch Party")
                .setBigContentTitle("2 new messages")
                .setSummaryText("johndoe@gmail.com"))
        .setGroup(GROUP_KEY_EMAILS)
        .setGroupSummary(true)
        .build();
notificationManager.notify(notificationId3, summaryNotification);

這個通知使用了 NotificationCompat.InboxStyle ,這種風格非常適用與郵件或者消息信息。你也可以使用其他在 NotificationCompat 里定義的style或無style的總結消息。

tip:如果你想得到圖片上的文字效果,你可以閱讀 Styling with HTML markup 和 Styling with Spannables

總結消息也可以通過其他各種方式影響手表上通知的樣子,比如你可以設置背景圖片和添加action.

下面是添加背景圖片的例子。

Bitmap background = BitmapFactory.decodeResource(getResources(),
        R.drawable.ic_background);

NotificationCompat.WearableExtender wearableExtender =
        new NotificationCompat.WearableExtender()
        .setBackground(background);

// 建立InboxStyle notification
Notification summaryNotificationWithBackground =
        new NotificationCompat.Builder(mContext)
        .setContentTitle("2 new messages")
        ...
        .extend(wearableExtender)
        .setGroup(GROUP_KEY_EMAILS)
        .setGroupSummary(true)
        .build();

 

來自:http://www.jianshu.com/p/e87ba9c5bffe

 

 本文由用戶 zqum1804 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!