WindowManager

Jetpack WindowManager 程式庫可讓應用程式 開發人員可以支援新的裝置板型規格和多視窗環境。 程式庫針對 API 14 以上版本提供通用的 API 介面。 初期發布版本會指定摺疊式裝置,但日後推出的版本將會擴大到 更多顯示類型和視窗功能
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2024 年 8 月 7 日 1.3.0 - - 1.4.0-alpha01

宣告依附元件

如果要為 WindowManager 新增依附元件,您必須將 Google Maven 存放區新增至專案。詳情請參閱「Google 的 Maven 存放區」一節。

在應用程式或模組的 build.gradle 檔案中,新增您需要的構件依附元件:

Groovy

dependencies {
    implementation "androidx.window:window:1.3.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.3.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.3.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.3.0"

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

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

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.3.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.3.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.3.0")

    // For testing
    implementation("androidx.window:window-testing:1.3.0")
}

意見回饋

您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 文件

1.4 版

1.4.0-alpha01 版

2024 年 8 月 7 日

發布 androidx.window:window-*:1.4.0-alpha01。1.4.0-alpha01 版包含這些修訂版本

新功能

  • ActivityStack Pinning 可讓應用程式固定某個容器中的內容,並將導覽內容與其他容器區隔開來。
  • 互動式分隔線可讓應用程式在分割簡報中的兩個活動之間,顯示固定或可拖曳的分隔線。
  • 「全螢幕對話方塊調暗」功能可讓應用程式指定對話方塊調暗區域,以調暗整個工作視窗,或只將顯示對話方塊的容器調暗。
  • 嵌入活動視窗資訊回呼可讓應用程式持續接收嵌入活動視窗的更新。
  • 嵌入動畫背景可讓應用程式指定動畫背景,改善使用 ActivityEmbedding 時的轉場動畫品質。
  • 改善活動堆疊管理功能,可讓應用程式在使用 ActivityEmbedding 時進一步控管 ActivityStacks,包括:
  • 在指定的 ActivityStack 中啟動活動
  • 完成 ActivityStack

