WindowManager
最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 9 月 4 日 | 1.3.0 | - | - | 1.4.0-alpha02 |
宣告依附元件
如果要為 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-alpha02 版
2024 年 9 月 4 日
發布 androidx.window:window-*:1.4.0-alpha02
。1.4.0-alpha02 版包含這些修訂版本。
新功能
新增對自訂 WindowSizeClass
的支援。
- 開啟
WindowSizeClass
的建構函式,讓開發人員使用自己的建構函式。 - 新增
isAtLeast
公用程式方法,讓開發人員能夠處理一系列WindowSizeClass
值。 - 在
Set<WindowSizeClass>
上新增擴充功能函式,以便從 Set 中計算最相符的項目。 - 為 Android 建議的中斷點新增常數。
- 新增與 Android 建議中斷點相對應的中斷點集。
API 變更
- 更新
WindowSizeClass
的邊界方法名稱。(If89a6)。 - 更新
WindowSizeClass
API,以便支援日後新增中斷點值。我們不會設定絕對邊界,而是採用下限,並建議開發人員在處理WindowSizeClass
時使用下限檢查。現有的WindowWidthSizeClass
和WindowHeightSizeClass
即將淘汰,因為系統不會進一步開發這些項目。(I014ce)。
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
新增用於設定對話方塊的
EmbeddingConfiguration
和DimAreaBehavior
的 APIEmbeddingConfiguration
門課程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 以上版本。詳情請參閱這篇文章。(Ia60e0、b/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.Token
和SpltInfo.Token
做為 ID,以在 WM Jetpack 和擴充功能之間通訊。- 淘汰/取代 API 以接收/傳回權杖,而非 IBinder。(I12b24)。
- - 導入「
ActivityEmbeddingController#invalidateVisibleActivityStacks
」- 移除
SplitController#invalidateTopVisibleSplitAttributes
,因為功能合併至#invalidateVisibleActivityStacks
(I02ef5)
- 移除
- - 新增 API 以設定嵌入設定。(I59a4a)。
- - 新增固定/取消固定前
ActivityStack
個androidx.Window
API- 更新試用版應用程式,允許固定/取消固定頂端
ActivityStack
(I24dd3)
- 更新試用版應用程式,允許固定/取消固定頂端
- 重新加入
#finishActivityStacks
和ActivityEmbeddingOptions
(Ic1ab3) - 移除不穩定的 API。(Ibc534、b/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
(I21355、b/324293374)
修正錯誤
- 修正提供結構定義無法正確解開包裝的當機問題。(94d10ce、b/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-alpha01
。1.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.0
。1.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-beta04
。1.2.0-beta04 版包含以下修訂項目。
API 變更
- 移除不穩定的 API。(Ibc534、b/302380585)
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 檔案,以便為相容性抑制加上註解 (I8e87a、b/287516207)
1.2.0-alpha03 版本
2023 年 6 月 21 日
發布 androidx.window:window-*:1.2.0-alpha03
。查看 1.2.0-alpha03 版的修訂項。
新功能
- 從 API 介面中移除已淘汰的 API。
- 新增 API 以支援並行螢幕。
- 新增屬性即可停用強制調整大小覆寫設定。
- 新增屬性,停用最小顯示比例覆寫功能。
- 穩定
ActivityEmbeddingRule
,以支援活動嵌入功能的單元測試。
API 變更
修正錯誤
- 新增停用相容性屬性,以用於強制調整大小覆寫 (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
。新增測試方法,為SplitInfo
和ActivityStack
建立雙精度浮點值。(Icd69f)。 - 請將
ActivityRule.Builder
設為選用標記。(Ib0b44)。 - 移除
RatioSplitType
、ExpandContainersSplit
和HingeSplitType
。目前是SplitType
。- 將
#splitEqually()
、#expandContainers()
和#splitByHinge
替換為常數SplitType SPLIT_TYPE_EQUAL
、SPLIT_TYPE_EXPAND
和SPLIT_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_ALLOW
和ALWAYS_DISALLOW
取代alwaysAllow()
和alwaysDisallow()
。(I3057b)。 - 為
SplitRule
、SplitAttributes
和SplitAttributesCalculator
新增 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-alpha02
。1.2.0-alpha02 版包含此連結所列的修訂項目。
新功能
- 更新測試 API,取得未指定折疊功能的常數。
- 如果使用
WindowLayoutInfoPublishRule
覆寫,系統將覆寫windowLayoutInfo
的所有值,包括情境式 API。
API 變更
- 為未指定中心折疊功能新增常數。(I7530c)。
修正錯誤
- 更新
WindowLayoutInfoPublishRule
以支援Context
以WindowLayoutInfo
為基礎的覆寫值。(I2037a)。
1.2.0-alpha01 版本
2023 年 5 月 24 日
發布 androidx.window:window-*:1.2.0-alpha01
。1.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
重構為多個模組:Activity
或ActivityStack
相關 API 的ActivityEmbeddingController
模組。- 已將
isActivityEmbedded
從SplitController
移至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
— 定義分割的預設分割版面配置;取代splitRatio
和layoutDirection
。 - 已將 XML 屬性
splitRatio
和splitLayoutDirection
的翻譯新增至defaultSplitAttributes
。 - 變更最小尺寸定義,使用密度獨立像素 (dp),而非像素。
- 新增了
minHeightDp
,預設值為 600dp。 - 已將
minWidth
變更為minWidthDp
,預設值為 600 dp。 - 已將
minSmallestWidth
變更為minSmallestWidthDp
,預設值為 600 dp。 - 新增
maxAspectRatioInHorizontal
,預設值為ALWAYS_ALLOW
。 - 新增了
maxAspectRatioInPortrait
,預設值為 1.4。 - 定義
FinishBehavior
巢狀類別以取代完成行為常數。 - 已將屬性變更套用至
SplitPairRule
和SplitPlaceholderRule
的 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
項資源遷移:minWidth
和minSmallestWidth
現在使用 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() )
setFinishPrimaryWithSecondary
和setFinishSecondaryWithPrimary
採用FinishBehavior
列舉常數。詳情請參閱「SplitRule 遷移」。- 使用
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
在直向裝置上顯示分割畫面。
- 將
SplitPlaceholder.Builder
遷移作業:- 只有
filters
和placeholderIntent
參數。其他屬性則會移至 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-rc01
。1.1.0-rc01 版包含此連結所列的修訂項目。
新功能
- 發布
ActivityEmbedding
為穩定版 API。 - 修正多項錯誤。
1.1.0-beta02 版
2023 年 4 月 5 日
發布 androidx.window:window-*:1.1.0-beta02
。1.1.0-beta02 版本包含這些修訂版本。
新功能
- 內部修正與清理。
1.1.0-beta01 版本
2023 年 3 月 22 日
發布 androidx.window:window-*:1.1.0-beta01
。1.1.0-beta01 版包含此連結所列的修訂項目。
活動嵌入
- 已在應用程式資訊清單中,將
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
新增為<application>
標記的布林值屬性。 - 淘汰了
isSplitSupported
並替換為splitSupportStatus
,以便詳細說明無法使用分割功能的原因。 - 新增了
SplitController.SplitSupportStatus
巢狀類別,以便為splitSupportStatus
屬性提供狀態常數。 - 將
SplitController
重構為多個模組:Activity
或ActivityStack
相關 API 的ActivityEmbeddingController
模組。- 已將
isActivityEmbedded
從SplitController
移至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
— 定義分割的預設分割版面配置;取代splitRatio
和layoutDirection
。 - 已將 XML 屬性
splitRatio
和splitLayoutDirection
的翻譯新增至defaultSplitAttributes
。 - 變更最小尺寸定義,使用密度獨立像素 (dp),而非像素。
- 新增了
minHeightDp
,預設值為 600dp。 - 已將
minWidth
變更為minWidthDp
,預設值為 600 dp。 - 已將
minSmallestWidth
變更為minSmallestWidthDp
,預設值為 600 dp。 - 新增
maxAspectRatioInHorizontal
,預設值為ALWAYS_ALLOW
。 - 新增
maxAspectRatioInPortrait
,預設值為1.4
。 - 定義
FinishBehavior
巢狀類別以取代完成行為常數。 - 已將屬性變更套用至
SplitPairRule
和SplitPlaceholderRule
的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
項資源遷移:minWidth
和minSmallestWidth
現在使用 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() )
setFinishPrimaryWithSecondary
和setFinishSecondaryWithPrimary
採用FinishBehavior
列舉常數。詳情請參閱「SplitRule 遷移」。- 使用
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
在直向裝置上顯示分割畫面。
- 將
SplitPlaceholder.Builder
遷移作業:- 只有
filters
和placeholderIntent
參數。其他屬性則會移至 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)。 - 為
SplitRule
、SplitAttributes
和SplitAttributesCalculator
新增 API。(I92d23)。 - 改善與
maxAspectRatio
相關的 API:- 以
ALWAYS_ALLOW
和ALWAYS_DISALLOW
取代alwaysAllow()
和alwaysDisallow()
。 - 將 @see 的 API 說明文件更新為獨立說明文件。(I3057b)。
- 以
- 下列建構函式本就不該讓應用程式呼叫,因此已從公用 API 中移除。
SplitInfo
建構函式ActivityStack
建構函式 (Ide534)
SplitRule
現可採用maxAspectRatioInPortrait/Landscape
。只有在父項邊界的顯示比例小於或等於要求的maxAspectRatio
時,才能分割活動。(Ia5990)。- 將
RuleController#parseRules
變更為靜態性質 (I785df) - 改善與 ActivityEmbedding 相關的 API
- 採用一致的 API 命名方式 - 針對多個例項使用新增/移除功能:
- 將
registerRule
變更為addRule
- 將
unregisterRule
變更為removeRule
- 將
getSplitRules
替換為getRules
,因為ActivityRule
不是分割規則 - 新增
RuleController#setRules
,用來設定大量規則 - 從
SplitController
擷取規則相關 API 至單例模式RuleController
。這些因素包括: addRule
removeRule
getRules
setRules
clearRules
parseRules
- 從
SplitController
擷取#isActivityEmbedded
到單例模式ActivityEmbeddingController
。這些因素包括: isActivityEmbedded
- 移除
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)
- 我們不再區分靜態規則與執行階段規則。也就是說,呼叫
#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:
- 針對
SplitRule
採用以 DP 為單位的最小尺寸,而非像素。 - 重構
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-alpha04
。1.1.0-alpha04 版包含此連結所列的修訂項目。
新功能
- 公開一個方法,判斷
ActivityEmbedding
的ActivityStack
是否為空白。 - 從
ActivityEmbedding
API 中移除實驗性 API 標記。 - 將
ActivityRule
建構函式做為Builder
隱藏是偏好的方式。 - 新增在
WindowMetrics
取得WindowInsets
的實驗性方法。 - 更新
SplitPlaceholderFinishBehavior
以免與預留位置結束。如果結束預留位置,則會造成某項錯亂行為。
API 變更
- 將 val
isEmpty
設為公開,即可取代 funisEmpty
。 - 將
ActivityStack
參數活動重新命名為activitiesInProcess
。(Ia5055)。 - 移除造成錯亂的
ActivityFilter#matchesClassName
和ActivityFilter#matchesClassNameOrWildCard
。 - 新增
ActivityFilter#componentName
和ActivityFilter#intentAction
,方便呼叫端區別不同的篩選條件 (I41f22) - 從實驗性 API 中移除
@Deprecated
API (I216b3) - 移除活動嵌入 API 的
@ExperimentalWindowApi
(I69ebe) - 隱藏
ActivityRule
建構函式,請改用 Builder。(If4eb6)。 - 新增用於檢查活動是否屬於
ActivityFilter
的 API。(Ia43cf)。 - 更新 API 檔案以反映
WindowMetrics
和WindowMetricsCalculatorCompat
類別的變更 (I667fe) - 更新
ActivityEmbedding
屬性 Javadoc 和類別名稱 (Ia1386) - 新增要用於 AndroidManifest.xml (Id1ad4) 的
ActivityEmbedding
屬性標記名稱 - 新增了 API
SplitPlaceholderFinishBehavior
和SplitPlaceholderRule.finishPrimaryWithPlaceholder
,這會取代現有的SplitPlaceholderRule.finishPrimaryWithSecondary
,定義預留位置活動的完成時間,以及活動嵌入功能中相關活動的行為方式。(I64647)。
修正錯誤
- 加入
WindowAreaController
和 API,讓RearDisplay
模式將目前視窗移至與後置鏡頭對齊的螢幕。(I388ab)。
1.1.0-alpha03 版本
2022 年 7 月 27 日
發布 androidx.window:window-*:1.1.0-alpha03
。1.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-alpha01
。1.1.0-alpha01 版包含以下修訂項目。
新功能
- 發布轉接程式以支援 Java 與 RxJava
1.1.0-alpha01 版本
2022 年 4 月 20 日
發布 androidx.window:window:1.1.0-alpha01
。1.1.0-alpha01 版包含以下修訂項目。
新功能
- 修正了將應用程式設為背景後,會停止發出摺疊功能的錯誤。
- 展開實驗性 ActivityEmbedding API。
API 變更
- 用於檢查活動是否嵌入的公用 API。(I39eb7)。
修正錯誤
1.0 版本
1.0.0 版本
2022 年 1 月 26 日
發布 androidx.window:window-*:1.0.0
。1.0.0 版包含此連結所列的修訂項目。
1.0.0 的主要功能
- 透過
WindowInfoTracker
和FoldingFeature
支援折疊式手機。 使用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)
修正錯誤
- 修正記憶體流失問題。(I3fc79、b/202989046)。
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.(I88b72、b/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 的相關資訊。(I57f66、Ida620)
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-rxjava2
和window-rxjava3
構件,以公開經過 RxJava 調整的 API。
API 變更
修正錯誤
- 新增資料類別來代表特徵邊界。(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 變更
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 會根據已定義的姿勢清單 (例如CLOSED
、OPENED
、HALF_OPENED
等),提供手機目前的姿勢。