產品新訊

Jetpack WindowManager 1.5 已是穩定版

3 分鐘閱讀
Francesco Romano
Android 開發人員關係工程師

我們很高興宣布 Jetpack WindowManager 1.5.0 現已推出穩定版!

這個版本以 WindowManager 的強大適應性為基礎,讓您更輕鬆地建立精緻的自動調整式 UI,在所有螢幕大小上都能呈現最佳效果。隨著 Android 生態系統持續成長,使用者與應用程式互動的裝置也越來越多元,包括手機、折疊式裝置、平板電腦、連線螢幕、Chromebook,甚至是停放模式下的車輛螢幕。

WindowManager 1.5 的重點是為這個多元的裝置環境提供更完善的工具。

WindowManager 1.5 的新功能

這個穩定版針對超大螢幕推出新的中斷點、強化活動嵌入 API,並提供更多彈性來計算視窗指標。

新增視窗大小類別:大型和特大型

1.5 版的最大更新是新增了兩種寬度視窗大小類別:「大型」和「特大型」。

視窗大小類別是官方認可的一組自主可視區域中斷點,有助於設計及開發自動調整式版面配置。在 1.5 版中,我們將這項指引擴展至超出一般平板電腦的螢幕。

新的寬度中斷點如下:

  • 大型:適用於寬度介於 1200dp 和 1600dp 之間的螢幕
  • 特大:適用於寬度 ≥1600dp
window_size_classes_width.png

根據螢幕寬度劃分的不同視窗大小類別。 

為什麼這些原則很重要?

從 Android 16 QPR1 Beta 2 開始,Android 支援連線螢幕,使用者可將外接螢幕連接至裝置,將裝置變成大螢幕的類桌機工具。

ADB_5350_asset.gif

手機已連上外接螢幕,外接螢幕上顯示桌面工作階段。 

這項新功能推出後,建議納入較大的螢幕就變得至關重要。

在這些超大螢幕上,單純放大平板電腦的「展開」版面配置,不一定能提供最佳使用者體驗。舉例來說,電子郵件用戶端可能會在「展開」視窗大小類別中,舒適地顯示兩個窗格 (信箱和郵件)。但在特大號的桌上型電腦螢幕上,電子郵件用戶端可以優雅地顯示三個甚至四個窗格,例如信箱、郵件清單、完整郵件內容,以及日曆/工作面板,全部同時顯示。

WindowManager 1.5 為超大螢幕尺寸提供正式中斷點,讓您清楚瞭解何時該導入專為生產力設計的版面配置,打造資訊密集的桌面體驗。

您可以使用 computeWindowSizeClass() 計算視窗大小類別,這是擴充 Set<WindowSizeClass> 型別的 androidx.window.core.layout 程式庫擴充功能函式。

如要在專案中加入新的視窗大小類別,只要從 WindowSizeClass.BREAKPOINTS_V2 集合呼叫函式,而非 WindowSizeClass.BREAKPOINTS_V1 即可:

val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


確認應用程式至少有這麼多空間後,再套用正確的版面配置:

if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

自動調整程式庫

Compose Material 3 適應性程式庫可協助您建立適應性 UI,根據目前的視窗設定 (例如視窗大小類別或裝置姿勢) 自動調整。

好消息是,程式庫已更新至最新中斷點!從 1.2 版 (目前為候選版本) 開始,預設窗格架構指令函式支援「大型」和「特大型」視窗寬度大小類別。

您只需要在 Gradle 建構檔案中聲明要使用新的中斷點,即可選擇加入:

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

其他改善項目

  • 活動嵌入功能 - 自動儲存及還原:WindowManager 現在可以自動儲存及還原活動嵌入分割畫面狀態。這有助於在程序重建時保留使用者的版面配置,進而提供更穩定一致的體驗。開發人員不必再手動儲存及還原狀態,只要設定 EmbeddingConfiguration#isAutoSaveEmbeddingState 屬性,即可選擇自動執行這項操作。
  • 擴充的 WindowMetrics:您現在可以從應用程式內容計算 WindowMetrics,而不只是從活動內容計算。這樣一來,您就能更靈活地從應用程式的不同部分存取視窗資訊。

如何開始

如要在 Android 專案中使用新的「大型」和「特大型」尺寸類別,以及 1.5 版的其他功能,請在 build.gradle.kts 中將應用程式依附元件更新至最新穩定版:

dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5 可進一步協助您建立完全自動調整式應用程式,在各種 Android 裝置上執行。如需完整的異動和錯誤修正清單,請參閱官方版本資訊

祝您編寫程式一切順利!

撰寫者:

繼續閱讀