API 變更

  • 新的 API WindowInfoTracker#supportedPostures

    • 這個 API 可判斷裝置是否支援折疊式裝置的 TableTop 模式。新增 WindowAreaSessionPresenter#getWindow
  • 新增支援 ActivityStack 固定功能的 API:

    • SplitPinRule 門課程
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • 新增 API 以啟用及設定互動式分隔線

    • DividerAttributes 門課程
    • SplitAttributes.Builder#setDividerAttributes
  • 新增用於設定對話方塊的 EmbeddingConfigurationDimAreaBehavior 的 API

    • EmbeddingConfiguration 門課程
    • DimAreaBehavior 門課程
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • 新增用於接收嵌入活動視窗資訊更新的 API

    • EmbeddedActivityWindowInfo 門課程
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • 新增 API 即可設定嵌入動畫背景

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • 新增 API 以完成 ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • 新增 API 以設定啟動 ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • 下列 API 穩定且不再處於實驗階段:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (從 SplitController#invalidateTopVisibleSplitAttributes 移動)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • 新增 1.4 版的 API。(I56774)。

修正錯誤

  • 修正在工作階段執行時,會傳回 UNAVAILABLE (而非 ACTIVE) 的錯誤。
  • 由於 API 支援不穩定,導致 vendorApiLevel 為 2 的裝置不再支援 transferActivityToWindowArea
  • 導入 API,為活動嵌入可拖曳分隔線啟用拖曳至全螢幕功能。(I645c9)。
  • 允許應用程式透過 SplitAttributes 的動畫參數停用 ActivityEmbedding 動畫。(Idc01a)。
  • 由於使用 R8 搭配 AGP 7.3 以上版本 (例如 R8 3.3) 時,以及所有使用 AGP 8.1 以上版本 (例如 D8 8.1) 的建構作業,這項作業會自動透過 API 模型建立,因此我們不再手動列出新平台 API 的存取權。針對非使用 AGP 的用戶端,建議更新至 D8 8.1 以上版本。詳情請參閱這篇文章。(Ia60e0b/345472586)
  • 允許擴充功能使用 SplitAttributes 的動畫參數,以便裝置用於動畫轉換。(Iede00)。
  • 隱藏重疊 API (Ic4251)
  • 導入 API,為分割作業設定固定或可拖曳的分隔線 (Ia7a78)
  • 已將密度新增至 WindowMetrics (Id6723)
  • 新增 API 以取得 SupportedPostures。(If557a)。
  • 從實驗性 API 中移除 setLaunchingActivityStack (I191cf)
  • 導入 ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • 淘汰 #getToken 並新增 #getActivityStackToken (Ie0471)
  • embeddedActivityWindowInfo 流程 API 導入回呼轉接器 (Ida77f)
  • 新增 OverlayInfo 流程 API 的回呼轉接器 (I7264f)
  • 加入 WindowSdkExtensionsRule 以覆寫 extensionsVersion 以進行測試。(Ifb928)。
  • - 將 #setLaunchingActivityStack 遷移至 Bundle,以便與 ActivityOptionsCompat 的使用方式相容。
    • 使用者應傳遞 activityOptions.toBundle,而非 ActvityOptions 本身。
    • 移除 #setLaunchingActivityStack(Activity)。使用者應改用 ActivityEmbeddingController#getActivityStac(Activity) 以取得 ActivityStack,並將 ActivityStack 傳遞至 #setLaunchingActivityStack。(Ie0ccc)。
  • - 介紹 ActivityStack.TokenSpltInfo.Token 做為 ID,以在 WM Jetpack 和擴充功能之間通訊。
    • 淘汰/取代 API 以接收/傳回權杖,而非 IBinder。(I12b24)。
  • - 導入「ActivityEmbeddingController#invalidateVisibleActivityStacks
    • 移除 SplitController#invalidateTopVisibleSplitAttributes,因為功能合併至 #invalidateVisibleActivityStacks (I02ef5)
  • - 新增 API 以設定嵌入設定。(I59a4a)。
  • - 新增固定/取消固定前 ActivityStackandroidx.Window API
    • 更新試用版應用程式,允許固定/取消固定頂端 ActivityStack (I24dd3)
  • 重新加入 #finishActivityStacksActivityEmbeddingOptions (Ic1ab3)
  • 移除不穩定的 API。(Ibc534b/302380585)

1.3 版本

1.3.0 版本

2024 年 5 月 29 日

發布 androidx.window:window-*:1.3.0。1.3.0 版包含這些修訂版本

自 1.2.0 版以來的重要異動

  • Kotlin Multiplatform 支援視窗大小類別。

1.3.0-rc01 版本

2024 年 5 月 14 日

WindowManager Jetpack 1.3 為 WindowSizeClass 功能提供 Kotlin Multiplatform 支援,並修正多項錯誤。

發布 androidx.window:window-*:1.3.0-rc01。1.3.0-rc01 版包含這些修訂版本

1.3.0-beta02 版

2024 年 5 月 1 日

發布 androidx.window:window-*:1.3.0-beta02。1.3.0-beta02 版包含這些修訂版本

API 變更

  • 停止支援建立及使用自訂 WindowSizeClass。(Id1143)。

修正錯誤

  • 修正 Proguard 移除特定裝置實作上的部分檔案所造成的 KotlinReflectionInternalError。(I01b02)。

1.3.0-beta01 版本

2024 年 4 月 3 日

發布 androidx.window:window-*:1.3.0-beta01。1.3.0-beta01 版包含這些修訂版本

1.3.0-alpha03 版

2024 年 3 月 6 日

發布 androidx.window:window-*:1.3.0-alpha03。1.3.0-alpha03 版包含這些修訂版本

API 變更

  • WindowSizeClassUtil 分割為更明確的方法。(Ie9292)。
  • 還原 WindowSizeClass#compute (I21355b/324293374)

修正錯誤

  • 修正提供結構定義無法正確解開包裝的當機問題。(94d10ceb/318787482)

1.3.0-alpha02 版本

2024 年 2 月 7 日

發布 androidx.window:window-*:1.3.0-alpha02查看 1.3.0-alpha02 版的修訂項

新功能

  • 更新視窗大小類別 API 的 API 介面,為想使用自有大小類別的開發人員提供更靈活的彈性。

API 變更

  • 在寬度選取器中加入高度限制。(I23393)。
  • 新增公用程式函式,用於從集合中挑選 WindowSizeClass。新增實驗性評分函式,以便開發人員編寫自己的選取器。新增選取器擴充功能函式,即可從指定範圍內選取最寬的 WindowSizeClass。(I0c944)。
  • 開啟 WindowSizeClass 建構函式,以便新增自訂中斷點。(Ic1ff3)。
  • 新增便利函式,以便根據寬度、高度和密度建立大小類別。(If67f4)。

修正錯誤

  • 修正浮點值截斷為 0 時的例外狀況。(272ffac)。

1.3.0-alpha01 版本

2023 年 11 月 15 日

發布 androidx.window:window-*:1.3.0-alpha011.3.0-alpha01 版包含此連結所列的修訂項目。

新功能

  • 公開實驗性視窗 API 以存取背面畫面。
  • 建立 FoldingFeature 的測試 API 現在是穩定版。
  • 設定假 ActivityEmbedding 值的測試 API 現在是穩定版。
  • 現在從 UiContext 取得值時,WindowLayoutInfoPublisherRule 會回報覆寫值
  • WindowInfoTracker 會將折疊功能資料回報為 UiContext 參數。
  • 在裝置上公開擴充功能版本。
  • 使用者個別應用程式覆寫值的 WindowProperties 常數:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE - 通知 系統應用程式已選擇不採用面向使用者的顯示比例相容性 。
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE— 通知 系統應用程式已選擇不採用使用者的全螢幕選項 顯示比例相容性覆寫設定

1.2 版本

1.2.0 版本

2023 年 11 月 15 日

發布 androidx.window:window-*:1.2.01.2.0 版包含此連結所列的修訂項目。

自 1.1.0 版以來的重要異動

  • 公開實驗性視窗 API 以存取背面畫面。
  • 建立 FoldingFeature 的測試 API 現在是穩定版。
  • 設定假 ActivityEmbedding 值的測試 API 現在是穩定版。
  • 現在從 UiContext 取得值時,WindowLayoutInfoPublisherRule 會回報覆寫值
  • WindowInfoTracker 會將折疊功能資料回報為 UiContext 參數。
  • 在裝置上公開擴充功能版本。

1.2.0-rc01 版本

2023 年 11 月 1 日

發布 androidx.window:window-*:1.2.0-rc01查看 1.2.0-rc01 版的修訂項目

新功能

  • 公開實驗性視窗 API 以存取背面畫面。
  • 建立 FoldingFeature 的測試 API 現在是穩定版。
  • 設定假 ActivityEmbedding 值的測試 API 現在是穩定版。
  • 現在從 UiContext 取得值時,WindowLayoutInfoPublisherRule 會回報覆寫值
  • WindowInfoTracker 會將折疊功能資料回報為 UiContext 參數。
  • 在裝置上公開擴充功能版本。

1.2.0-beta04 版

2023 年 10 月 18 日

發布 androidx.window:window-*:1.2.0-beta041.2.0-beta04 版包含以下修訂項目。

API 變更

1.2.0-beta03 版本

2023 年 9 月 20 日

發布 androidx.window:window-*:1.2.0-beta03查看 1.2.0-beta03 版的修訂項目

新功能

  • 針對需要特定擴充功能版本的 API,新增 RequiresApi 檢查功能,以便正常運作。
  • 新增 API,以在裝置上公開擴充功能版本。

API 變更

  • 在公用 API 上為必要的視窗 SDK 擴充功能版本加上註解。
    • 移除活動嵌入元件中的 isXXXSupported。(Ie3dae)。
  • 導入 WindowSdkExtensions,回報裝置上的擴充功能版本。
    • 導入 RequiresWindowSdkExtension,以加註最低所需的擴充功能版本。(I05fd4)。
  • WindowAreaInfo#getCapability 設為不可為空值。(I17048)。

1.2.0-beta01 版本

2023 年 7 月 26 日

發布 androidx.window:window-*:1.2.0-beta01查看 1.2.0-beta01 版的修訂項目

新功能

  • 公開實驗性視窗 API 以存取背面畫面。
  • 建立 FoldingFeature 的測試 API 現在是穩定版。
  • 設定假 ActivityEmbedding 值的測試 API 現在是穩定版。
  • 現在從 UiContext 取得值時,WindowLayoutInfoPublisherRule 會回報覆寫值
  • WindowInfoTracker 會將折疊功能資料回報為 UiContext 參數。

API 變更

  • WindowArea API 標示為實驗功能,可讓 API 變更在 1.3 中持續推出穩定版 (I857f5)
  • 更新 API 檔案,以便為相容性抑制加上註解 (I8e87ab/287516207)

1.2.0-alpha03 版本

2023 年 6 月 21 日

發布 androidx.window:window-*:1.2.0-alpha03查看 1.2.0-alpha03 版的修訂項

新功能

  • 從 API 介面中移除已淘汰的 API。
  • 新增 API 以支援並行螢幕。
  • 新增屬性即可停用強制調整大小覆寫設定。
  • 新增屬性,停用最小顯示比例覆寫功能。
  • 穩定 ActivityEmbeddingRule,以支援活動嵌入功能的單元測試。

API 變更

  • 移除已淘汰的 API (I18d39)
  • 新增並行螢幕支援功能。(Ifcbb0)。

修正錯誤

  • 新增停用相容性屬性,以用於強制調整大小覆寫 (Ie7ab1)
  • 從擴充功能介面中移除 SESSION_STATE_CONTENT_INVISIBLE。(I6ed19)。
  • 穩定 ActivityEmbeddingRule,以支援活動嵌入功能的單元測試。(I8d6b6)。
  • 新增選擇退出 Compat 屬性,用於覆寫最小顯示比例。(I66390)。
  • 移除已淘汰的 WindowArea API (Ieb67c)
  • 將方向要求迴圈屬性重新命名為 PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED。(Ie2fbd)。
  • 更新視窗區域工作階段常數名稱 (I83675)
  • 新增選擇不採用相容性屬性,在偵測到時忽略方向要求迴圈 (I0a7a2)
  • 新增 WindowAreaComponent#STATUS_ACTIVE,表示此功能已啟用。(I62bc3)。
  • 新增 RearDisplayPresentationMode API (I0401c)
  • 移除背景顏色 API,以便取得穩定版本。(I34c3e)。
  • 隱藏視窗區域 API。(I39de0)。
  • 新增方法以覆寫 SplitController 中的 SplitInfo。新增測試方法,為 SplitInfoActivityStack 建立雙精度浮點值。(Icd69f)。
  • 請將 ActivityRule.Builder 設為選用標記。(Ib0b44)。
  • 移除 RatioSplitTypeExpandContainersSplitHingeSplitType。目前是SplitType
    • #splitEqually()#expandContainers()#splitByHinge 替換為常數 SplitType SPLIT_TYPE_EQUALSPLIT_TYPE_EXPANDSPLIT_TYPE_HINGE
    • 移除用於設定轉軸分割類型備用類型的功能。如果因目前裝置或視窗狀態而無法套用轉軸分割類型,就會採用備用方法,平均分割父項工作容器。使用 SplitController#setSplitAttributesCalculator 自訂備用分割類型。(Ifcc59)。
  • 淘汰 add/removeSplitCallback
    • add/removeSplitCallback 移至 SplitControllerCallbackAdapter
    • 新增 Flow 支援以取得 SplitInfo 清單 (I7f1b6)
  • ActivityEmbeddingController 新增測試規則 (I42e9b)
  • 正在將 ActivityOptionsCompat 重新命名為 ActivityEmbeddingOptions (I89301)
  • 新增 splitSupportStatus,表示是否支援 Activity 嵌入功能。(I10024)。
  • 加入 SplitAttributes.BackgroundColor,更妥善地表示 DEFAULT 值。清楚說明不支援非不透明動畫背景顏色,因此所有非不透明顏色都會視為預設顏色,也就是使用目前的主題視窗背景顏色。(Ic6b95)。
  • ALWAYS_ALLOWALWAYS_DISALLOW 取代 alwaysAllow()alwaysDisallow()。(I3057b)。
  • SplitRuleSplitAttributesSplitAttributesCalculator 新增 API。(I92d23)。
  • 新增 TestActivityStack,建立用於測試的ActivityStack
    • 新增 TestSplitInfo 以建立用於測試的 SplitInfo。(I8e779)。
  • 新增建立假的 SplitAttributesCalculatorParams,讓開發人員能夠驗證自訂的 SplitAttributesCalculator (Id4a6e)
  • 新增 WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f)

