丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
專欄 正文
發(fā)私信給稀土
發(fā)送

1

還沒(méi)用上Android N沒(méi)關(guān)系,關(guān)于其“通知”的這些變化也許你想知道

本文作者: 稀土 2016-07-07 17:49
導(dǎo)語(yǔ):收到消息后的視覺(jué)刷新,改進(jìn)對(duì)自定義視圖的支持,擴(kuò)展了更加實(shí)用的直接回復(fù)消息的形式,新的MessagingStyle,捆綁的通知。

雷鋒網(wǎng)按:本文由掘金翻譯計(jì)劃譯者DeadLion譯自Ian Lake《Notifications in Android N》,校對(duì)者:danke77xcc3641。本文首發(fā)稀土掘金,未經(jīng)允許,禁止轉(zhuǎn)載。

Android通知往往是應(yīng)用和用戶之間至關(guān)重要的交互形式。為了提供更好的用戶體驗(yàn),Android N在通知上做出了諸多改進(jìn):收到消息后的視覺(jué)刷新,改進(jìn)對(duì)自定義視圖的支持,擴(kuò)展了更加實(shí)用的直接回復(fù)消息的形式,新的 MessagingStyle,捆綁的通知。

同樣的通知,不一樣的“面貌”

首先,最明顯的變化是通知的默認(rèn)外觀已經(jīng)顯著改變。除了應(yīng)用程序的圖標(biāo)和名稱會(huì)固定在通知內(nèi),很多分散在通知周圍的字段也被折疊進(jìn)新的標(biāo)題行內(nèi)。這一改變是為了確保盡可能騰出更多空間給標(biāo)題、文本和大圖標(biāo),這樣一來(lái)通知就比現(xiàn)在的稍大些,更加易讀。

給出單標(biāo)題行,這就比以往的信息更加重要且更有用。當(dāng)指定Android N時(shí),默認(rèn)情況下,時(shí)間會(huì)被隱藏——對(duì)時(shí)間敏感的通知(比如消息類應(yīng)用),可以setShowWhen(true)設(shè)置重新啟用顯示時(shí)間。此外,現(xiàn)在subtext會(huì)取代內(nèi)容消息和數(shù)量的作用:數(shù)量是絕不會(huì)在Android N設(shè)備上出現(xiàn)的,除非指定之前的Android版本,而且不包含任何subtext,內(nèi)容消息將會(huì)顯示。在所有情況下,都要確保subtext是相關(guān)且有意義的。例如,如果用戶只有一個(gè)賬號(hào),就不要再添加郵箱賬戶作為subtext了。

通知收到后的操作也重新設(shè)計(jì)了,現(xiàn)在視覺(jué)上是在通知下方單獨(dú)的一欄中。

你會(huì)注意到,圖標(biāo)都沒(méi)有出現(xiàn)在新的通知中,取而代之的是,將通知內(nèi)有限的空間提供給了標(biāo)簽本身。然而,在舊版本的 Android 和設(shè)備上,通知操作圖標(biāo)仍然需要且被繼續(xù)使用,如Android Wear。

如果你使用NotificationCompat.Builder創(chuàng)建了自己的通知,那么可以使用標(biāo)準(zhǔn)樣式,無(wú)需修改任何代碼就能變成默認(rèn)的新樣子。

更好的支持自定義視圖

如果要從自定義 RemoteViews 創(chuàng)建自己的通知,以適應(yīng)任何新的樣式一直以來(lái)都很具有挑戰(zhàn)性。隨著新的 header,擴(kuò)展行為,操作,和大圖標(biāo)位置都作為元素從通知的主要內(nèi)容標(biāo)題中分離出來(lái),我們已經(jīng)介紹一種新的 DecoratedCustomViewStyleDecoratedMediaCustomViewStyle 提供所有這些元素使用, 這樣就能使用新的 setCustomContentView() 方法,專注于內(nèi)容部分。

這也確保未來(lái)外觀改變了,也能輕易的隨著平臺(tái)更新,適配這些樣式,還無(wú)需修改app端的代碼。

直接回復(fù)

雖然通知是可以用來(lái)啟動(dòng)一個(gè)Activity,或以一個(gè)ServiceBroadcastReceiver的方式在后臺(tái)工作,直接回復(fù)允許你使用通知操作直接在內(nèi)嵌輸入框中回復(fù)。

直接回復(fù)使用相同的RemoteInput API,最初是為Android Wear某個(gè)Action用的,為了能直接接收用戶的輸入。

RemoteInput本身包含信息,如將用于以后恢復(fù)輸入的秘鑰,在用戶開(kāi)始輸入之前的提示信息。

// Where should direct replies be put in the intent bundle (can be any string)
private static final String KEY_TEXT_REPLY = "key_text_reply";

// Create the RemoteInput specifying this key
String replyLabel = getString(R.string.reply_label);
RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
        .setLabel(replyLabel)
        .build();

一旦已經(jīng)構(gòu)造好RemoteInput,可以通過(guò)恰當(dāng)命名的addRemoteInput())方法附加到Action上。也可以考慮調(diào)用setAllowGeneratedReplies(true)方法允許Android Wear 2.0生成智能回復(fù),方便用戶快速回應(yīng)。

// Add to your action, enabling Direct Reply for it
NotificationCompat.Action action =
    new NotificationCompat.Action.Builder(R.drawable.reply, replyLabel, pendingIntent)
        .addRemoteInput(remoteInput)
        .setAllowGeneratedReplies(true)
        .build();

