連網螢幕可將桌面視窗體驗延伸至標準手機,讓使用者透過行動裝置存取大螢幕。這項功能可為應用程式互動和使用者生產力帶來新的可能性。
桌面視窗的所有獨特功能都適用於已連結的螢幕。將手機連接至螢幕時,手機狀態會維持不變,並在已連線的螢幕上啟動空白的電腦工作階段。裝置和螢幕會分別運作,每個螢幕都有專屬的應用程式。
如果您將支援電腦分割視窗功能的裝置 (例如平板電腦) 連接至外接螢幕,電腦工作階段會擴展至兩個螢幕。這兩個螢幕就會以連續系統的方式運作。這項設定可讓視窗、內容和游標在兩個螢幕之間自由移動。
如要有效支援連網螢幕,就必須留意應用程式的設計和實作方式。下列最佳做法可確保順暢且高效的使用者體驗。
處理動態顯示變更
許多應用程式在建構時,都假設 Display
物件及其特性在應用程式生命週期中不會變更。不過,當使用者連接或中斷外接螢幕,甚至在螢幕之間移動應用程式視窗時,與應用程式內容或視窗相關聯的基礎 Display
物件可能會變更。螢幕的屬性 (例如大小、解析度、刷新率、HDR 支援和密度) 可能都不同。舉例來說,如果您根據手機螢幕硬式編碼值,版面配置可能會在外接螢幕上中斷。
外接螢幕的像素密度也可能有很大差異。您必須確保應用程式能正確回應密度變更。這包括使用密度獨立像素 (dp) 版面配置、提供密度專屬資源,以及確保 UI 適當調整大小。
使用正確的脈絡
在多重顯示環境中,使用適當的背景至關重要。存取資源時,活動內容與應用程式內容並不相同,前者會顯示在畫面上,而後者不會。
活動內容包含螢幕的相關資訊,而且一律會根據活動顯示的螢幕區域進行調整,方便您取得應用程式目前的正確螢幕密度或視窗指標資訊。請一律使用活動內容 (或其他使用者介面式內容),取得目前視窗或螢幕的相關資訊。這也會影響部分使用背景資訊的系統 API。
取得顯示資訊
您可以使用 Display
類別取得特定螢幕的相關資訊,例如螢幕大小或指出螢幕是否安全的旗標。如要取得可用的螢幕,請使用 DisplayManager
系統服務:
val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
val displays = displayManager.getDisplays()
管理活動啟動和設定
透過連結的螢幕,應用程式可在啟動或建立其他活動時,指定要在哪個螢幕上執行。這個行為取決於資訊清單檔案中定義的活動啟動模式,以及啟動活動的實體所設定的意圖旗標和選項。
當活動移至第二螢幕時,應用程式可能會執行情境更新、調整視窗大小,以及設定和資源變更。如果活動處理了設定變更,則會在 onConfigurationChanged()
中通知活動。否則,系統會重新啟動活動。
如果活動所選取的啟動模式允許多個執行個體,則在次要螢幕上啟動活動時,系統會建立活動的新執行個體。這兩個活動會同時恢復,這在某些多工處理情境中可能會有所幫助。
您可以使用 ActivityOptions
在特定螢幕上啟動活動:
val options = ActivityOptions.makeBasic()
options.setLaunchDisplayId(targetDisplay.displayId)
startActivity(intent, options.toBundle())
避免使用裝置許可清單
應用程式有時會透過許可清單或檢查內建顯示大小,將大螢幕 UI 和功能限制在特定裝置上。由於幾乎所有新裝置都能連接至大螢幕,因此這種做法已不再有效。設計應用程式時,請採用回應式及自動調整式設計,以便配合各種螢幕大小和密度調整。
支援外部周邊裝置
使用者連接外接螢幕時,通常會建立類似電腦的環境。這通常涉及使用外接鍵盤、滑鼠、觸控板、網路攝影機、麥克風和喇叭。您必須確保應用程式能與這些外接裝置順暢運作。包括處理鍵盤快速鍵、管理滑鼠游標互動、正確支援外接攝影機或麥克風,以及遵循音訊輸出路由。詳情請參閱「大螢幕的輸入相容性」。
提高使用者工作效率
連網螢幕可提供大幅提升使用者工作效率的機會。您現在可以使用這些工具建構行動應用程式,提供與電腦應用程式相似的使用體驗。建議您實作下列功能,提升使用者工作效率:
- 允許使用者開啟同一應用程式的多個執行個體。這對於比較文件、管理不同對話或同時查看多個檔案等工作而言,非常實用。
- 讓使用者透過拖曳功能,在應用程式內外分享豐富的資料。
- 實作穩健的狀態管理系統,協助使用者在設定變更後維持工作流程。
只要遵循這些規範並運用提供的程式碼範例,您就能建立可無縫調整至連網螢幕的應用程式,為使用者提供更豐富、更有效率的體驗。