1.2.0-alpha02 版本

2023 年 6 月 7 日

發布 androidx.window:window-*:1.2.0-alpha021.2.0-alpha02 版包含此連結所列的修訂項目。

新功能

  • 更新測試 API,取得未指定折疊功能的常數。
  • 如果使用 WindowLayoutInfoPublishRule 覆寫,系統將覆寫 windowLayoutInfo 的所有值,包括情境式 API。

API 變更

  • 為未指定中心折疊功能新增常數。(I7530c)。

修正錯誤

  • 更新 WindowLayoutInfoPublishRule 以支援 ContextWindowLayoutInfo 為基礎的覆寫值。(I2037a)。

1.2.0-alpha01 版本

2023 年 5 月 24 日

發布 androidx.window:window-*:1.2.0-alpha011.2.0-alpha01 版包含此連結所列的修訂項目。

新功能

穩定處理活動嵌入和 WindowLayoutInfoTracker 相關的測試 API。ActivityEmbeddingRule 已升級為穩定版。 WindowMetricsCalculatorRule 已升級為穩定版。 為測試建立 FoldingFeature 的公用程式函式已升級為穩定版。

API 變更

  • 穩定 ActivityEmbeddingRule,以支援活動嵌入功能的單元測試。(I8d6b6)。
  • WindowMetrisCalculatorTestRule 穩定,允許 JVM 測試的虛設常式指標。建議您使用模擬器來取得準確結果。
  • 穩定 WindowLayoutInfo 的測試 API,以支援 JVM 測試。(Ie036e)。
  • 新增 IntRange 用於測試折疊特徵值。(I69f7d)。

1.1 版本

1.1.0 版本

2023 年 6 月 7 日

發布 androidx.window:window-*:1.1.0查看 1.1.0 版的修訂項

