Android N : 升級版的Notification


在Android N中對Notification進行了很大的更新爷怀,添加了一些新的API

Android N,Notification的新特性

  • 新的樣式模板-更簡約碧囊,顯的不是那么凌亂
  • 不在和status bar捆綁
  • 不需要打開應(yīng)用,就可以直接回復(fù)
  • 個性化定制

Notification 新模板


在Android N中引入了一些新的通知模板,使得通知看起來更簡潔,這些模板是系統(tǒng)提供的,不
需要開發(fā)者修改自己的代碼

NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
        .setSmallIcon(R.drawable.ic_phonelink_ring_primary_24dp)
        .setContentTitle(title)
        .setContentText(message)
        .setLargeIcon(largeIcon)
        .setAutoCancel(true);

在Android N之前的版本上的效果圖如下

同樣的代碼在Android N的效果圖如下

不需要修改任何代碼脊阴,在Android N上就可以體驗到新的通知模板

使用 setColor()

在創(chuàng)建通知時也可以使用方法 setColor(),來改變字體的顏色

NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
    // Other properties
    .setColor(ContextCompat.getColor(context, R.color.primary));
效果圖

捆綁通知

在Android N中捆綁通知-就是一個通知組可以顯示很多條通知,對于同一個應(yīng)用的多個通知
就可以使用這個特性,這樣可以避免很多的通知對用戶造成干擾

必須為這組通知設(shè)置組的描述
在創(chuàng)建通知時使用 setGroup()

NotificationCompat.Builder builderOne = new NotificationCompat.Builder(context)
    // Other properties
    .setGroupSummary(true)
    .setGroup(KEY_NOTIFICATION_GROUP);

NotificationCompat.Builder builderTwo = new NotificationCompat.Builder(context)
    // Other properties
    .setGroupSummary(true)
    .setGroup(KEY_NOTIFICATION_GROUP);

NotificationCompat.Builder builderThree = new NotificationCompat.Builder(context)
    // Other properties
    .setGroupSummary(true)
    .setGroup(KEY_NOTIFICATION_GROUP);
效果圖

和創(chuàng)建標(biāo)準(zhǔn)的通知的方式一樣嘿期,創(chuàng)建不同的通知的實例品擎,然后將這些實例設(shè)置一個 setGroup()

PendingIntent archiveIntent = PendingIntent.getActivity(...);
NotificationCompat.Action replyAction = ...;
NotificationCompat.Action archiveAction = ...;

NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
    // Other properties
    .setGroup(KEY_NOTIFICATION_GROUP)
    .addAction(replyAction)
    .addAction(archiveAction);

直接回復(fù)

使用API RemoteInput 就可以在通知中直接進行回復(fù)

添加直接回復(fù)操作

需要創(chuàng)建一個RemoteInput的實例

RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
    .setLabel(LABEL_REPLY)
    .build();
  1. 通過創(chuàng)建PendingIntent 實例,和應(yīng)用進行交互
PendingIntent replyIntent = PendingIntent.getActivity(context,
        REPLY_INTENT_ID,
        getDirectReplyIntent(context, LABEL_REPLY),
        PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntent archiveIntent = PendingIntent.getActivity(context,
        ARCHIVE_INTENT_ID,
        getDirectReplyIntent(context, LABEL_ARCHIVE),
        PendingIntent.FLAG_UPDATE_CURRENT);

private static Intent getDirectReplyIntent(Context context, String label) {
        return MessageActivity.getStartIntent(context)
                .addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
                .setAction(REPLY_ACTION)
                .putExtra(CONVERSATION_LABEL, label);
}
  1. 創(chuàng)建 NotificationCompat.Action

有了PendingIntents,我們就需要結(jié)合RemoteInput來創(chuàng)建 NotificationCompat.Action

NotificationCompat.Action replyAction =
        new NotificationCompat.Action.Builder(R.drawable.ic_reply,
                LABEL_REPLY, replyIntent)
                .addRemoteInput(remoteInput)
                .build();

NotificationCompat.Action archiveAction =
        new NotificationCompat.Action.Builder(R.drawable.ic_archive,
                LABEL_ARCHIVE, archiveIntent)
                .build();
  1. 創(chuàng)建 Notification 實例
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
        .setSmallIcon(R.drawable.ic_phonelink_ring_primary_24dp)
        .setContentTitle(title)
        .setContentText(message)
        .setLargeIcon(largeIcon)
        .addAction(replyAction);
        .addAction(archiveAction);
        .setAutoCancel(true);

應(yīng)用接收

創(chuàng)建了直接回復(fù)秽五,還需要在應(yīng)用端對回復(fù)的內(nèi)容做處理

Bundle bundle = RemoteInput.getResultsFromIntent(intent);
if (remoteInput != null) {
    return bundle.getCharSequence(NotificationUtil.KEY_TEXT_REPLY);
}

定制通知

定制盡量的按照Android Design 的規(guī)則進行定制化孽查,主要是使用 RemoteViews 來定制通知

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.notif_custom_view);
remoteViews.setImageViewResource(R.id.image_icon, iconResource);
remoteViews.setTextViewText(R.id.text_title, title);
remoteViews.setTextViewText(R.id.text_message, message);
remoteViews.setImageViewResource(R.id.image_end, imageResource);

文中的代碼示例
原文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坦喘,隨后出現(xiàn)的幾起案子盲再,更是在濱河造成了極大的恐慌,老刑警劉巖瓣铣,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件答朋,死亡現(xiàn)場離奇詭異,居然都是意外死亡棠笑,警方通過查閱死者的電腦和手機梦碗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓖救,“玉大人洪规,你說我怎么就攤上這事⊙啵” “怎么了斩例?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長从橘。 經(jīng)常有香客問我念赶,道長,這世上最難降的妖魔是什么恰力? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任叉谜,我火速辦了婚禮,結(jié)果婚禮上踩萎,老公的妹妹穿的比我還像新娘停局。我一直安慰自己,他們只是感情好香府,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布翻具。 她就那樣靜靜地躺著,像睡著了一般回还。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叹洲,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天柠硕,我揣著相機與錄音,去河邊找鬼。 笑死蝗柔,一個胖子當(dāng)著我的面吹牛闻葵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播癣丧,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼槽畔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胁编?” 一聲冷哼從身側(cè)響起厢钧,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嬉橙,沒想到半個月后早直,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡市框,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年霞扬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枫振。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡喻圃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粪滤,到底是詐尸還是另有隱情斧拍,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布额衙,位于F島的核電站饮焦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窍侧。R本人自食惡果不足惜县踢,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伟件。 院中可真熱鬧硼啤,春花似錦、人聲如沸斧账。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咧织。三九已至嗓袱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間习绢,已是汗流浹背渠抹。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工蝙昙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梧却。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓奇颠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親放航。 傳聞我的和親對象是個殘疾皇子烈拒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容