請(qǐng)記住,在Marshmallow中,被傳入ActionpendingIntent應(yīng)該是一個(gè)Activity。更低版本的設(shè)備不支持直接回復(fù)(你可能會(huì)想解鎖屏幕,啟動(dòng)一個(gè)Activity,然后聚焦到用戶回復(fù)的輸入框中),Android N設(shè)備上Service(如果你想要在一個(gè)單獨(dú)的線程中運(yùn)行) 或BroadcastReceiver(運(yùn)行在UI線程中) 即便處于鎖頻狀態(tài),后臺(tái)也能處理文本輸入。(在系統(tǒng)設(shè)置中有一個(gè)獨(dú)立的用戶選項(xiàng),可以啟用/禁用鎖定設(shè)備的直接回復(fù)功能。)

Service/BroadcastReceiver中提取輸入的文本,可能需要RemoteInput.getResultsFromIntent())的幫助。

private CharSequence getMessageText(Intent intent) {
    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
    if (remoteInput != null) {
        return remoteInput.getCharSequence(KEY_TEXT_REPLY);
    }
    return null;
 }

處理文本后,必須更新通知。這將觸發(fā)隱藏直接回復(fù) UI,這可以作為一種技巧來(lái)確認(rèn)用戶是否收到回復(fù)并正確處理。

對(duì)于大多數(shù)模板,這將涉及使用新的setRemoteInputHistory()方法,將答復(fù)追加到通知底部。更多回復(fù)應(yīng)該追到歷史記錄下,直到主要內(nèi)容更新(比如別人的回復(fù))。

不過(guò),如果你是在做一個(gè)消息應(yīng)用,期待著“你來(lái)我往”的對(duì)話,那就應(yīng)該用MessagingStyle,將額外消息追加上去。

MessagingStyle

我們已經(jīng)優(yōu)化過(guò)正在對(duì)話狀態(tài)中消息的顯示,用新的MessagingStyle直接回復(fù)。

對(duì)于通過(guò)多addMessage()方法增加多條消息,這種風(fēng)格提供內(nèi)置的格式化。每個(gè)消息支持通過(guò)文本本身、一個(gè)時(shí)間戳,以及消息的發(fā)送人來(lái)增加(使它易于支持組對(duì)話)。

builder.setStyle(new NotificationCompat.MessagingStyle("Me")
    .setConversationTitle("Team lunch")
    .addMessage("Hi", timestampMillis1, null) // Pass in null for user.
    .addMessage("What's up?", timestampMillis2, "Coworker")
    .addMessage("Not much", timestampMillis3, null)
    .addMessage("How about lunch?", timestampMillis4, "Coworker"));

你可能會(huì)注意到,這種風(fēng)格能很好的支持特殊用戶消息的展示,填寫(xiě)它們的名字(上例中的“Me”),設(shè)置一個(gè)可選的對(duì)話標(biāo)題。
雖然可以手動(dòng)通過(guò) “BigTextStyle” 來(lái)完成,使用這種風(fēng)格的 Android Wear 2.0 用戶能立即得到內(nèi)置響應(yīng),不會(huì)被“踢出”擴(kuò)展通知視圖,無(wú)需創(chuàng)建完整的穿戴(Android Wear)應(yīng)用就能達(dá)到無(wú)縫體驗(yàn)。

捆綁通知

一旦你想建立了一個(gè)“巨牛逼”的通知,通過(guò)使用新的視覺(jué)設(shè)計(jì),直接回復(fù),MessagingStyle還有所有之前最佳實(shí)踐,但考慮通知的整體體驗(yàn)也很重要,尤其是發(fā)送多條通知的情況(每個(gè)正在進(jìn)行的談話或每個(gè)新的電子郵件線程)。

捆綁通知提供兩全其美的辦法:一個(gè)單獨(dú)的概要通知,當(dāng)用戶在看其他通知或者想要同時(shí)操作所有通知時(shí)在個(gè)別通知上擴(kuò)展了組操作能力(包括使用操作和直接回復(fù))。

如果你為Android Wear創(chuàng)建了堆通知,這里使用的API是完全一樣的。只需將setGroup())添加到每個(gè)單獨(dú)通知中,將那些通知“綁定”到一起。不僅限于綁定成一組,所有捆綁通知是十分靈活的。對(duì)于郵件應(yīng)用,可能考慮每個(gè)賬戶的郵件“捆”成一組。

創(chuàng)建概要通知也是很重要的。這個(gè)概要通知,通過(guò)setGroupSummary(true)) 展示通知,這也是唯一支持 Marshmallow和更低版本的設(shè)備的通知,會(huì)歸納所有個(gè)人通知(你猜對(duì)了)。這是使用InboxStyle的最佳時(shí)機(jī),雖然沒(méi)有要求用它。在Android N或更高版本設(shè)備上,從概要通知上提取的某些信息(如subtext、content intent和delete intent),來(lái)為捆綁通知生成collapsed通知,所以你應(yīng)該繼續(xù)在所有API級(jí)別上生成概要通知。

為了提升所有Android N設(shè)備的用戶體驗(yàn),發(fā)送4個(gè)或者更多通知時(shí)沒(méi)有以組的方式,這些通知將自動(dòng)合并成一組

為通知而生的Android N

通知在Android上是一直不斷改進(jìn)的功能。從Gingerbread時(shí)代的單擊目標(biāo),到可擴(kuò)展通知,操作,MediaStyle以及現(xiàn)在的直接回復(fù),綁定通知。通知在Android用戶體驗(yàn)上扮演著不可或缺的一部分。

隨著許多新工具可使用(NotificationCompat能幫助保持向后兼容),我已經(jīng)迫不及待的想看看如何用這些工具創(chuàng)建更好的應(yīng)用。

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

還沒(méi)用上Android N沒(méi)關(guān)系,關(guān)于其“通知”的這些變化也許你想知道

分享:
相關(guān)文章

專欄作者

稀土掘金,挖掘最優(yōu)質(zhì)的互聯(lián)網(wǎng)技術(shù) https://juejin.im
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)