自 1.0.0 版以來的重要變更

活動嵌入

  • 已在應用程式資訊清單中,將 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED 新增為 <application> 標記的布林值屬性。
  • 淘汰了 isSplitSupported 並替換為 splitSupportStatus,以便詳細說明無法使用分割功能的原因。
  • 新增了 SplitController.SplitSupportStatus 巢狀類別,以便為 splitSupportStatus 屬性提供狀態常數。
  • SplitController 重構為多個模組:
    • ActivityActivityStack 相關 API 的 ActivityEmbeddingController 模組。
    • 已將isActivityEmbeddedSplitController 移至 ActivityEmbeddingController
    • EmbeddingRule 相關作業的 RuleController 模組:
    • 已移除 SplitController API:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • 新增了 RuleController 個 API:
    • addRule():新增規則或更新具有相同標記的規則。
    • removeRule():從已註冊的規則集合中移除規則。
    • setRules():建立一組規則。
    • clearRules() - 移除所有已註冊的規則。
    • parseRules() - 剖析 XML 規則定義中的規則。
  • 所有模組都需要利用 #getInstance() 方法初始化結構定義,包括:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • 已新增 EmbeddingAspectRatio 類別,定義與螢幕顯示比例相關的列舉類行為常數。
  • 新增 SplitAttributes 類別,以定義分割版面配置。
  • SplitAttributes 計算機函式新增至 SplitController,以自訂分割版面配置:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() 會檢查裝置是否支援 SplitAttributesCalculator API
  • 已新增 EmbeddingRule#tag 欄位,
  • SplitRule 中的 API 更新:
    • 新增 defaultSplitAttributes — 定義分割的預設分割版面配置;取代 splitRatiolayoutDirection
    • 已將 XML 屬性 splitRatiosplitLayoutDirection 的翻譯新增至 defaultSplitAttributes
    • 變更最小尺寸定義,使用密度獨立像素 (dp),而非像素。
    • 新增了 minHeightDp,預設值為 600dp。
    • 已將 minWidth 變更為 minWidthDp,預設值為 600 dp。
    • 已將 minSmallestWidth 變更為 minSmallestWidthDp,預設值為 600 dp。
    • 新增 maxAspectRatioInHorizontal,預設值為 ALWAYS_ALLOW
    • 新增了 maxAspectRatioInPortrait,預設值為 1.4。
    • 定義 FinishBehavior 巢狀類別以取代完成行為常數。
    • 已將屬性變更套用至 SplitPairRuleSplitPlaceholderRule 的 Builder 巢狀類別。
  • SplitInfo#getSplitRatio() 替換為 SplitInfo#getSplitAttributes(),提供其他分割相關資訊。

WindowLayout

  • 已為 WindowInfoTracker 新增實驗性的非活動 UI 結構定義支援功能。
  • WindowMetricsCalculator 中新增實驗性的非活動 UI 結構定義。

遷移步驟

  • 如要讓活動嵌入功能在分割畫面中顯示活動,應用程式必須將 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED 屬性新增至資訊清單的 <application> 標記: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> 如此一來,系統就能預先為應用程式最佳化分割行為。
  • SplitInfo 比例
    • 檢查目前的分割畫面是否已堆疊: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • 查看目前的比例: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController 遷移作業:
    • SplitController.getInstance() 變更為 SplitController.getInstance(Context)
    • SplitController.initialize(Context, @ResId int) 變更為 RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • SplitController.getInstance().isActivityEmbedded(Activity) 變更為 ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • SplitController.getInstance().registerRule(rule) 變更為 RuleController.getInstance(Context).addRule(rule)
    • SplitController.getInstance().unregisterRule(rule) 變更為 RuleController.getInstance(Context).removeRule(rule)
    • SplitController.getInstance().clearRegisteredRules() 變更為 RuleController.getInstance(Context).clearRules()
    • SplitController.getInstance().getSplitRules() 變更為 RuleController.getInstance(Context).getRules()
  • SplitRule 項資源遷移:
    • minWidthminSmallestWidth 現在使用 dp 單位,而非像素。應用程式可以使用以下呼叫: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) 或直接將 minWith 除以 displayMetrics#density
  • 完成行為常數必須遷移至 FinishBehavior 列舉類類別常數:
    • FINISH_NEVER 變更為 FinishBehavior.NEVER
    • FINISH_ALWAYS 變更為 FinishBehavior.ALWAYS
    • FINISH_ADJACENT 變更為 FinishBehavior.ADJACENT
  • 版面配置方向必須遷移至 SplitAttributes.LayoutDirection
    • ltr 變更為 SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • rtl 變更為 SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • locale 變更為 SplitAttributes.LayoutDirection.LOCALE
    • 必須將 splitRatio 遷移至 SplitAttributes.SplitType.ratio(splitRatio)
  • SplitPairRule.Builder 遷移作業:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) 變更為 kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) 變更為 kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary 採用 FinishBehavior 列舉常數。詳情請參閱「SplitRule 遷移」。
    • 使用 setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) 在直向裝置上顯示分割畫面。
  • SplitPlaceholder.Builder 遷移作業:
    • 只有 filtersplaceholderIntent 參數。其他屬性則會移至 setter。詳情請參閱「SplitPairRule.Builder 遷移」。
    • setFinishPrimaryWithPlaceholder 會使用 FinishBehavior 等列舉常數。詳情請參閱「SplitRule 遷移」。
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) 會變更為: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • 使用 setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) 在直向裝置上顯示分割畫面。

1.1.0-rc01 版本

2023 年 5 月 10 日

發布 androidx.window:window-*:1.1.0-rc011.1.0-rc01 版包含此連結所列的修訂項目。

新功能

  • 發布 ActivityEmbedding 為穩定版 API。
  • 修正多項錯誤。

1.1.0-beta02 版

2023 年 4 月 5 日

發布 androidx.window:window-*:1.1.0-beta021.1.0-beta02 版本包含這些修訂版本。

新功能

  • 內部修正與清理。

1.1.0-beta01 版本

2023 年 3 月 22 日

發布 androidx.window:window-*:1.1.0-beta011.1.0-beta01 版包含此連結所列的修訂項目。

