<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      專欄 正文
      發私信給稀土
      發送

      1

      還沒用上Android N沒關系,關于其“通知”的這些變化也許你想知道

      本文作者: 稀土 2016-07-07 17:49
      導語:收到消息后的視覺刷新,改進對自定義視圖的支持,擴展了更加實用的直接回復消息的形式,新的MessagingStyle,捆綁的通知。

      雷鋒網按:本文由掘金翻譯計劃譯者DeadLion譯自Ian Lake《Notifications in Android N》,校對者:danke77xcc3641。本文首發稀土掘金,未經允許,禁止轉載。

      Android通知往往是應用和用戶之間至關重要的交互形式。為了提供更好的用戶體驗,Android N在通知上做出了諸多改進:收到消息后的視覺刷新,改進對自定義視圖的支持,擴展了更加實用的直接回復消息的形式,新的 MessagingStyle,捆綁的通知。

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

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

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

      通知收到后的操作也重新設計了,現在視覺上是在通知下方單獨的一欄中。

      你會注意到,圖標都沒有出現在新的通知中,取而代之的是,將通知內有限的空間提供給了標簽本身。然而,在舊版本的 Android 和設備上,通知操作圖標仍然需要且被繼續使用,如Android Wear。

      如果你使用NotificationCompat.Builder創建了自己的通知,那么可以使用標準樣式,無需修改任何代碼就能變成默認的新樣子。

      更好的支持自定義視圖

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

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

      直接回復

      雖然通知是可以用來啟動一個Activity,或以一個ServiceBroadcastReceiver的方式在后臺工作,直接回復允許你使用通知操作直接在內嵌輸入框中回復。

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

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

      // 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();

      一旦已經構造好RemoteInput,可以通過恰當命名的addRemoteInput())方法附加到Action上。也可以考慮調用setAllowGeneratedReplies(true)方法允許Android Wear 2.0生成智能回復,方便用戶快速回應。

      // 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();

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

      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;
       }

      處理文本后,必須更新通知。這將觸發隱藏直接回復 UI,這可以作為一種技巧來確認用戶是否收到回復并正確處理。

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

      不過,如果你是在做一個消息應用,期待著“你來我往”的對話,那就應該用MessagingStyle,將額外消息追加上去。

      MessagingStyle

      我們已經優化過正在對話狀態中消息的顯示,用新的MessagingStyle直接回復。

      對于通過多addMessage()方法增加多條消息,這種風格提供內置的格式化。每個消息支持通過文本本身、一個時間戳,以及消息的發送人來增加(使它易于支持組對話)。

      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"));

      你可能會注意到,這種風格能很好的支持特殊用戶消息的展示,填寫它們的名字(上例中的“Me”),設置一個可選的對話標題。
      雖然可以手動通過 “BigTextStyle” 來完成,使用這種風格的 Android Wear 2.0 用戶能立即得到內置響應,不會被“踢出”擴展通知視圖,無需創建完整的穿戴(Android Wear)應用就能達到無縫體驗。

      捆綁通知

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

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

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

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

      為了提升所有Android N設備的用戶體驗,發送4個或者更多通知時沒有以組的方式,這些通知將自動合并成一組

      為通知而生的Android N

      通知在Android上是一直不斷改進的功能。從Gingerbread時代的單擊目標,到可擴展通知,操作,MediaStyle以及現在的直接回復,綁定通知。通知在Android用戶體驗上扮演著不可或缺的一部分。

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

      雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

      還沒用上Android N沒關系,關于其“通知”的這些變化也許你想知道

      分享:
      相關文章

      專欄作者

      稀土掘金,挖掘最優質的互聯網技術 https://juejin.im
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 亚洲经典三级| 99在线视频免费观看| 免费看又黄又无码的网站| 国产尤物av尤物在线观看| 夜夜爽夜夜叫夜夜高潮漏水 | 天堂毛片| www.97| 国产地址二永久伊甸园| 18禁久久久久久久| 综合偷自拍亚洲乱中文字幕| 亚洲欧美综合中文| 久久国产精品成人影院| 性夜久久一区国产9人妻| 欧美视频免费一区二区三区| 久久精品亚洲日本波多野结衣| 任我爽精品视频在线播放| 色噜噜狠狠色综合成人网| 超碰福利导航| 尹人香蕉久久99天天拍| 亚洲欧美综合中文| 久久久久久国产精品无码超碰动画| 国产精品久久精品三级| 亚洲熟妇无码一区二区三区导航| 日韩视频在线观看网址| 日本污视频在线观看| 男女啪啦啦超猛烈动态图| 福利视频在线一区二区| 国产亚洲中文| 人妻少妇av中文字幕乱码| 影音先锋一区二区| 国产又色又爽又刺激视频| 亚洲国产人成自久久国产| 天堂色综合| 成人片黄网站色大片免费| 97人妻成人免费视频| 日韩精品亚洲人成在线观看 | 日韩欧美亚洲综合久久| 一边吃奶一边做动态图| 欧美阿V| 色欲二区| 亚洲日韩国产精品第一页一区 |