成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android 7.1 新特性之 Shortcuts 介紹

開發 開發工具
今天主要介紹關于Android 7.1 的新特性Shortcuts。

Android 7.1 允許 App 自定義 Shortcuts,類似 iOS 的 3D touch。通過在桌面長按 App 彈出 Shortcut 列表,點擊某個 Shortcut 快速進入某項操作,同時 Shortcut 可以拖動到桌面進行固定,如下圖系統日歷 App:

系統日歷 App

由于 7.1 SDK 的 Sources 尚未開放,目前大部分內容還是根據官方 API 文檔而來,還有些細節和可能的 Bug 還得等 Sources 開放。

Shortcuts 全面介紹分為兩篇,本文是基礎介紹,關于 Shortcuts 一些不錯的實踐和目前的問題可訪問 trinea.cn ***文章。

1. Shortcuts 作用及分類

Shortcuts 為 App 常用操作提供了快速訪問的方式,如上面日歷的新建提醒。 這個功能目前只能在 Android 7.1 系統桌面進行使用,這個依然保留著“應用抽屜”古老設計的產品國內應該沒多少用戶。三方桌面可以通過 API 接入這個功能。

目前支持 Shortcut 的應用主要還是 Google 的 App,看到有即刻的朋友說他們在 7.1 系統發布時快速支持了這個功能并上線,速度很贊。

類似 BroadcastReceiver 可通過靜態和動態方式注冊,Shortcuts 也可以通過靜態和動態方式添加。

2. 靜態 Shortcuts(Static Shortcuts)

靜態 ShortcutsStatic Shortcuts 通過在 Manifest 中聲明添加。缺點是不可以修改,只能通過應用升級來添加新的靜態 Shortcuts。添加主要分為兩步:

(1)AndroidManifest 的 Main Launcher 對應的 Activity 內添加 meta-datameta-data name 為 android.app.shortcuts,如下:

AndroidManifest 的 Main Launcher 對應的 Activity 內添加 meta-datameta-data name 為 android.app.shortcuts

必須在 Main Launcher 對應的 Activity 內設置,其中 android:resource 指向定義了 shortcuts 的資源文件。

(2)資源文件中定義具體的 shortcutsres 目錄下新建 xml 文件夾,并新建 shortcuts.xml 文件,內容如下:

資源文件中定義具體的 shortcutsres 目錄下新建 xml 文件夾,并新建 shortcuts.xml 文件

以 shortcuts 元素為根,可以包含多個 shortcut 元素,每個 shortcut 元素表示一個 shortcut。其中屬性分別表示:

(1) shortcutId 表示 shortcut 唯一標識符,相同的 shortcutId 會被覆蓋。必須字段。

(2) shortcutShortLabel 為將 shortcut 拖動到桌面時顯示的名字,官方建議不超過 10 個字符,必須字段。

(3) shortcutLongLabel 為 shortcut 列表中每個 shortcut 的名字,不宜過長,如果過長或未設置默認會顯示 ShortLabel,官方建議不超過 25 個字符。可選字段。

(4) icon 為 shortcut 的 icon,在列表展示和拖動到桌面時顯示需要,可選字段。

(5) enabled 表示 shortcut 是否可用,false 表示禁用。xml 中這個屬性幾乎沒有被設置為 false 的實際場景,具體原因可見 6.7 如何更好的刪除(廢棄)老的 Shortcut中介紹。

(6) shortcutDisabledMessage 為已固定在桌面的 shortcut 被 Disabled 后點擊時的 Toast 提示內容。可選字段。

(7) intent 為點擊 shortcut 時響應的 intent,必須字段。

這里可以添加多個 intent,但點擊時不會啟動所有 intent,而是啟動***一個 intent,在這個 intent 回退時會啟動它前面一個 intent,相當于自動將所有 intent 添加到了堆棧。

intent 可設置屬性包括:

android:action、android:data、android:mimeType、android:targetClass、android:targetPackage,其中 android:action 為必須屬性。

3. 動態 Shortcuts(Dynamic Shortcuts)

動態 ShortcutsDynamic Shortcuts 通過 ShortcutManager API 進行操作。可以動態添加、修改、刪除。

動態 ShortcutsDynamic Shortcuts可以動態添加、修改、刪除

通過 ShortcutInfo.Builder 新建 ShortcutInfo,再通過 shortcutManager 添加即可。其他:

(1) setDynamicShortcuts(List) 可以替換并添加所有 shortcut 列表;

(2) addDynamicShortcuts(List) 可以添加新的 shortcut 到列表,超過***個數會報異常;

(3) updateShortcuts(List) 可以更新一組 shortcuts;

(4) removeDynamicShortcuts(List) 和 removeAllDynamicShortcuts() 可以刪除部分或所有 shortcuts。

ShortcutInfo 的屬性與 xml 中定義字段含義一致,shortcutId shortcutShortLabel intent 是必須設置的字段,并且 intent 必須設置 Action。

4. 固定的 Shortcuts(Pinned Shortcuts)

指通過拖動固定到桌面的 Shortcuts,App 不可以添加、修改、刪除這些 Shortcuts,只能禁用他們。即便 App 內刪除了某個 Shorcut,對應的已固定到桌面的 Shortcuts 也不會被刪除。

可以通過:

(1) getPinnedShortcuts() 得到所有固定的 Shortcuts 的信息。