活動嵌入

  • 已在應用程式資訊清單中,將 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED 新增為 <application> 標記的布林值屬性。
  • 淘汰了 isSplitSupported 並替換為 splitSupportStatus,以便詳細說明無法使用分割功能的原因。
  • 新增了 SplitController.SplitSupportStatus 巢狀類別,以便為 splitSupportStatus 屬性提供狀態常數。
  • SplitController 重構為多個模組:
    • ActivityActivityStack 相關 API 的 ActivityEmbeddingController 模組。
    • 已將isActivityEmbeddedSplitController 移至 ActivityEmbeddingController
    • EmbeddingRule 相關作業的 RuleController 模組:
    • 已移除 SplitController API:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • 新增了 RuleController 個 API:
      • addRule():新增規則或更新具有相同標記的規則。
      • removeRule():從已註冊的規則集合中移除規則。
      • setRules():建立一組規則。
      • clearRules() - 移除所有已註冊的規則。
      • `parseRules() - 從 XML 規則定義剖析規則。
  • 所有模組都需要利用 #getInstance() 方法初始化結構定義,包括:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • 已新增 EmbeddingAspectRatio 類別,定義與螢幕顯示比例相關的列舉類行為常數。
  • 新增 SplitAttributes 類別,以定義分割版面配置。
  • SplitAttributes 計算機函式新增至 SplitController,以自訂分割版面配置:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() 可檢查裝置是否支援 SplitAttributesCalculator API
  • 已新增 EmbeddingRule#tag 欄位,
  • SplitRule 中的 API 更新:
    • 新增 defaultSplitAttributes — 定義分割的預設分割版面配置;取代 splitRatiolayoutDirection
    • 已將 XML 屬性 splitRatiosplitLayoutDirection 的翻譯新增至 defaultSplitAttributes
    • 變更最小尺寸定義,使用密度獨立像素 (dp),而非像素。
    • 新增了 minHeightDp,預設值為 600dp。
    • 已將 minWidth 變更為 minWidthDp,預設值為 600 dp。
    • 已將 minSmallestWidth 變更為 minSmallestWidthDp,預設值為 600 dp。
    • 新增 maxAspectRatioInHorizontal,預設值為 ALWAYS_ALLOW
    • 新增 maxAspectRatioInPortrait,預設值為 1.4
    • 定義 FinishBehavior 巢狀類別以取代完成行為常數。
    • 已將屬性變更套用至 SplitPairRuleSplitPlaceholderRuleBuilder 巢狀類別。
  • SplitInfo#getSplitRatio() 替換為 SplitInfo#getSplitAttributes(),提供其他分割相關資訊。

WindowLayout

  • WindowInfoTracker 新增非活動 UI 結構定義支援。
  • WindowMetricsCalculator 中新增非活動 UI 結構定義。

遷移步驟

  • 如要讓活動嵌入功能在分割畫面中顯示活動,應用程式必須將 PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED 屬性新增至資訊清單的 <application> 標記: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> 如此一來,系統就能預先為應用程式最佳化分割行為。
  • SplitInfo 比例
    • 檢查目前的分割畫面是否已堆疊: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • 查看目前的比例: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController 遷移作業:
    • SplitController.getInstance() 變更為 SplitController.getInstance(Context)
    • SplitController.initialize(Context, @ResId int) 變更為 RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • SplitController.getInstance().isActivityEmbedded(Activity) 變更為 ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • SplitController.getInstance().registerRule(rule) 變更為 RuleController.getInstance(Context).addRule(rule)
    • SplitController.getInstance().unregisterRule(rule) 變更為 RuleController.getInstance(Context).removeRule(rule)
    • SplitController.getInstance().clearRegisteredRules() 變更為 RuleController.getInstance(Context).clearRules()
    • SplitController.getInstance().getSplitRules() 變更為 RuleController.getInstance(Context).getRules()
  • SplitRule 項資源遷移:
    • minWidthminSmallestWidth 現在使用 dp 單位,而非像素。應用程式可以使用以下呼叫: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) 或直接將 minWith 除以 displayMetrics#density
  • 完成行為常數必須遷移至 FinishBehavior 列舉類類別常數:
    • FINISH_NEVER 變更為 FinishBehavior.NEVER
    • FINISH_ALWAYS 變更為 FinishBehavior.ALWAYS
    • FINISH_ADJACENT 變更為 FinishBehavior.ADJACENT
  • 版面配置方向必須遷移至 SplitAttributes.LayoutDirection
    • ltr 變更為 SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • rtl 變更為 SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • locale 變更為 SplitAttributes.LayoutDirection.LOCALE
    • 必須將 splitRatio 遷移至 SplitAttributes.SplitType.ratio(splitRatio)
  • SplitPairRule.Builder 遷移作業:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) 變更為 kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) 變更為 kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary 採用 FinishBehavior 列舉常數。詳情請參閱「SplitRule 遷移」。
    • 使用 setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) 在直向裝置上顯示分割畫面。
  • SplitPlaceholder.Builder 遷移作業:
    • 只有 filtersplaceholderIntent 參數。其他屬性則會移至 setter。詳情請參閱「SplitPairRule.Builder 遷移」。
    • setFinishPrimaryWithPlaceholder 會使用 FinishBehavior 等列舉常數。詳情請參閱「SplitRule 遷移」。
    • setLayoutDirection(layoutDirection)setSplitRatio(ratio) 會變更為: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • 使用 setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) 在直向裝置上顯示分割畫面。

1.1.0-alpha06 版本

2023 年 2 月 22 日

發布 androidx.window:window-*:1.1.0-alpha06查看 1.1.0-alpha06 版的修訂項

新功能

  • 公開實驗功能版本,從 UI 內容取得 WindowLayoutInfo

API 變更

  • 新增 splitSupportStatus,表示是否支援 Activity 嵌入功能。(I10024)。
  • 將 UI Context WindowLayoutInfo API 列為實驗功能。(I58ee0)。
  • 加入 WindowAreaController 和 API,讓 RearDisplay 模式將目前視窗移至與後置鏡頭對齊的螢幕。(Iffcbf)。
  • 更新預設背景顏色。(I1ac1b)。
  • 新增 SplitAttributes 參數。(I18bdd)。
  • SplitRuleSplitAttributesSplitAttributesCalculator 新增 API。(I92d23)。
  • 改善與 maxAspectRatio 相關的 API:
    1. ALWAYS_ALLOWALWAYS_DISALLOW 取代 alwaysAllow()alwaysDisallow()
    2. 將 @see 的 API 說明文件更新為獨立說明文件。(I3057b)。
  • 下列建構函式本就不該讓應用程式呼叫,因此已從公用 API 中移除。
    • SplitInfo 建構函式
    • ActivityStack 建構函式 (Ide534)
  • SplitRule 現可採用 maxAspectRatioInPortrait/Landscape。只有在父項邊界的顯示比例小於或等於要求的 maxAspectRatio 時,才能分割活動。(Ia5990)。
  • RuleController#parseRules 變更為靜態性質 (I785df)
  • 改善與 ActivityEmbedding 相關的 API
    1. 採用一致的 API 命名方式 - 針對多個例項使用新增/移除功能:
    2. registerRule 變更為 addRule
    3. unregisterRule 變更為 removeRule
    4. getSplitRules 替換為 getRules,因為 ActivityRule 不是分割規則
    5. 新增 RuleController#setRules,用來設定大量規則
    6. SplitController 擷取規則相關 API 至單例模式 RuleController。這些因素包括:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. SplitController 擷取 #isActivityEmbedded 到單例模式 ActivityEmbeddingController。這些因素包括:
    14. isActivityEmbedded
    15. 移除 SplitController#initialize。如要透過 XML 檔案設定規則,請使用 RuleController#parseRules#setRules。 實施這項變更前: SplitController.initialize(context, R.xml.static_rules) 這項異動生效後: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. 我們不再區分靜態規則與執行階段規則。也就是說,呼叫 #clearRules 結果即可清除所有規則,無論是使用靜態 XML 規則定義註冊或在執行階段註冊都一樣。如要保留 SplitController#clearRegisteredRules 的舊版行為,請使用 XML 資源 ID 呼叫 RuleController#parseRules,並呼叫 RuleController#setRules 再次設回規則。 實施這項變更前: SplitController.getInstance(context).clearRegisteredRules() 這項異動生效後: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)。
  • 改善 SplitRule API:
    1. 針對 SplitRule 採用以 DP 為單位的最小尺寸,而非像素。
    2. 重構 SplitRule 建構工具,使其採用最小尺寸做為選用項目。(I95f17)。
  • 傳遞情境以初始化 SplitController (I42549)
  • 已將 SplitRule#layoutDir 重新命名為 #layoutDirection,並將 SplitRule Builder#setLayoutDir 重新命名為 Builder#setLayoutDirection。(I3f6d1)。

1.1.0-alpha04 版本

2022 年 11 月 9 日

發布 androidx.window:window-*:1.1.0-alpha041.1.0-alpha04 版包含此連結所列的修訂項目。

新功能

  • 公開一個方法,判斷 ActivityEmbeddingActivityStack 是否為空白。
  • ActivityEmbedding API 中移除實驗性 API 標記。
  • ActivityRule 建構函式做為 Builder 隱藏是偏好的方式。
  • 新增在 WindowMetrics 取得 WindowInsets 的實驗性方法。
  • 更新 SplitPlaceholderFinishBehavior 以免與預留位置結束。如果結束預留位置,則會造成某項錯亂行為。

API 變更

  • 將 val isEmpty 設為公開,即可取代 fun isEmpty
  • ActivityStack 參數活動重新命名為 activitiesInProcess。(Ia5055)。
  • 移除造成錯亂的 ActivityFilter#matchesClassNameActivityFilter#matchesClassNameOrWildCard
  • 新增 ActivityFilter#componentNameActivityFilter#intentAction,方便呼叫端區別不同的篩選條件 (I41f22)
  • 從實驗性 API 中移除 @Deprecated API (I216b3)
  • 移除活動嵌入 API 的 @ExperimentalWindowApi (I69ebe)
  • 隱藏 ActivityRule 建構函式,請改用 Builder。(If4eb6)。
  • 新增用於檢查活動是否屬於 ActivityFilter 的 API。(Ia43cf)。
  • 更新 API 檔案以反映 WindowMetricsWindowMetricsCalculatorCompat 類別的變更 (I667fe)
  • 更新 ActivityEmbedding 屬性 Javadoc 和類別名稱 (Ia1386)
  • 新增要用於 AndroidManifest.xml (Id1ad4) 的 ActivityEmbedding 屬性標記名稱
  • 新增了 API SplitPlaceholderFinishBehaviorSplitPlaceholderRule.finishPrimaryWithPlaceholder,這會取代現有的 SplitPlaceholderRule.finishPrimaryWithSecondary,定義預留位置活動的完成時間,以及活動嵌入功能中相關活動的行為方式。(I64647)。

修正錯誤

  • 加入 WindowAreaController 和 API,讓 RearDisplay 模式將目前視窗移至與後置鏡頭對齊的螢幕。(I388ab)。

1.1.0-alpha03 版本

2022 年 7 月 27 日

發布 androidx.window:window-*:1.1.0-alpha031.1.0-alpha03 版包含此連結所列的修訂項目。

新功能

  • 更新嵌入規則的預設值。

API 變更

  • 更新嵌入規則屬性的預設值。(Ic4d35)。

1.1.0-alpha02 版本

2022 年 5 月 11 日

發布 androidx.window:window-*:1.1.0-alpha02查看 1.1.0-alpha02 版的修訂項

新功能

  • 發布轉接程式程式庫以支援 Java 和 RxJava。

1.1.0-alpha01 版本

2022 年 5 月 11 日

發布 androidx.window:window-*:1.1.0-alpha011.1.0-alpha01 版包含以下修訂項目。

新功能

  • 發布轉接程式以支援 Java 與 RxJava

1.1.0-alpha01 版本

2022 年 4 月 20 日

發布 androidx.window:window:1.1.0-alpha011.1.0-alpha01 版包含以下修訂項目。

新功能

  • 修正了應用程式背景作業會停止產生摺疊功能的錯誤。
  • 展開實驗性 ActivityEmbedding API。

API 變更

  • 用於檢查活動是否嵌入的公用 API。(I39eb7)。

修正錯誤

  • 新增 API,用於自訂活動分割中容器的完成行為 (I1a1e4)
  • 為活動分割規則新增設定選項。(Iec6af)。

1.0 版本

1.0.0 版本

2022 年 1 月 26 日

發布 androidx.window:window-*:1.0.01.0.0 版包含此連結所列的修訂項目。

1.0.0 的主要功能

  • 透過 WindowInfoTrackerFoldingFeature 支援折疊式手機。 使用 WindowMetricsCalculator 計算目前的 WindowMetrics。

1.0.0-rc01 版

2021 年 12 月 15 日

androidx.window:window-*:1.0.0-rc01 發布。查看 1.0.0-rc01 版的修訂項

新功能

  • 新增透過 WindowInfoTracker 提供折疊式手機支援。
  • 新增方法來計算 WindowMetrics 的現有值和最小值。
  • 新增支援的測試 API。

1.0.0-beta04 版

2021 年 11 月 17 日

androidx.window:window-*:1.0.0-beta04 發布。1.0.0-beta04 版包含此連結所列的修訂項目。

新功能

  • 將 WindowInfoRepository 重新命名為 WindowInfoTracker。
  • 將活動明確設為 WindowInfoTracker 的方法依附元件。
  • 為 WindowMetricsCalculator 新增簡單的 TestRule,藉此支援使用 Robolectric 的開發人員。

API 變更

  • 擷取擴充功能。(I25a5f)
  • 在 ActivityStack 中新增 isEmpty。(I5a4e6)
  • 將 WindowInfoRepository 重新命名為 WindowInfoTracker。
    • 更新 java/rxjava/testing 依附元件以進行比對。(I0da63)
  • 為簡易的 WindowMetricsCalculator 新增測試規則。(Ibacdb)

1.0.0-beta03 版

2021 年 10 月 27 日

androidx.window:window-*:1.0.0-beta03 發布。1.0.0-beta03 版包含此連結所列的修訂項目。

新功能

  • 新增實驗功能活動嵌入 API。這個初始版面配置版本可以並排顯示兩個活動。

API 變更

  • 已移除 currentWindowMetrics API,因為我們無法正確提供。請改用 WindowMetricsCalculator。(Icda5f)
  • 已更新擴充功能 API。(Ica92b)
  • 為新功能新增介面 嵌入活動,並在父項中並排顯示 工作視窗(I5711d)
  • 已隱藏 WindowMetrics 和 WindowLayoutInfo 的建構函式,請改用測試 API。(I5a1b5)
  • 新增 API 以建立假的 WindowLayoutInfo 物件。(I4a2fd)

修正錯誤

1.0.0-beta02 版

2021 年 9 月 1 日

androidx.window:window-*:1.0.0-beta02 發布。查看 1.0.0-beta02 版的修訂項

新功能

  • 新增實驗功能註解,以註解實驗功能 API。(I9f1b6)
  • 新增測試方法,建立可接受 Rect 的測試 FoldingFeature。如此一來,您在使用 Robolectric 時,會比實際活動更容易測試。(Id1cca)

1.0.0-beta01 版

2021 年 8 月 18 日

androidx.window:window-*:1.0.0-beta01 發布。1.0.0-beta01 版包含此連結所列的修訂項目。

新功能

  • 已移除舊常數,並使 FoldingFeature 成為介面。

API 變更

  • 移除舊常數,並將 FoldFeature 設為介面。(I9a2d5)

修正錯誤

  • 凡是依附 Test Core 程式庫的程式庫 已升級至 1.4.0,現在可與 Android 平台搭配使用 版本 S.(I88b72b/189353863)

1.0.0-alpha10 版本

2021 年 8 月 4 日

androidx.window:window-*:1.0.0-alpha10 發布。1.0.0-alpha10 版本包含以下修訂項目。

新功能

  • 將 WindowInfoRepo 重新命名為 WindowInfoRepository 並調整對應的類別 / 檔案。
  • 將目前的視窗指標轉換為 WindowInfoRepository 中的流程,因為值會隨著時間改變。
  • 將 WindowInfoRepoJavaAdapter 重新命名為 WindowInfoRepoCallbackAdapter
  • 新增輔助方法以建立測試 FoldingFeature 物件
  • 根據支援的功能更新套件,將類別分類。

API 變更

  • 將 ActivityExt 重新命名為 ActivityExtensions 從 Repo 變更為 Repository。(I61a16)
  • 更新類別的套件。(I23ae2)
  • 從 WindowInfoRepo 移除 WindowMetrics。(I24663)
  • 移除 WindowManager 並使用 WindowInfoRepo
    • 將 WindowBackend 設為內部。(I06d9a)
  • 將視窗指標轉換為流程。
    • 將 Java 轉接程式重新命名為 WindowInfoRepoCallbackAdapter
    • 移除 callbackFlow,因此不必再使用實驗功能 API。(Ia4d15)
  • 新增輔助方法來建立測試顯示功能。
    • 從 occlusionMode 變更為 occlusionType (If4cff)

修正錯誤

  • 修正移除核心程式庫的 ProGuard 錯誤。
  • 修正無法將 WindowLayoutInfo 傳送給其他訂閱者的錯誤。
  • 修正設定變更不會觸發折疊功能更新的錯誤。

1.0.0-alpha09 版本

2021 年 6 月 30 日

androidx.window:window-*:1.0.0-alpha09 發布。查看 1.0.0-alpha09 版的修訂項

新功能

  • 從整數常數變更為不設限的列舉。
  • 新增測試公用程式,以建立測試折疊功能。

API 變更

  • 新增輔助方法來建立測試顯示功能。(I3cf54)
    • occlusionMode 變更為 occlusionType

修正錯誤

  • 新增多位資料串流消費者時,先發出初始值。

1.0.0-alpha08 版本

2021 年 6 月 16 日

androidx.window:window-*:1.0.0-alpha08 發布。查看 1.0.0-alpha08 版的修訂項

新功能

  • 發布測試構件,方便您在使用 WindowInfoRepository 時進行測試。使用 WindowInfoRepository 取得 DisplayFeatures 和 WindowMetrics 的相關資訊。(I57f66Ida620)

1.0.0-alpha07 版本

2021 年 6 月 2 日

androidx.window:window-*:1.0.0-alpha07 發布。查看 1.0.0-alpha07 版的修訂項

新功能

  • 將核心視窗程式庫遷移至 Kotlin。將使用協同程式並暫停函式,以公開日後的非同步資料。
  • 將 WindowInfoRepo 新增為取得 WindowMetrics 和 WindowLayoutInfo 串流的主要互動點。
  • 新增 window-java 構件來公開適用於 Java 的 API,以便註冊及取消註冊回呼。
  • 新增 window-rxjava2window-rxjava3 構件,以公開經過 RxJava 調整的 API。

API 變更

  • 新增 WindowServices 以統一提供依附元件。
    • 新增以協同程式為基礎的 API,以便使用視窗版面配置資訊。(Iab70f)
  • 將核心視窗管理員程式庫遷移至 Kotlin。(Icca34)

修正錯誤

  • 新增資料類別來代表特徵邊界。(I6dcd1)

1.0.0-alpha06 版本

2021 年 5 月 5 日

androidx.window:window:1.0.0-alpha06 發布。1.0.0-alpha06 版本包含以下修訂項目。

新功能

  • 我們已經開始遷移至 Kotlin,將於下一版中完成。
  • DeviceState 已從公用 API 中移除,請改用 FoldingFeature。
  • STATE_FLIPPED 目前不受任何用途支援,因此已從 FoldingFeature 狀態中移除。
  • 我們也移除了其他已淘汰的 API。

API 變更

  • 將 Kotlin 新增為依附元件。
    • 將核心程式庫遷移至 Kotlin。(Idd995)
  • 已移除 DisplayFeature 建構工具。(I61fa4)
  • 已從公用 API 中移除 DeviceState,請改用 FoldingFeature。(Id6079)
  • 從擴充功能中移除裝置狀態回呼。(I5ea83)
  • 從 FoldingFeature 移除 STATE_FLIPPED。(I9c4e1)
  • 移除已淘汰的註冊方法。(Ib381b)

1.0.0-alpha05 版本

2021 年 3 月 24 日

androidx.window:window:1.0.0-alpha05 發布。1.0.0-alpha05 版包含此連結所列的修訂項目。

新功能

我們在 FoldingFeature 中新增便利的方法,讓應用程式能夠判斷該功能是否分離、遮蔽並判斷轉軸的方向。我們也會隱藏轉軸類型

我們即將從 WindowManager 中移除同步讀取方法。同步讀取方法很容易出錯,因為有隱含的競爭狀況。註冊事件監聽器和回呼,即可在 WindowLayoutInfo 上接收更新。

API 變更

  • 新增使用 FoldingFeatures 的便利方法 (Ie733f)
  • 從 WindowManager 移除同步讀取方法 (I96fd4)

1.0.0-alpha04 版本

2021 年 3 月 10 日

androidx.window:window:1.0.0-alpha04 發布。1.0.0-alpha04 版本包含以下修訂項目。

新功能

  • 修正在沒有 OEM 實作的情況下,未發出 WindowLayoutInfo 的錯誤。現在,我們會發出空的 WIndowLayoutInfo。
  • 修正應用程式在背景執行時,轉軸狀態變更時狀態未妥善更新的錯誤。現在狀態應能保持一致。
  • 更新 ProGuard 檔案,忽略執行階段依附元件的警告。

修正錯誤

  • 缺少 OEM 程式庫時,發送空白值。(Ide935)

1.0.0-alpha03 版本

2021 年 2 月 18 日

androidx.window:window:1.0.0-alpha03 發布。1.0.0-alpha03 版包含以下修訂項目。

新功能

  • 當 OEM 實作為空白時,發出空白的 WindowLayoutInfo 值。這樣你就可以在更多裝置上輕鬆使用程式庫。由於 API 為非同步,我們仍建議應用程式編寫一些防禦程式碼,並在逾時後發出預設值。我們無法對 OEM 實作作業提供任何保證,因此初始值可能會延遲。

修正錯誤

  • 缺少 OEM 程式庫時,發送空白值。(Ide935)

1.0.0-alpha02 版

2021 年 1 月 27 日

androidx.window:window:1.0.0-alpha02 發布。1.0.0-alpha02 版包含此連結所列的修訂項目。

新功能

  • 我們已淘汰部分 API 來簡化 API,並減少錯誤。值得留意的範例包括從 WindowManager 移除同步讀取作業,並淘汰 DeviceState。同步讀取作業可能會造成競爭狀況,且 UI 有誤。

  • 我們已將 DisplayFeature 轉換至日後會導入其他功能的介面。第一項功能是 FoldingFeature,現在表示螢幕折疊或轉軸。另外也包含轉軸取代 DeviceState 的狀態。

  • WindowMetrics 是在 Android 11 中推出,開發人員可透過簡單的方式查詢視窗相關指標,例如視窗在畫面上的位置和大小,以及任何系統插邊。我們已在這個版本中向後移植 API,讓開發人員能利用 WindowMetrics 並繼續支援舊版 Android。WindowMetrics 可透過 WindowManager#getCurrentWindowMetrics() 和 WindowManager#getMaximumWindowMetrics() API 取得。

API 變更

  • 淘汰將在下一個 Alpha 版 中移除的 API。(Ib7cc4)
  • 更新 ExtensionInterface,以便接受煽情露骨內容 參照。(I07ded)
  • 推出 WindowMetrics API。(I3ccee)
  • 從 WindowManager 移除同步讀取方法 (I69983)
  • 將 ExtensionWindowBackend 套件受到保護。(Ied208)

修正錯誤

  • 更新 ExtensionInterface API,以便接受視覺情境。(I8e827)

外部貢獻

  • 合併 DeviceState 和 WindowLayoutInfo,這樣即可輕鬆存取資料。(Id34f4)。

1.0.0-alpha01 版

2020 年 2 月 27 日

androidx.window:window:1.0.0-alpha01」和「androidx.window:window-extensions:1.0.0-alpha01」 是否已發布。查看 1.0.0-alpha01 版的修訂項。 這是視窗管理員程式庫的第一個版本。

新功能

  • DisplayFeature:這個新的 API 可找出連續平面中的服務中斷情形 螢幕表面,例如轉軸或摺疊
  • DeviceState:這個新的 API 會根據已定義的姿勢清單 (例如 CLOSEDOPENEDHALF_OPENED 等),提供手機目前的姿勢。