如何使自己 App 的卡片在多任務中像 Chrome 一樣「匯聚」在一起(Android 5.0+)?
01-11
Chrome 在 Android 5.0+ 的環境中,會利用 documentLaunchMode 在多任務界面將每一個標籤頁顯示成一張卡片。並且從同一標籤頁打開而來的各個標籤頁會靠得更近,彷彿「匯聚」在一起一般。
而 Google 官方說明中僅提到為 Intent 設置 FLAG_ACTIVITY_NEW_DOCUMENT,或者使用 android:documentLaunchMode="always" 可以新建卡片,並未提及如何將卡片「匯聚」在一起。我嘗試在 StackOver StackOverFlow 提問也沒有得到解答,反編譯了 Chrome,發現也僅設置了 FLAG_ACTIVITY_MULTIPLE_TASK FLAG_ACTIVITY_NEW_DOCUMENT FLAG_ACTIVITY_REORDER_TO_FRONT 三個 FLAG,似乎沒有發現私有 API。
寒假有時間看了一下 Chromium 的源碼,解決了這個問題。
按照如下代碼啟動新的 Activity 即可:
startActivity(newDocumentIntent,
ActivityOptions.makeTaskLaunchBehind().toBundle());
大家可以結合 https://github.com/googlesamples/android-DocumentCentricApps 的源碼自己實驗。
效果圖如下:
要注意一點,這裡用的不是傳統的startActivity()方法,而是ActivityManager.AppTask.startActivity()。
靠攏在一起的卡片理論上應該是隸屬於同一個Task,多個Task之間留出間隔。(猜測,未經驗證)跳轉的 Intent 添加 addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT)
推薦閱讀:
※如何評價 Windows 10 詢問用戶是否會推薦 Google Chrome?
※使用 Microsoft Edge 瀏覽器是一種怎樣的體驗?
TAG:GoogleChrome | Android開發 | Android | AndroidL |