(2) disableShortcuts(List) 或 disableShortcuts(List, CharSequence) 禁用動態的 Shortcuts。

對于靜態的 Shortcuts 需要在資源文件中設置 android:enabled="false" 進行禁用,不過沒有必要,靜態 Shortcuts 可直接通過刪除達到禁用的效果,具體原因可見 6.7 如何更好的刪除(廢棄)老的 Shortcut 中介紹。

靜態 Shortcuts 和動態 Shortcuts 是有***個數限制的,默認為 5,超過***個數后添加會報異常。而固定的 Shortcuts 并沒有個數限制,并且固定的 Shortcut 對應的 Shortcut 即便被動態刪除了,依然可以通過 id 進行 Update 操作。

5. 其他

5.1 動態 Shortcuts 與靜態 Shortcuts 區別

(1) 靜態 Shortcuts 只能通過升級應用修改,動態 Shortcuts 隨時可以修改;

(2) 靜態 Shortcuts 的 Intent 無法設置 Flag,默認為 FLAG_ACTIVITY_NEW_TASK 和 FLAG_ACTIVITY_CLEAR_TASK Flag,即若應用運行中會清除所有已存在的 Activity。動態 Shortcuts 的 Intent 可以設置 Flag;

(3) 靜態 Shortcuts 的 rank 系統默認根據聲明順序設置,動態 Shortcuts 的 rank 可以通過 setRank(int rank) 接口主動設置,rank 不能小于 0,值越大表示在 shortcut 列表展示時離 App Icon 越遠。靜態 Shortcuts 默認比動態 Shortcuts 離 App Icon 更近。

(4) 靜態 Shortcuts 刪除可以直接刪除,動態 Shortcuts 建議通過禁用刪除;

5.2 動態 Shortcuts 操作的頻率問題

當應該完全退到后臺(無 Activity 或 Service 在前臺時),其操作 Shortcut(包括添加、刪除、修改) 的頻率是受限的。可通過 isRateLimitingActive() 查詢是否已受限,true 表示已受限。

5.3 跟蹤 Shorcut 使用情況

在 Shortcut 被選擇或者其關聯的操作被操作時需調用 reportShortcutUsed(String shortcutId) 接口上報數據,為了方便啟動器收集應用 Shortcuts 使用情況,可能未來進行預測或者向開發者展示哪些操作適合作為 Shortcuts 以及其優先級。

PS:這個接口其實挺尷尬的,一方面需要 App 主動上報,侵入性太強。另一方面這個預測功能未來也不好加到 Shortcuts 推薦里,更多是個開發工具相關功能。

***是由啟動器自己純粹收集 Shortcut 被選擇的使用情況數據,而不需要統計 Shortcut 被關聯操作通過其他方式調用的使用情況數據。至于哪些操作適合作為 Shortcuts,開發者大可通過其他監控 SDK 去判斷。

【本文是51CTO專欄作者Trinea的原創文章,轉載聯系作者本人獲取授權】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2009-11-23 20:35:12

ibmdwRational

2021-04-30 19:53:41

Java表達式代碼

2012-03-14 12:29:55

JavaPlay Framwo

2021-03-06 08:10:16

Redis6 Java架構分布式框架

2009-08-19 16:51:14

C# 4.0 dyna

2009-03-24 11:54:12

2009-08-12 13:15:44

C#3.5新特性

2011-07-06 16:38:57

Xcode Preview

2009-08-18 17:03:49

C#3.5新特性

2013-10-29 16:50:50

Android 4.4特性

2013-07-29 15:13:35

2009-08-28 08:46:15

Windows 7防火墻

2009-09-27 10:00:00

OSGi 4.2

2013-02-26 09:36:57

RubyRuby 2.0

2009-08-03 18:34:43

TuplizersNHibernate

2018-09-19 16:15:18

MySQL直方圖數據庫

2013-05-20 10:25:45

vSphere 5.1vMotion

2013-11-04 17:28:44

Android

2019-03-05 15:03:09

Android Q安卓系統功能

2009-09-04 15:26:20

Windows 7編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 青青草一区二区三区 | 在线观看国产精品一区二区 | 久久久久国产一区二区三区四区 | 精品国产99| 精品久久久久久 | 国产精品一二三区 | 在线播放中文字幕 | 亚洲精品久久久久久久久久久久久 | 久久国产精品免费一区二区三区 | 久久视频免费看 | 黄色在线免费观看 | 成人精品一区亚洲午夜久久久 | 亚洲精品在线国产 | 黄色大片免费网站 | 日韩一级欧美一级 | 日本网站免费在线观看 | 日韩 欧美 二区 | 日韩免费1区二区电影 | 亚洲福利一区 | 亚洲精品久久久久久久久久吃药 | 日韩色图视频 | 韩国av网站在线观看 | 99免费视频| 91色啪| 在线免费黄色小视频 | 色香婷婷 | 一级做a爰片久久毛片 | 日韩av一区在线观看 | 超碰免费在 | 日韩中文字幕在线视频 | 一区二区三区在线看 | 男女精品久久 | 中文字幕一区二区三区在线观看 | 欧美日韩成人在线观看 | 免费观看av | 欧美精品一区二区在线观看 | h视频在线免费 | 亚洲国产精品久久久久秋霞不卡 | av免费观看在线 | 大香在线伊779 | 成人av鲁丝片一区二区小说 |