Compose UI
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(查看所有 Compose 套件的 API 參考資料說明文件)
| 最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 | 
|---|---|---|---|---|
| 2025 年 10 月 22 日 | 1.9.4 | - | 1.10.0-beta01 | - | 
結構
Compose 是由 androidx 中的 7 個 Maven 群組 ID 所組成。每個群組都包含一個指定功能子集,且各有一組專屬的版本資訊。
下表提供各群組的說明和每組版本資訊的連結。
| 群組 | 說明 | 
|---|---|
| compose.animation | 在 Jetpack Compose 應用程式中建構動畫,提供豐富的使用者體驗。 | 
| compose.compiler | 透過 Kotlin 編譯器外掛程式轉換 @Composable 函式,並啟用最佳化功能。 | 
| compose.foundation | 透過現成的構成元素編寫 Jetpack Compose 應用程式,然後進一步擴充基礎,建構出自己的設計系統元件。 | 
| compose.material | 運用現成的 Material Design 元件建構 Jetpack Compose UI。這是更高層級的 Compose 進入點,用意是確保提供的元件與 www.material.io 上所述元件相符。 | 
| compose.material3 | 運用新一代的 Material Design 3 元件建構 Jetpack Compose UI。Material 3 提供新的主題設定和元件,以及動態色彩等 Material You 個人化功能,可呼應全新的 Android 12 視覺風格和系統 UI。 | 
| compose.runtime | Compose 程式設計模型和狀態管理的基本構成元素,以及 Compose Compiler 外掛程式指定的核心執行階段。 | 
| compose.ui | 與裝置互動所需的 Compose UI 基礎元件,包括版面配置、繪圖及輸入。 | 
宣告依附元件
如要新增 Compose 的依附元件,必須將 Google Maven 存放區新增至您的專案。詳情請參閱「Google 的 Maven 存放區」一節。
在應用程式或模組的 build.gradle 檔案中,新增所需構件的依附元件:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 說明文件。
1.10 版
1.10.0-beta01 版
2025 年 10 月 22 日
發布 androidx.compose.ui:ui-*:1.10.0-beta01。1.10.0-beta01 版包含這些修訂項目。
API 變更
- 新增焦點變更調度最佳化功能。您可以使用 isOptimizedFocusEventDispatchEnabled = false停用這項功能 (I919fb、b/449228515)
- 更新所有間接觸控 API,改用間接指標 API 名稱,與指標輸入 API 相符。(I238ce、b/451607214)
- TextDirection、- TextAlign、- Hyphens、- FontSynthesis- valueOf函式現在收到不明值時會擲回- IllegalArgumentException。(I07c67)
- 更新 CompositionDataTree.makeTree,傳遞預設值而非包裝函式。(Id64a6、b/445229688)
- 接受 effectContext參數的測試規則 APIcreateComposeRule、createAndroidComposeRule和createEmptyComposeRule穩定版已推出,參數預設為EmptyCoroutineContext。(If400c、b/450540702)
- UnplacedStateAwareModifierNode已重新命名為- UnplacedAwareModifierNode(I6a551、b/449719932)
- 還原內容擷取最佳化設定 (Ic000b、b/442364065)
- 新增 ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled功能旗標。這項功能可進行效能最佳化,讓LayoutCoordinates.positionInRoot()等座標要求使用RectManager中已有的快取偏移,不必在每次呼叫時遍歷整個樹狀結構。(Ieaadc)
修正錯誤
- PlaceholderSpan現在會正確使用非線性字型縮放比例來調整大小 (Id2ead、b/324462728)
- 使用 ViewCompat執行平台層級支援的觸覺回饋常數,並依賴其較新常數的回溯支援。(Ib5a00)
1.10.0-alpha05 版
2025 年 10 月 8 日
發布 androidx.compose.ui:ui-*:1.10.0-alpha05。1.10.0-alpha05 版包含這些修訂項目。
修正錯誤
- 修正巢狀彈出式視窗在畫面頂端位置錯誤的問題,現在會正確錨定至父項彈出式視窗。(Id4603、b/191279752)
- 修正問題:焦點會包裝階層中的其他檢視區塊。(I95223、b/446028624)
- 修正 Kotlin 2.2.20 產生的 lambda 中,檢查器缺少內嵌參數的欄位 (I9855d、b/447110005)
- 修正 UI 和基礎模組之間自動填入資源的名稱遮蔽問題 (I5da5a)
外部貢獻
- UiModes物件已重新命名為 AndroidUiModes,以反映其常數是從 Android API 提升而來。(Ia0a77)
1.10.0-alpha04 版
2025 年 9 月 24 日
發布 androidx.compose.ui:ui-*:1.10.0-alpha04。1.10.0-alpha04 版包含這些修訂項目。
API 變更
- 接受 CoroutineContext參數的 Compose 測試規則變體已升級為穩定版。已移除實驗性註解,開發人員不必再選擇啟用即可使用這個 API。(I74e6e)
- 已移除「ComposeUiFlags.isRectTrackingEnabled」,這項邏輯不一定會啟用。(Id78df)
- 淘汰 Updater#set的內嵌多載,因為這些多載會多次裝箱提供的價值 (Id679e)
- 將 onAutofillText語意屬性標示為已淘汰。(I6f81c)
- 已推出 UnplacedStateAwareModifierNode。當先前放置的版面配置不再放置時,系統會呼叫回呼。(I8fdd8、b/309776096)
- 修正 RetainObserver.onRetained的說明文件,並新增RetainObserver.onUnused,與RememberObserver.onAbandoned相互對應。(Ia6fc5)
- 新增 onVisibilityChangedNode(),該項目會產生Modifier.Node,並由Modifier.onVisibilityChanged()透過委派使用,讓您在自訂Modifier.Node中擴充這項功能。(I70d84、b/443001320)
修正錯誤
- 修正問題:當內嵌內容位於多行省略文字的最後一行時,即使預留位置位於省略區域之前,內嵌內容仍無法顯示。(I76aaf、b/441829208)
1.10.0-alpha03 版
2025 年 9 月 10 日
發布 androidx.compose.ui:ui-*:1.10.0-alpha03。1.10.0-alpha03 版包含這些修訂項目。
API 變更
- 將 DelegatableNode.invalidateLayoutForSubtree重新命名為DelegatableNode.invalidateMeasurementForSubtree。(I94257、b/430106107)
- 移除多餘的 isInHiddenAccessibilitySubtree比對器。(I4476c、b/443792965)
- 導入以群組鍵為基礎的 Compose 堆疊追蹤,所有縮小應用程式預設都會啟用這項功能。從 Kotlin 2.3.0 開始,Compose 編譯器 Gradle 外掛程式會為這些追蹤記錄產生 ProGuard 對應。(Ifbcb5)
- Modifier.skipToLookaheadSize現在會使用預設啟用的 lambda,只有在共用轉換處於啟用狀態時才會啟用大小跳過功能,與- Modifier.skipToLookaheadPosition相同。(Ibe0f5、b/432485585)
- ComposeUiFlags.isOutOfFrameDeactivationEnabled已移除,這項功能現在一律會啟用。(I421ed)
- 將用於建立 FillableData例項的工廠函式移至隨附物件。請改用新的工廠方法FillableData.createFrom(value),不要呼叫FillableData(value)。(I2e200、b/441719650)
- 導入新的 BeyondBoundsLayoutModifierNode修飾符節點,可執行焦點搜尋的超出界線版面配置。(I39be1、b/416133658)
- 如果 FocusTargetModifierNode.requestFocus()本身無法成為焦點,就會將焦點傳送至其中一個子項。這與FocusRequester.requestFocus()和FocusRequesterModifierNode.requestFocus()的行為一致。如不需要這項行為,請在應用程式中將ComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled標記設為 false。(Icca5c、b/436863604)
- 在 WindowInfo中提供以 DP 為單位的視窗大小 (I9322b、b/424442112)
- 已移除旗標 isNestedScrollDispatcherNodeFixEnabled。(If451a)
- 在 FillableDataAPI 中新增對自動填入日期值的支援。val dateMillisValue: Long新增了擷取日期資訊的函式,並新增對應的FillableData(dateMillisValue: Long)建構函式,用於建立以日期為準的FillableData執行個體。(Id072a)
外部貢獻
- 導入 UiModes物件,用於宣告UiMode註解使用的常數 (I03cb8)
1.10.0-alpha02 版
2025 年 8 月 27 日
發布 androidx.compose.ui:ui-*:1.10.0-alpha02。1.10.0-alpha02 版包含這些修訂項目。
API 變更
- 更新 FillableData以支援非文字元件 (例如切換按鈕和清單),包括FillableData內的布林值和整數值,以及用於建立FillableData布林值和清單例項的工廠建構函式,這些例項會轉換為平台的AutofillValue。系統也會新增相關的語意屬性和動作。(Ia8105、Icc5cf)
- 在非觸控模式下,檢視系統會將初始/預設焦點指派給畫面上的其中一個可對焦項目。這項功能已新增至 Compose,啟用 ComposeUiFlags.isInitialFocusOnFocusableAvailable即可使用。(Ib9178)
- 已移除旗標 isPointerInteropFilterDispatchingFixEnabled。(Iaa589)
- 已移除旗標 isNestedScrollInteropPostFlingFixEnabled。(I2a756)
- 加入 isHiddenFromAccessibility()和isInHiddenAccessibilitySubtree()語意比對器。(I9f5a1)
- 新增 runCurrent()至MainTestClock,在基礎排程器上執行所有到期工作。這是為了支援在StandardTestDispatcher上執行測試,因為當工作延遲時間為 0 毫秒時,系統會將工作新增至排程器,而不是立即執行。您可以建立ComposeTestRule並將StandardTestDispatcher傳遞至該項目,藉此設定測試以使用StandardTestDispatcher。根據預設,測試會在UnconfinedTestDispatcher上執行,因此永遠不必呼叫runCurrent()。
- 新增在 StandardTestDispatcher上執行測試的支援。過去,測試架構是 (現在也是) 使用UnconfinedTestDispatcher設定,這與正式版環境的差異很細微。您現在可以建立自己的StandardTestDispatcher,並在建立ComposeTestRule時 (或呼叫 runComposeUiTest 時),將其新增至effectContext,藉此變更這項設定。(I334d0、b/254115946)
- 更新程式碼,從 SlotTree建立節點樹狀結構。(I997d3)
修正錯誤
- Compose UI 現在會在 Android 上安裝生命週期感知 RetainScopes。現在,預設行為會在設定變更時保留retain值。(Id4a09、b/177562901)
外部貢獻
- 新增功能:VelocityTracker可根據追蹤的指標事件,使用平台專屬行為計算指標速度。(I621e8)
1.10.0-alpha01 版
2025 年 8 月 13 日
發布 androidx.compose.ui:ui-*:1.10.0-alpha01。1.10.0-alpha01 版包含這些修訂項目。
API 變更
- 現在如果指標向下事件並未發生在焦點節點的界限內,使用滑鼠或觸控板在 ComposeView中指標向下時,系統會自動清除焦點。這樣一來,當使用指標輸入裝置時,使用者會更預期出現「輕觸即可清除焦點」的 UX,而非目前的行為。您可以使用新的AbstractComposeView.isClearFocusOnPointerDownEnabledAPI 選擇不採用這項行為。(I6322b、b/282963174)
- 導入 FillableData介面,支援各種自動填入元件類型 (文字除外)。(If9bd2)
- 新版 API 可動態啟用及停用共用元素,並考量是否已有進行中的共用元素轉場效果。新版 API:在轉換期間捨棄目標共用元素時,設定替代目標邊界。新增 API,可取得 LookaheadScope的LayoutCoordinates。(I18dd4、b/409819304、b/395670637)
- 導入 isNestedScrollInteropIntegerPropagationEnabled旗標,控管將正確整數分派至巢狀捲動互通性的實驗。(If8316)
- 新增 requestFocusForChildInRootBounds()至DelegatableNode,將焦點移至與指定矩形重疊的子項。(I001ef)
- 已移除旗標 isOnScrollChangedCallbackEnabled、isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled、isFlingContinuationAtBoundsEnabled、isAutomaticNestedPrefetchEnabled、DragGesturePickUpEnabled、isPointerInteropFilterDispatchingFixEnabled、isNestedScrollInteropPostFlingFixEnabled、isNestedScrollDispatcherNodeFixEnabled(I36c18)
- 在 SemanticsNode尋找器和選取器函式上新增@CheckResult註解,強制使用傳回值。(I6f86e、b/201652748)
- 提升內容擷取程序效能 (I3c7c0)
- 導入 CompositionLocal,可用於修改自動填入功能成功填入時的醒目顯示筆刷。(I52329)
- 導入新的 Interpolatable 介面,可自動在不同型別之間插補,前提是其中一個型別知道如何從另一個型別轉換。這個介面用於 Brush 和 Shape 等多種 Compose 類型,但也可在外部使用。(I58eab)
- 現在 Scrollable 可更妥善地支援 2 維滑鼠滾輪捲動事件。我們推出了新的測試 API,協助您在 MouseInjectionScope中測試用途。我們也在MouseInjectionScope中為捲動方法導入新的超載,並新增名為isMouseWheel1DAxisLockingEnabled的旗標來控管新行為 (I136df)
- 新增 DeviceConfigurationOverrides,用於鍵盤類型和狀態、導覽類型和狀態、觸控螢幕狀態,以及 UI 模式類型 (I282f0)
- 新增了名為 Tight的LineHeightStyle.Mode。即使可能會截斷較高的字形,這個模式仍會強制執行較小的行高。(Id3849)
- BaselineShift現在有 Unspecified 值,可防止裝箱- BaselineShift、- Hyphens、- LineBreak、- TextAlign和- TextDirection現在有- isSpecified輔助函式- Hyphens、- TextAlign、- TextDecoration和- TextDirection現在有- valueOf()和值方法,可有效率地序列化/還原序列化。(I8d44c)
- 新增 getDisplayName方法介面,可為預覽參數例項設定自訂顯示名稱。(I19bdf、b/241699422)
- 現在使用小於或大於比較 Dp 值與 Unspecified 時,一律會傳回 false。使用 Dp.compareTo(Unspecified)一律會傳回 0。將ComposeUiUnitFlags.isDpCompareToChanged標記設為 false 會將Dp.compareTo()還原為先前的行為,也就是比較「未指定」與小於和大於時不一定會傳回 false,且「未指定」與compareTo()的行為與Float.compareTo()相同。(Ifa88b、b/429221319)
修正錯誤
- 將預設 minSdk 從 API 21 移至 API 23 (Ibdfca、b/380448311、b/435705964、b/435705223)
- 修正問題:在轉移期間無法建立新的 AndroidComposeViews。(I2e23e、b/340894487、b/287484338)
- 修正使用單一顏色且 fillColor既非完全不透明也非完全透明的向量可繪項目時,發生的顏色錯誤。(I3b041、b/328677973)
- 修正問題:透過 painterResource載入的圖示含有主題專屬顏色,但主題變更時不會更新。(I85ea0、b/424416571)
- 導入 onFillData和fillableData語意 (I45d9e)
- StateRestorationTester現在一律會啟用平台專屬狀態編碼。這可讓測試行為與實際應用程式狀態還原作業保持一致,例如 Android 上的 Parcelization。(I38211、b/408154192、b/382294247)
- 修正要求焦點時偶爾會異常終止的問題。(57b31a11、b/431111149)
1.9 版
1.9.4 版
2025 年 10 月 22 日
發布 androidx.compose.ui:ui-*:1.9.4。1.9.4 版包含這些修訂項目。
修正錯誤
- 修正問題:如果內嵌文字內容位於多行省略文字的最後一行,即使內嵌內容不在省略區域中,也會消失。(I76aaf、b/441829208)
- 修正問題:當 debounceMillis不為零時,系統不一定會呼叫onLayoutRectChanged修飾符回呼。(72aba47、b/445324854)
1.9.3 版
2025 年 10 月 8 日
發布 androidx.compose.ui:ui-*:1.9.3。1.9.3 版包含這些修訂項目。
修正錯誤
- 修正如果移動的版面配置有超過 170 個後代,onVisibilityChanged/onFirstVisible/onLayoutRectChanged修飾符未收到回呼的錯誤。(4f2fdd、b/445356774)
1.9.2 版
2025 年 9 月 24 日
發布 androidx.compose.ui:ui-*:1.9.2。1.9.2 版包含這些修訂項目。
修正錯誤
- 現在節點分離或重複使用時,Modifier.onVisibilityChanged()會正確觸發。(Ic5ce20)
- Modifier.onVisibilityChanged()和- onLayoutRectChanged()現在可正確處理使用- placeWithLayer()放置子項的父項版面配置。(Ia05ac9)
- 對於 Modifier.onVisibilityChanged()和onLayoutRectChanged(),請在移除圖層/圖層修飾符或更新圖層屬性等特殊情況下,適當通知。(Ia05ac)
1.9.1 版
2025 年 9 月 10 日
發布 androidx.compose.ui:ui-*:1.9.1。1.9.1 版包含這些修訂項目。
修正錯誤
- 修正使用單一顏色且 fillColor既非完全不透明也非完全透明的向量可繪項目時,發生的顏色錯誤。(I3b041、b/328677973)
1.9.0 版
2025 年 8 月 13 日
發布 androidx.compose.ui:ui-*:1.9.0。1.9.0 版包含這些修訂項目。
自 1.8.0 版以來的重要變更
- 如要瞭解 1.9.0 版的重要異動,請參閱這篇網誌文章
- Compose 隨附的 Lint 檢查現在需要最低 AGP 版本 8.8.2。如果無法升級 AGP,可以改為在 gradle.properties中使用android.experimental.lint.version=8.8.2(或更新版本),單獨升級 Lint。如要在 IDE 中執行 Compose Lint 檢查,必須使用 Android Studio Ladybug 或更新版本。
- 重大變更:graphicsLayer修飾符節點現在會實作SemanticsModifierNode。這可能會導致語意樹新增SemanticsNodes,因此,如果測試對語意樹結構做出假設,就會導致測試失敗。舉例來說,如果目前節點和目標節點之間新增了節點,使用onChild、onParent、onSibling和其他類似方法進行斷言的測試可能會失敗。修正這些失敗問題的理想做法,是直接在目標節點中新增testTag。另一種做法是使用較寬鬆的比對器,例如onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))。(I638b5)
1.9.0-rc01 版本
2025 年 7 月 30 日
發布 androidx.compose.ui:ui-*:1.9.0-rc01。1.9.0-rc01 版包含這些修訂項目。
修正錯誤
- 修正問題:透過 painterResource載入且具有主題專屬色彩的圖示,不會在系統主題變更時更新。(I85ea0、b/424416571)
- 修正 API 21(Lollipop) 和 28(Pie) 的錯誤,這些錯誤是在最佳化期間重新命名重要圖像方法時發生。(Iebf99、b/425120571、b/420462749)
- 確認新插入的 onLayoutRectChanged修飾符最初會回呼。(l9aa91)、(lb348a)
- 修正偏移快取遭錯誤地失效,導致系統使用錯誤的座標呼叫 onLayoutRectChanged修飾符 (ibd4cd、lddc57)
- 修正 onLayoutRectChanged修飾符為旋轉/傾斜的版面配置提供錯誤座標的問題 (lddc57、b/426750475)
外部貢獻
- 修正捲動時 LazyList中的dragAndDropSource項目會消失的問題。感謝 Victor Rendina!(dc3bcd3、b/425894792)
1.9.0-beta03 版
2025 年 7 月 16 日
發布 androidx.compose.ui:ui-*:1.9.0-beta03。1.9.0-beta03 版包含這些修訂項目。
修正錯誤
- 修正問題:均勻模糊的內陰影無法隨著位移正確移動。
1.9.0-beta02 版
2025 年 7 月 2 日
發布 androidx.compose.ui:ui-*:1.9.0-beta02。1.9.0-beta02 版包含這些修訂項目。
API 變更
修正錯誤
- 如果沒有任何 WindowInsets侵犯ComposeView的內容,系統就不會提供WindowInsetsRulers值。(I71221)
1.9.0-beta01 版本
2025 年 6 月 18 日
發布 androidx.compose.ui:ui-*:1.9.0-beta01。1.9.0-beta01 版包含這些修訂項目。
破壞性變更
- graphicsLayer修飾符節點現在會實作- SemanticsModifierNode。這可能會導致語意樹新增- SemanticsNodes,因此,如果測試對語意樹結構做出假設,就會導致測試失敗。舉例來說,如果目前節點和目標節點之間新增了節點,使用- onChild、- onParent、- onSibling和其他類似方法進行斷言的測試可能會失敗。修正這些失敗問題的理想做法,是直接在目標節點中新增- testTag。另一種做法是使用較寬鬆的比對器,例如- onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))。(I638b5)
API 變更
- 將 ShadowContext變更為密封介面 (I3ce40)
- 新增跨模組方式,建立間接觸控事件 (用於測試) (I22e4c)
- MakesIndirectTouchEvent.nativeEventexperimental. (I6fda5)
- 根據 API 委員會的意見回饋修訂 API 介面。(Ibf378)
- 移除 FrameRateCategory.NoPreference常數。將Modifier.requestedFrameRate重新命名為Modifier.preferredFrameRate。(I2f976)
- WindowInsetsRulers:已將- rulersIgnoringVisibility變更為上限。將- getDisplayCutoutBounds()變更為- PlacementScope的擴充功能函式。「- WindowInsetsAnimationProperties」已變更為「- WindowInsetsAnimation」,「- getAnimationProperties()」已變更為「- getAnimation()」。(I3816f)
- 將類別 ShadowParams變更為Shadow(I11cca)
- 將影格速率 API 的套件從 androidx.compose.ui.ui變更為androidx.compose.ui(I8994e)
- 已將 InsetsRulers變更為通用程式碼,名稱為WindowInsetsRulers。簡化 API,讓所有插邊都是WindowInsetsRulers。將非尺規動畫屬性擷取至AnimationProperties類別。WindowInsetsRulers.innermostOf()可用於合併多個WindowInsetsRulers。(I2f0c6、b/415012444)
- 新增工具 API,用於剖析 Compose 編譯器新增的來源資訊。(Iceaf9、b/408492167)
修正錯誤
- 這項功能已通過完整驗證,因此 isGetFocusedRectReturnEmptyEnabled的旗標已移除。(Ife722)
- 修正 performScrollToNode中的錯誤,這個錯誤有時會導致系統無法抵達目標節點。修正後,在這些情況下,系統應該一律會抵達目標節點。這項變更的副作用是,動作結束時的確切捲動位置可能有所不同,這會影響螢幕截圖測試和假設確切捲動位置的測試。(I2c8a1)
1.9.0-alpha04 版
2025 年 6 月 4 日
發布 androidx.compose.ui:ui-*:1.9.0-alpha04。1.9.0-alpha04 版包含這些修訂項目。
API 變更
- 新增可自訂陰影的修飾符 API。(I2058d、b/160665122)
- 新增 SemanticsModifierNode.isImportantForBounds屬性,判斷計算邊界時是否應將節點納入考量。這項屬性預設為 true,可以設為 false,表示節點不應納入邊界考量。(I7ebec)
- 新增 SemanticsPropertyKey工廠函式,用於宣告 Android 專屬的語意屬性,這些屬性會透過AccessibilityNodeInfo.getExtras以無障礙功能額外項目形式公開。(I2ed51)
- 移除 ComposeUiFlags.isRemoveFocusedViewFixEnabled的用法,並淘汰該旗標。(I50328)
- 推出可自訂的全新陰影架構。包括 DropShadowPainter和InnerShadowPainter,以及DropShadow/InnerShadow依附元件。陰影基礎架構是共用的,因此可在多個呼叫位置共用相同的陰影,不必重新產生 n 次陰影。(I24f7a、b/160665122)
- 介紹 CompositeShader和CompositeShaderBrush,這兩個函式會在兩個著色器之間建立合成結果。同時新增ShaderBrush#transform,為著色器設定轉換矩陣。(I2621a、b/160665122)
修正錯誤
- 修正 NestedScrollInteropConnection的錯誤,解決快速滑動方法相對於檢視區塊的順序錯誤問題。(I56ad4)
- 先前,繪製全螢幕的對話方塊不會在螢幕凹口區域內繪製。這個錯誤已修正,現在含有 decorFitsSystemWindows = false和usePlatformDefaultWidth = false的對話方塊可以佔用螢幕凹口區域。(I9e975)
- 修正錯誤:在 Compose 應用程式於背景執行時開啟 TalkBack,綠色焦點指標不會繪製。(Ifd12a)
1.9.0-alpha03 版
2025 年 5 月 20 日
發布 androidx.compose.ui:ui-*:1.9.0-alpha03。1.9.0-alpha03 版包含這些修訂項目。
API 變更
- 如果 ComposeView中沒有可聚焦的項目,ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled旗標會將矩形設為 Empty 值。這樣可避免聚焦搜尋選擇要聚焦的檢視區塊。如果輸入法有「下一步」選項,且嘗試將焦點放在ComposeView和requestFocus()失敗,這點就格外重要。(Ibd0e2、b/369256395)
- 導入旗標 isNestedScrollDispatcherNodeFixEnabled。(I0d24a)
- 將 DialogProperties'dialogContentTitle重新命名為windowTitle(Ibd27b)
- 導入 Modifier.onFirstVisible和Modifier.onVisibilityChanged修飾符,這些是建構在Modifier.onLayoutRectChanged之上的高階修飾符。這些修飾符專為處理許多常見的應用程式需求而建構,例如記錄曝光次數、自動播放影片等。這些修飾符的建構方式以效能為考量,因此可在重要的清單式情境中使用,不必擔心犧牲捲動效能。除了這些修飾符 API 之外,我們還新增了其他 API,以支援這些用途,並讓開發人員更輕鬆地建立完全符合用途的類似自訂修飾符。RelativeLayoutBounds(I759b8)
- 將 setDiagnosticStackTraceEnabled變更為實驗,以因應這項功能的未來發展。(I11db3)
- 推出 Modifier.scrollable2D、Scrollable2DState和隨附 API,用於建立狀態。此外,也推出了常見的捲動擴充功能函式。(Ic61c8、b/214410040)
- Compose 64 位元顏色值無法直接與 Android ColorLongs比較,因為部分色彩空間的色彩空間 ID 順序有誤。我們新增了toColorLong()和fromColorLong()這兩個 API,方便您轉換 Android 色彩空間。(I36899)
- 推出 ViewConfiguration.minimumFlingVelocity,可控制下限擺動速度。(I11aab)
1.9.0-alpha02 版
2025 年 5 月 7 日
發布 androidx.compose.ui:ui-*:1.9.0-alpha02。1.9.0-alpha02 版包含這些修訂項目。
API 變更
- 在 dialogContentTitle中新增DialogProperties,設定內容視窗標題。bf9d670
修正錯誤
- 在修正內部測試問題期間,系統暫時停用了「視窗插邊尺規」。8d1402
- 修正指標輸入內容變更在 DragGestureNode中新增至VelocityTracker的方式,這項操作可透過新的isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled旗標控管。254ddb
1.9.0-alpha01 版
2025 年 4 月 23 日
發布 androidx.compose.ui:ui-*:1.9.0-alpha01。1.9.0-alpha01 版包含這些修訂項目。
行為變更
- Compose 隨附的 Lint 檢查現在需要最低 AGP 版本 8.8.2。如果無法升級 AGP,可以改為在 gradle.properties中使用android.experimental.lint.version=8.8.2(或更新版本),單獨升級 Lint。如要在 IDE 中執行 Compose Lint 檢查,必須使用 Android Studio Ladybug 或更新版本。
API 變更
- 移除旗標,為命中路徑追蹤器啟用追蹤陳述式 (偵錯)。(I1b2a1)
- 將 InnerRectRulers和OuterRectRules改為方法。已從RectRulers公用 API 移除名稱參數。DerivedRulers現在是垂直和水平尺規的建構函式選項。MergedHorizontalRulers和MergedVerticalRulers已替換為minOf和maxOf方法,用於產生執行個體。(Iee89f、b/408192133)
- 淘汰 androidx.compose.ui.LocalSavedStateRegistryOwner,改用androidx.savedstate.compose.LocalSavedStateRegistryOwner。(I5439f、b/377946781)
- 新增 Modifier.keepScreenOn,將螢幕設為在顯示時不進入休眠狀態 (Ib5af4、b/408284174)
- 新增語意屬性 Shape,當 UI 元素的形狀與其矩形界框不同時 (例如圓角矩形),即可設定此屬性。(I1376f)
- 修正 AndroidViews中的指標事件傳送問題,並新增isPointerInteropFilterDispatchingFixEnabled標記來保護變更。(I0e272、b/372055500、b/408002332)
- FocusRestorer不再釘選先前焦點項目。使用者應使用鍵,確保先前聚焦的項目具有相同的組合雜湊,以便順利還原焦點。(I4203b、b/330696779)
- 允許「撰寫」功能觸發 ViewTreeObserver.OnScrollChanged。這項行為是在isOnScrollChangedCallbackEnabled旗標下導入。我們也推出了DelegatableNode dispatchOnScrollChanged的擴充功能函式。(I34b9d、b/238109286)
- currentCompositeKeyHash目前已淘汰。請改用- currentCompositeKeyHashCode。取代的 API 會以更多位元編碼相同的雜湊,因此在組合階層中,兩個隨機不相關的群組擁有相同雜湊鍵的機率會大幅降低。(I4cb6a、b/177562901)
- 使用 Kotlin 2.0 發布的專案必須使用 KGP 2.0.0 以上版本 (Idb6b5)
- 新增 FocusRequester的 Lint 檢查支援,確保系統會在組合中記住該項目 (I6bf91)
- 新增功能:可設定要算繪的 Composable 偏好影格速率或影格速率類別 (Ie5201)
- 在 Android 上公開原生 MotionEvent。(I17286)
- 新增 getChecked() + setChecked(int),淘汰isChecked + setChecked(boolean)(Iaac9d)
- graphicsLayer修飾符現在接受- blendMode和- colorFilter(Iab0e6)
- 新增 LocalResources組合本機,用於查詢資源。設定變更時,呼叫LocalResources.current會重新組合,因此呼叫stringResource()等 API 時會傳回更新的值。(I50c13、b/274786917)
- 公開 Composables 的實驗性 API,用於處理間接觸控事件 (Icff57)
- 這個版本改善了可組合內容在版面配置和繪製階段擲回的未處理例外狀況報表。先前,如果這裡有未處理的例外狀況,測試執行器就會異常終止,並提前結束測試套件。現在可以更優雅地回報這些例外狀況,不必結束測試套裝組合。(I9928b、b/314128080)
- 已淘汰實驗性 GlobalAssertionsAPI。這個屬性的用途是執行無障礙檢查,請改用enableAccessibilityChecks()。(I50aa5)
- SemanticsNodeInteraction.performTextInputSelection不再是實驗功能,現在支援額外的- relativeToOriginal參數,可讓您將選取內容套用至原始未轉換的文字或轉換後的文字。(I3a905、b/261561038、b/277018945)
- 透過 AnnotatedString導入 API,建立自訂項目符號清單 (I1d066、b/383269496、b/139326648)
- 淘汰 runWithTimingDisabled,改用runWithMeasurementDisabled,更清楚地說明行為 - 所有指標都會暫停。此外,由於無法重新宣告runWithMeasurementDisabled函式來開放存取權 (因為該函式是內嵌函式),因此請公開MicrobenchmarkScope超類別。(I9e23b、b/389149423、b/149979716)
- 更新 ui-tooling Devices API,加入新裝置。(Ia2ac1)
- 在「預覽畫面大小」集合中新增「平板電腦直向」選項,協助開發人員考量較大的視窗 (Ia1976)
- 推出追蹤值 API,用於在特定時間點標記/記錄追蹤值。追蹤值會以新車道的形式顯示在 Prefetto 中,可透過追蹤記錄的時間軸查看。在 Android 上,這些功能是使用 Trace.setCounter實作。(Idcf48)
修正錯誤
- 修正可暫停組合項中 remember 觀察器的調度,避免在同一個套用中調度已記憶/已忘記的項目 (I570b2、b/404645679、b/407931790)
- 現在可以設定 android:dialogTheme,在decorFitsSystemWindows為 false 時控制對話方塊屬性 (I7922f、b/246909281)
- 修正錯誤:在對話方塊外部偵測到任何動作事件時,系統可能會關閉對話方塊。(Ia78fd)
- 從指令列執行 Compose 檢查時,現在需要最低 8.8.2 版的 AGP;如要透過 IDE 支援,則需要至少 Android Studio Ladybug 版。如果使用的是舊版 AGP,可以在 gradle.properties 中設定 android.experimental.lint.version=8.8.2,升級 Lint 版本,不會影響 AGP。(I6f2a8)
- 新增了語意屬性 InputText,可擷取套用輸出轉換前的textfield值。(Iae46a、b/395911609、b/176949051)
- 將開啟 Android 無障礙檢查的 enableAccessibilityChecks()API 移至個別套件,如果您在呼叫TestRule時未使用TestRule和compose:ui:ui-test-junit4-accessibility,則為compose:ui:ui-test-accessibility(I3c318、b/391560768)
- 在 LaunchedEffect和rememberCoroutineScope中新增 Compose 堆疊追蹤的支援 (I705c0、b/354163858)
外部貢獻
- 變更實驗性 runComposeUiTest函式,接受暫停區塊。此外,為了確保二進位檔相容性,也新增了已淘汰的函式runComposeUiTest(I3b88c、b/361577328)
1.8 版
1.8.3 版
2025 年 6 月 18 日
發布 androidx.compose.ui:ui-*:1.8.3。1.8.3 版包含這些修訂項目。
修正錯誤
- 這項功能已通過完整驗證,因此 isGetFocusedRectReturnEmptyEnabled的旗標已移除。(Ife722)
- 如果 ComposeView中沒有可聚焦的項目,ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled旗標會將矩形設為 Empty 值。這樣可避免聚焦搜尋選擇要聚焦的檢視區塊。如果輸入法編輯器有「下一步」選項,且嘗試將焦點放在ComposeView和requestFocus()時失敗,這點就格外重要。(Ibd0e2、b/369256395)
1.8.2 版
2025 年 5 月 20 日
發布 androidx.compose.ui:ui-*:1.8.2。1.8.2 版包含這些修訂項目。
修正錯誤
1.8.1 版
2025 年 5 月 7 日
發布 androidx.compose.ui:ui-*:1.8.1。1.8.1 版包含這些修訂項目。
修正錯誤
- 修正 onLayoutRectChanged和LazyLayout的部分問題 d791b11
- 預先組合的商品可略過重新測量要求。這個錯誤會影響延遲版面配置的捲動效能,因為在某些情況下,預先擷取作業無法有效運作,且測量作業是在影格內進行。742087a
1.8.0 版
2025 年 4 月 23 日
發布 androidx.compose.ui:ui-*:1.8.0。1.8.0 版包含這些修訂項目。
自 1.7.0 版以來的重要變更
- Compose 1.8 新增了語意自動填入支援功能。請確認您使用的 UI 和 Foundation 版本為 1.8 以上,因為文字元件的自動填入功能需要這兩個模組的最新版本。如需 API 用法和範例,請參閱這篇文章,進一步瞭解自動填入功能。
- Compose 1.8 支援其他類型的觸覺回饋:Confirm、ContextClick、GestureEnd、GestureThresholdActivate、Reject、SegmentFrequentTick、SegmentTick、ToggleOn、ToggleOff、VirtualKey。您可以透過LocalHapticFeedback存取這項功能。在 Android 上,當 Vibrator API 指出支援觸覺回饋時,這項功能預設為啟用。
- 多個 Focus API 現在是穩定版,包括 Modifier.focusRestorer()、onEnter和onExitFocusProperties(I6e667)。您現在可以在呼叫requestFocus時指定FocusDirection。我們在focusRequester和FocusTargetModifierNode中新增了requestFocus(FocusDirection)API,可讓您朝特定方向對焦。(I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc]、b/245755256)
1.8.0-rc03 版
2025 年 4 月 9 日
發布 androidx.compose.ui:ui-*:1.8.0-rc03。1.8.0-rc03 版包含這些修訂項目。
修正錯誤
- 停用導致回歸的部分焦點互通性修正。(b9d998、b/369256395、b/378570682、b/376142752、b388590015/、b/389994198、b/391378895)
1.8.0-rc02 版
2025 年 3 月 26 日
發布 androidx.compose.ui:ui-*:1.8.0-rc02。1.8.0-rc02 版包含這些修訂項目。
修正錯誤
- 修正問題:從 LazyList 移除焦點檢視區塊時,內嵌在 Compose 階層中的焦點檢視區塊會導致重入組合。(765562)
1.8.0-rc01 版
2025 年 3 月 12 日
發布 androidx.compose.ui:ui-*:1.8.0-rc01。1.8.0-rc01 版包含這些修訂項目。
修正錯誤
- 修正在螢幕鍵盤處於啟用狀態時,移除焦點 AndroidView導致當機的問題。(Ic725a)
- 修正新焦點狀態處理實作中的幾個問題。(b/395895685)
- 修正使用 LaunchedEffect要求文字欄位焦點時,導致自動填入功能無法運作的問題。(b/392539099)
1.8.0-beta03 版
2025 年 2 月 26 日
發布 androidx.compose.ui:ui-*:1.8.0-beta03。1.8.0-beta03 版包含這些修訂項目。
API 變更
- 將開啟 Android 無障礙檢查的 enableAccessibilityChecks()API 移至個別套件,如果您未使用 TestRule,則為compose:ui:ui-test-accessibility;在TestRule上呼叫時,則為compose:ui:ui-test-junit4-accessibility(I547ef、b/391560768)
- 新增了 InputText語意屬性,可擷取套用輸出轉換前的文字欄位值。(Iae46a)
修正錯誤
- 修正自動填入服務儲存轉換後文字 (而非輸入文字) 的問題。(Iae46a、b/395911609、b/176949051)
1.8.0-beta02 版
2025 年 2 月 12 日
發布 androidx.compose.ui:ui-*:1.8.0-beta02。1.8.0-beta02 版包含這些修訂項目。
新功能
- 新增 lint 檢查,針對呼叫 Configuration#screenWidth/heightDp發出警告 - 您可以改用LocalWindowInfo.current.containerSize擷取目前的視窗大小。
1.8.0-beta01 版
2025 年 1 月 29 日
發布 androidx.compose.ui:ui-*:1.8.0-beta01。1.8.0-beta01 版包含這些修訂項目。
API 變更
- ContextualFlowRow和- ContextualFlowColumn已標示為已淘汰。這項實驗性元件是在 1.7 版中推出,尚未穩定,且實作方式不盡理想。日後可能會提供元件,解決這個元件原本要解決的用途。- FlowRow和- FlowColumn具有實驗性超載,這些超載是在 1.7 中導入,包含- overflow參數。這項參數已淘汰,請改用不含這項參數的超載。這些多載的預設「溢位」行為將為「剪輯」,與推出時相同。
- 許多 ContextualFlowRow的用途都可以透過 FlowRow 達成,但我們也瞭解這並非完全適用。ContextualFlowRow完全可在使用者空間中實作,您也可以嘗試複製實作內容並視需要調整。我們希望日後能以不同方式解決這些用途。(Ibafec)
 
- 已移除 SemanticsNodeInteraction.semanticsId()。請改用SemanticsNodeInteraction.fetchSemanticsNode().id。(Ie397a)
- 舊版自動填入 API 已淘汰。請改用新的語意 API。(I943ff)
- 將 requestAutofillAPI 重新編寫為存在於自動填入管理員外部。(Id1929)
修正錯誤
- 修正焦點問題:如果 requestFocus()含有不合理的previouslyFocusedRect參數 (與焦點方向相關),會略過ComposeView。(Ifdc2f、b/388590015)
- 修正使用 GraphicsLayer.record { this@ContentDrawScope.drawContent() }時偶爾發生的 NPE。如要以這種方式記錄drawContent(),請務必在DrawScope內使用GraphicsLayer#record擴充功能函式,而非GraphicsLayer的成員函式。(I75fc0、b/389046242)
- 修正文字版面配置,避免動畫期間有時會錯誤翻譯刪節號,詳情請參閱 b/389707025 (Ie55b1、b/389707025)
1.8.0-alpha08 版
2025 年 1 月 15 日
發布 androidx.compose.ui:ui-*:1.8.0-alpha08。1.8.0-alpha08 版包含這些修訂項目。
API 變更
- 將 AutofillManager設為抽象類別。(I0a3b0)
- 修正多個焦點相關問題,包括 IME 嘗試將焦點放在沒有可聚焦項目的 ComposeView時異常終止、子項AndroidViews內的焦點變更,以及焦點要求離開AndroidView。(Ia03c3、b/369256395、b/378570682、b/376142752)
- 將 FocusEnterExitScope.cancelFocus()變更為cancelFocusChange()(I89959)
- 您現在可以使用 RectInfo.calculateOcclusions()計算可組合的遮蔽效果。
- 在 DelegatableNode上新增擴充功能函式,用於註冊全域版面配置變更的監聽器。(I68b59)
修正錯誤
- 使用 ComposeContentTestRule.setContent時,做為可組合項主機的活動現在會使用Theme.Material.Light.NoActionBar主題,避免在以 SDK 35 為目標時,ActionBar與測試內容重疊。如要停用這項行為,您可以移除ui-test-manifest的依附元件,並在測試應用程式的 AndroidManifest.xml 中為ComponentActivity新增活動項目,並選擇所需的主題。(I7ae1b、b/383368165)
- 現在,如果資源字型的變化版本設定相同,系統會避免過度快取,導致套用錯誤的變化版本設定。(If3dff、b/372044241)
- AnnotatedString.fromHtml現在支援- <ul>/<li>標記。(I7c2fe、b/299662276、b/139326648)
外部貢獻
- 新增了 Clipboard 介面和對應的組合本機。(I80809)
1.8.0-alpha07 版
2024 年 12 月 11 日
發布 androidx.compose.ui:ui-*:1.8.0-alpha07。1.8.0-alpha07 版包含這些修訂項目。
API 變更
- 為工具公開 LayoutNode的擁有者。(I26f7f)
- 具有 LocalAutofillHighlightColor組合本機,使用 Color 型別。(I0e05b)
- 將已淘汰的 UrlAnnotation及其方法標示為實驗性質。(Ic0021)
修正錯誤
- 修正在 BasicText或 Text 可組合項中使用LinkAnnotation時發生的IndexOutOfBoundsException當機問題 (be7605、b/374115892)
- 修正問題:填入文字的自訂形狀欄位不會剪裁指標線。(I4f87f、b/380704151)
- 修正長截圖缺少背景的問題。(I4d57a)
- 這個程式庫現在使用 JSpecify 空值註解,這些註解屬於型別用途。Kotlin 開發人員應使用下列編譯器引數,強制執行正確用法:-Xjspecify-annotations=strict(這是 Kotlin 編譯器 2.1.0 版的預設值)。(Idfef8、b/326456246)
- 在 Android Q 以上版本上執行時,更新 Compose 對廣色域和 HDR 顏色的支援。(Icd8be、b/379135036)
- 如果資源字型無法載入,現在會自動改用預設字型,而不是像先前一樣在測量時擲回例外狀況。(Ib6a49)
- 修正 AndroidView分離並附加時焦點遺失的問題。(I53446)
- 接受超出界線的版面配置動作 requestFocus()。(Ia8461)
外部貢獻
- 在 UI 中新增 BringIntoViewResponderModifierNode,提供實作「帶入檢視畫面」功能的新方法,並允許在平台層級實作。(Ia6dd8)
1.8.0-alpha06 版
2024 年 11 月 13 日
發布 androidx.compose.ui:ui-*:1.8.0-alpha06。1.8.0-alpha06 版包含這些修訂項目。
API 變更
- 新增 stylusHoverIcon修飾符。(Iff20a、b/331289114)
- 將自動填入管理工具變更為介面。(I84914、b/376080755)
- 在 focusRequester和FocusTargetModifierNode中新增requestFocus(FocusDirection),可讓您朝特定方向對焦。(I5d9ec、b/245755256)
- FocusProperties.enter和- FocusProperties.exit已由- onEnter和- onExit取代,並使用接收器範圍而非- FocusDirection參數。(I6e667)
- 在文字工具列中新增自動填入支援功能。(Ie6a4c)
- Modifier.focusRestorer()(I99c03) 的 API 異動:- 參數名稱已變更為「fallback」
- 參數現在是 FocusRequester,而非 lambda
- 參數現在為非 NULL,預設值為 Default
 
- 從自動填入管理員介面中移除 @Experimental註解。這項功能仍在開發中,目標是納入這個版本,但我們不想導入 @Experimental API (Id8398)
- 如果 Vibrator API 指出支援觸覺回饋,LocalHapticFeedback現在會提供預設的HapticFeedback實作方式。下列項目已新增至HapticFeedbackType-Confirm、ContextClick、GestureEnd、GestureThresholdActivate、Reject、SegmentFrequentTick、SegmentTick、ToggleOn、ToggleOff、VirtualKey。現在,當提供長按點擊處理常式時,Wear Compose 長按點擊元件 (例如Button、IconButton、TextButton和Card) 會執行LONG_PRESS觸覺回饋。(I5083d)
- 移除 OverscrollConfiguration和LocalOverscrollConfiguration,並新增rememberPlatformOverscrollFactory,以建立預設過度捲動實作的例項 / 自訂參數。如要停用過度捲動,請使用LocalOverscrollFactory provides null,而非LocalOverscrollConfiguration provides null。如要變更發光顏色 / 邊框間距,請使用LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding),而非LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)。(Ie71f9、b/255554340、b/234451516)
- 移除實驗性 GlobalAssertionsAPI。這個屬性的用途是執行無障礙檢查,請改用enableAccessibilityChecks()。(I59322)
1.8.0-alpha05 版
2024 年 10 月 30 日
發布 androidx.compose.ui:ui-*:1.8.0-alpha05。1.8.0-alpha05 版包含這些修訂項目。
新功能
本次發布版本會透過功能標記公開自動填入功能。我們正在努力提升效能,並希望在 API 推出初期收集意見回饋。我們預計會根據意見回饋,在穩定版發布前調整 API。
- 如要啟用自動填入功能,請在 onCreate中將ComposeUiFlags.isSemanticAutofillEnabled設為 true,並使用最新的 Compose 快照。
- 這個版本的自動填入功能支援手動儲存憑證、透過「建議高強度密碼」儲存憑證,以及透過導覽儲存憑證。此外,當可自動填入的欄位收到焦點,或透過文字元件的文字工具列觸發自動填入功能時,系統也會支援填入作業。自動填入完成後,系統會醒目顯示該元件。
API 變更
- 修改自動填入介面,遵循 expect/actual結構。(I22dce)
- 導入 CompositionLocal,可用於修改自動填入成功填寫時的醒目顯示色調。(I32092)
- 新增 Modifier.onRectChangedAPI,這個 API 可讓使用者訂閱LayoutNode的根/視窗/畫面相對位置和大小。這個 API 可解決現有onGloballyPositioned修飾符的許多用途,但負擔較小,且 API 附有設施,可根據用途需求延遲和限制回呼。(Id28c7、b/372765423、b/372757007、b/372994338)
- 擴充自動填入管理工具,加入 commit()和cancel()API,協助使用者儲存新輸入的憑證。(I2da00)
- 推出全新 AutofillManager介面,可用於微調使用者的自動填入流程,以及啟用新版自動填入功能的isSemanticAutofillEnabled標記。(I9d484)
- 新增 Modifier.onRectChangedAPI,這個 API 可讓使用者訂閱LayoutNode的根/視窗/畫面相對位置和大小。這個 API 可解決現有onGloballyPositioned修飾符的許多用途,但負擔較小,且 API 附有設施,可根據用途需求延遲和限制回呼。(I3c8fa)
- 新增語意屬性和資料類型,以擴充自動填入支援。(I52c7d)
- AnnotatedString建構工具中的所有方法現在都已非實驗性質 (Ia89c8、b/261561823)
修正錯誤
- 嵌入 Compose 的檢視區塊現在可以接收旋轉事件 (如果已聚焦) (I4d53a、b/320510084)
- 修正了各種資源類型無法在設定變更時更新的問題 (Ia9b99、b/352336694)
- 修正問題:在某些舊型 Sony 裝置上使用 POBox 日文鍵盤時,TextField無法正常運作。(Ia9b99、b/373743376)
- 修正對話方塊顯示在畫面底部而非置中的問題 (Ia2ec、b/373093006)
- 如果目標 API 層級為 35 以上,對話方塊就不會再強制將 decorFitsSystemWindows設為 false。(Ibc94、b/364492593)
- 修正在視窗之間移動圖層 (例如對話方塊和主要內容) 時發生的當機問題 (I675ba、b/330955281)
1.8.0-alpha04 版
2024 年 10 月 16 日
發布 androidx.compose.ui:ui-*:1.8.0-alpha04。1.8.0-alpha04 版包含這些修訂項目。
API 變更
- 新增 DelegatableNode#onDensityChange和DelegatableNode#onLayoutDirectionChange回呼,以便在這些項目變更時更新節點狀態 (I04f3e、b/340662451)
- 新增 WindowInfo#containerSize,提供目前視窗的內容容器大小。您可以使用LocalWindowInfo擷取這項資訊。(Idc38c、b/369334429、b/360343819)
- 修正巢狀可捲動項目在持續滑動期間從節點樹狀結構中移除的問題。現在這些節點會取消快速滑動,並正確傳送 onPostFling事件和剩餘速度。我們也推出NewNestedScrollFlingDispatchingEnabled旗標,可控制發生迴歸時的行為。我們會在 Beta 版推出前移除這個標記。(I05c37、b/371168883)
- 推出 PointerInputModifierNode#touchBoundsExpansion,可用於放大單一指標輸入修飾符的觸控界限。(Iccf02、b/335339283)
- 新增 WindowInfo#containerSize,提供目前視窗的內容容器大小。您可以使用LocalWindowInfo擷取這項資訊。(I27767、b/369334429、b/360343819)
- 從 TextFields移除readOnly,即可釘選至穩定基礎版本。(I3aaba)
- Paragraph和- ParagraphIntrinsics現在會採用套用至- AnnotatedString的所有註解清單,先前只會採用- SpanStyles清單 (I12f80)
修正錯誤
- 更新 AnnotatedString中段落的處理方式。先前只能建立不重疊的段落。現在AnnotatedString允許完全重疊的段落合併在一起,以及巢狀段落 (外部段落會根據內部段落的界線分割,內部段落的樣式會與外部段落的樣式合併 (Ic9554)
- 修正 AnnotatedString中因LinkAnnotation長度為零而導致的異常終止問題。(89aac6)
1.8.0-alpha03 版
2024 年 10 月 2 日
發布 androidx.compose.ui:ui-*:1.8.0-alpha03。1.8.0-alpha03 版包含這些修訂項目。
API 變更
- Kotlin 版本更新至 1.9 (I1a14c)
- 推出名為「輪轉介面」的新語意角色,模擬 Pager 中的清單行為,以利無障礙服務使用。(Id354b、b/354109776、b/239672673)
- 將 invisibleToUser()重新命名為hideFromAccessibility。功能維持不變。詳情請參閱說明文件。(Ib43a3)
修正錯誤
- 更新 SensitiveContent修飾符的文件 (Ib0442)
- 修正問題:在某些 Android 版本中,系統會忽略特定通用輪廓剪輯片段,並搭配高程陰影使用
- 修正問題:在特定 Android 版本上指定一般輪廓剪輯時,系統會套用空白剪輯。
- 修正以下例外狀況:IME 在外部 View 上處於啟用狀態,且「下一步」動作用於在 ComposeView上輸入焦點。clearFocus()的行為與 API < 28 的 View 行為一致,其中clearFocus()可能會導致預設 View 成為焦點。
- 修正 LazyList中發生在已卸離節點上的放置問題,方法是將不同版面配置傳遞的子組合管理作業分開。
- 修正問題:當焦點從 TextField切換至EditText或任何其他以 View 為基礎的編輯器時,軟體鍵盤會閃爍。
- 巢狀捲動節點現在會在分離後,正確地調度 onPostFling事件。
- 一般效能提升
1.8.0-alpha02 版
2024 年 9 月 18 日
發布 androidx.compose.ui:ui-*:1.8.0-alpha02。1.8.0-alpha02 版包含這些修訂項目。
API 變更
- TextOverflow.StartEllipsis和- TextOverflow.MiddleEllipsis現已推出,可在單行文字的開頭或中間放置刪節號。(I38913、b/185418980)
修正錯誤
- 修正 Dalog dismissOnClickoutside(39a3d、b/364508685)
- 不要裁剪對話方塊內容的陰影 (e8e2f、b/363027803)
- 修正焦點搜尋在 Compose 和 View 之間移動時的錯誤行為 (58377、b/350534714)
外部貢獻
- AlignmentLines- Map現在接受- VerticalAlignmentLine或- HorizontalAlignmentLine具體型別。(I02912)
- 新的通用 ByteArray.decodeToImageBitmap(): ImageBitmap方法。(I83c21)
1.8.0-alpha01 版
2024 年 9 月 4 日
發布 androidx.compose.ui:ui-*:1.8.0-alpha01。1.8.0-alpha01 版包含這些修訂項目。
1.7 版
1.7.8 版
2025 年 2 月 12 日
發布 androidx.compose.ui:ui-*:1.7.8。1.7.8 版包含這些修訂項目。
1.7.7 版
2025 年 1 月 29 日
發布 androidx.compose.ui:ui-*:1.7.7。1.7.7 版包含這些修訂項目。
修正錯誤
- 修正將 AnnotatedString傳遞至 Text 可組合函式時發生的IndexOutOfBoundsException問題。LinkAnnotation(Ic96d2)
- 修正了在極少數情況下,於 AnnotatedString中使用LinkAnnotation時,測試發生逾時的問題。(I04a03)
1.7.6 版
2024 年 12 月 11 日
發布 androidx.compose.ui:ui-*:1.7.6。1.7.6 版包含這些修訂項目。
修正錯誤
- 先前,每當焦點系統有待處理的失效項目時,我們遇到重要事件就會擲回錯誤。現在會改為記錄錯誤 (I7ea0、b/346370327)。
- 從 SemanticsPropertyReceiver.invisibleToUser()中移除實驗性註解。這項功能將在 1.8 版中淘汰,並由SemanticsPropertyReceiver.hideFromAccessibility()取代。(I448f0、b/376479686)
- 修正問題:在某些舊型 Sony 裝置上使用 POBox 日文鍵盤時,TextField無法正常運作。(I94e0e、b/373743376)
- 修正無障礙問題:TalkBack不會播報BasicText的 inlineContent。(I67bcb、b/376479686)
1.7.5 版
2024 年 10 月 30 日
發布 androidx.compose.ui:ui-*:1.7.5。1.7.5 版包含這些修訂項目。
修正錯誤
- 修正以自訂輪廓呈現時,高度和剪裁無法正確算繪的問題。
- 修正零寬度 LinkAnnotation導致的文字當機問題。(Ic1e2e)
- 修正按鈕以可點擊的 Text 可組合函式建構時,Talkback中的公告。(I1f588)
1.7.4 版
2024 年 10 月 16 日
發布 androidx.compose.ui:ui-*:1.7.4。1.7.4 版包含這些修訂項目。
1.7.3 版
2024 年 10 月 2 日
發布 androidx.compose.ui:ui-*:1.7.3。1.7.3 版包含這些修訂項目。
修正錯誤
- 修正問題:在特定 Android 版本中,指定一般輪廓剪輯會導致剪輯邊界空白。
- 修正以下例外狀況:IME 在外部 View 上處於啟用狀態,且「下一步」動作用於在 ComposeView上輸入焦點。clearFocus()的行為與 API < 28 的 View 行為一致,其中clearFocus()可能會導致預設 View 成為焦點。
- 修正了用於預先失效的 placeOrder錯誤問題,因此修正了預先放置遭略過的極端情況。
1.7.2 版
2024 年 9 月 18 日
發布 androidx.compose.ui:ui-*:1.7.2。1.7.2 版包含這些修訂項目。
修正錯誤
- 移除詳細追蹤功能,提升無障礙節點資訊和語意事件的效能。(I89156、b/362530618)
- 如果傳遞的測量大小異常大,ComposeView不會再異常終止 (da5db、b/347036173)
- 修正無障礙螢幕閱讀器問題,現在系統會播報按鈕上的 LiveRegion。(f66fa7、b/348590026)
1.7.1 版
2024 年 9 月 10 日
- Android 構件沒有任何變更。已移除 -desktop項構件,並新增-jvmStubs和-linuxx64Stubs項構件。這些目標都不會使用,只是用來輔助 Jetbrains Compose 的預留位置。
1.7.0 版
2024 年 9 月 4 日
發布 androidx.compose.ui:ui-*:1.7.0。
自 1.6.0 版以來的重要變更
如要瞭解 1.7.0 版的重要變更,請參閱這篇網誌文章。
1.7.0-rc01 版
2024 年 8 月 21 日
發布 androidx.compose.ui:ui-*:1.7.0-rc01。1.7.0-rc01 版包含這些修訂項目。
重大異動
- ui:ui 模組現在會強制要求 foundation:foundation 的最低版本為 1.7.0-rc01 以上。這是為了修正 1.7.0-alpha01 早期發生的 NestedScrollSource變更,導致 ui 和 foundation 之間出現行為不相容的問題。
1.7.0-beta07 版
2024 年 8 月 7 日
發布 androidx.compose.ui:ui-*:1.7.0-beta07。1.7.0-beta07 版包含這些修訂項目。
修正錯誤
- 現在,如果對唯讀 TextFields呼叫文字輸入相關的SemanticsNodeInteraction函式performTextReplacement、performTextInput和performTextClearance,系統就會擲回斷言錯誤。(I4ae8f)
1.7.0-beta06 版
2024 年 7 月 24 日
發布 androidx.compose.ui:ui-*:1.7.0-beta06。1.7.0-beta06 版包含這些修訂項目。
1.7.0-beta05 版
2024 年 7 月 10 日
發布 androidx.compose.ui:ui-*:1.7.0-beta05。1.7.0-beta05 版包含這些修訂項目。
修正錯誤
- 修正錯誤:變更軟體鍵盤後,TextField會拒絕新鍵盤的輸入,直到失去焦點並重新取得焦點為止。
- 修正問題:使用 SurfaceView內容算繪時,嘗試保留圖層內容會導致非預期的副作用。
1.7.0-beta04 版
2024 年 6 月 26 日
發布 androidx.compose.ui:ui-*:1.7.0-beta04。1.7.0-beta04 版包含這些修訂項目。
修正錯誤
- 避免在測量極長的文字行 (例如 1 萬個字元) 時發生當機情形 (8157ab)
- 停用 GraphicsLayerAPI 的軟體轉譯支援功能。(35ddd8)
- 修正圖層持續性邏輯中的異常終止問題。(70b13e)
- 由於重複使用圖層物件最佳化功能會導致算繪問題,因此已還原。(70b13e)
1.7.0-beta03 版
2024 年 6 月 12 日
發布 androidx.compose.ui:ui-*:1.7.0-beta03。1.7.0-beta03 版包含這些修訂項目。
1.7.0-beta02 版
2024 年 5 月 29 日
發布 androidx.compose.ui:ui-*:1.7.0-beta02。1.7.0-beta02 版包含這些修訂項目。
API 變更
- 已將 SemanticsProperties.Editable重新命名為IsEditable,並將SemanticsPropertyReceiver.editable變更為 valisEditable。這個屬性現在是布林值,且一律由文字欄位指定。(I8acd8)
- 重新命名無障礙基準參數。(I3d440)
- 更新了連結樣式 API:TextLinkStyles現在是LinkAnnotation建構函式和AnnotatedString.fromHtml方法的一部分 (I90b2b)。也從素材中移除了TextDefaults(I5477b)
修正錯誤
- LayoutCoordinates.introducesFrameOfReference已重新命名為- LayoutCoordinates.introducesMotionFrameOfReference,以更能反映其用途。已重新命名相關函式,根據該旗標計算座標。(I3a330)
1.7.0-beta01 版
2024 年 5 月 14 日
發布 androidx.compose.ui:ui-*:1.7.0-beta01。1.7.0-beta01 版包含這些修訂項目。
API 變更
- 已將 performCustomAccessibilityActionLabelled重新命名為performCustomAccessibilityActionWithLabel,並將performCustomAccessibilityActionWhere重新命名為performCustomAccessibilityActionWithLabelMatching。(I5387f)
- AnnotatedString.hasEqualsAnnotations現在是- hasEqualAnnotations(I685c0)
- 更新 API,以便在文字中取得 Material 主題連結。具體來說,我們從 TextDefaults中移除了建構主題式LinkAnnotations的方法,以及剖析含有主題式連結的 HTML。而是新增TextLinkStyles類別,可將連結樣式設為 Text 可組合項的參數。(I31b93)
修正錯誤
- 修正在事件期間動態新增指標輸入修飾符時的其他用途 63e1504
1.7.0-alpha08 版
2024 年 5 月 1 日
發布 androidx.compose.ui:ui-*:1.7.0-alpha08。1.7.0-alpha08 版包含這些修訂項目。
API 變更
- 新增可變動形狀實作的支援。Shape#createOutline現在會在圖形層內觀察,因此讀取狀態值時,如果狀態變更,就會導致失效,進而實現效能更高的形狀動畫。(Id1629、b/326070216)
- isPositionedByParentWithDirectManipulation已重新命名為- introducesFrameOfReference。請注意,現在的效果相反,也就是說,預設情況下,大多數- LayoutCoordinates都會導入參照影格,只有在直接操控下,屬性才會為 false。如要查詢位置,且只查詢會引入參照架構的位置,請使用- positionInLocalFrameOfReference(...)。或從- LookaheadScope- positionInLocalLookaheadFrameOfReference。(Ifc5f7)
- LookaheadScopeAPI 已成為穩定版 (I21507)
- 根據 API 委員會的意見回饋,變更 getScrollViewportLength的動作 lambda。(Ibc74a)
- 更新 GraphicsLayer外框 API,改用浮點參數而非整數。移除UnsetOffset/UnsetSize IntSize標記值,改用浮點型 Offset 和 Size 內嵌類別中已有的 Unspecified 常數 (I2fb03、b/333863462)
- 在測試期間插入滑鼠輸入內容時,MouseInjectionScope.click()、MouseInjectionScope.doubleClick()、MouseInjectionScope.tripleClick()、MouseInjectionScope.longClick()現在會接受button: MouseButton參數,使其更普遍適用。所有方法的預設值都是MouseButton.Primary。(I31a23、b/190493367、b/261439695)
- 已將 LinkInteractionListener內的onClicked重新命名為onClick。(Iaa35c)
- 將 TextInclusionStrategy.isInside重新命名為isIncluded。將Paragraph/MultiParagraph#getRangeForRect()傳回型別設為不可為空值。(I51f26)
修正錯誤
- 修正使用 reverseScrolling=true擷取長截圖時,捲動容器的問題。(I7c59c)
外部貢獻
- 新增支援功能,可在巢狀 LazyLists中預先擷取項目 (例如,可轉譯巢狀LazyRows的LazyColumn)。這項變更預期可減少這些LazyLists在捲動期間的影格掉格情形。實作預設會預先擷取前 2 個巢狀項目,但這項行為可透過新的LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)和LazyListPrefetchStrategy#onNestedPrefetchAPI 控制。(I51952)
1.7.0-alpha07 版
2024 年 4 月 17 日
發布 androidx.compose.ui:ui-*:1.7.0-alpha07。1.7.0-alpha07 版包含這些修訂項目。
API 變更
- ClickableText已標示為已淘汰。如要在文字中加入連結,請建立- AnnotatedString,其中包含與連結對應的- LinkAnnotation,然後將這個- AnnotatedString傳遞至 Text 可組合函式。(I34d4b、b/323346994)
- 推出手寫手勢專用的 ViewConfiguration.HandwritingGestureLineMargin。支援BasicTextField的JoinOrSplit手勢 (Ie6e13、b/325660505)
- FocusProperties.enter及- FocusProperties.exit不再是實驗版,- FocusDirection.Enter和- FocusDirection.Exit不再是實驗版,- FocusRequester.Cancel不再是實驗性質 (I461a1、b/261564106)
- 查詢版面配置座標時,您現在可以使用 excludeDirectManipulationOffset引數,排除父項版面配置使用Placeable.PlacementScope.withDirectManipulationPlacement放置子項時設定的位移。同樣地,如果 Layout 經常變更子項的位置,現在可能會使用withDirectManipulationPlacement(例如預設實作的 Scroll) 放置子項。這有助於approachLayout根據動畫更直觀地決定要為哪些位移套用動畫,以及在決定動畫方法時要直接套用哪些位移。(I60ec7)
- 長截圖的功能旗標已移除。(I28648、b/329128246)
- LazyColumn現在會正確顯示長截圖中的固定標題。(I8d239、b/329296635)
- NestedScroll來源 Drag 和 Fling 將由- UserInput和- SideEffect取代,以因應這些來源的擴充定義,現在包括動畫 (Side Effect) 和滑鼠滾輪與鍵盤 (- UserInput)。(I40579)
- ApproachLayoutModifierNode和- Modifier.approachLayout現已轉為穩定版,並推出新的- isMeasurementApproachInProgress()和- isPlacementApproachInProgress(),分別取代舊版- isMeasurementApproachComplete()和- isPlacementApproachComplete()。
- 移除了已淘汰的 intermediateLayout修飾符。(I3e91c)
- 將 GraphicsLayer#buildLayer重新命名為 record,以反映 Displaylist 支援的 API (例如RenderNode和 Picture) 的 begin/endRecording 方法。
- 已更新 rememberGraphicsLayer,可運用rememberObserver。(I312c1、b/288494724、b/330758155)
- UrlAnnotation已淘汰,請改用- LinkAnnotation.Url。如果您使用 Material 主題設定,請使用- TextDefaults物件建立註解,並套用 Material 主題設定 (I8d180、b/323346545)
- 除了正常樣式、懸停和焦點樣式外,文字連結現在也提供按下狀態樣式選項 (I5f864、b/139312671)
- String.parseAsHtml已重新命名為- AnnotatedString.Companion.fromHtml。(I43dcd)
- 在 parseAsHtml方法中新增樣式引數 (linkStyle、focusedLinkStyle、hoveredLinkStyle) 和連結互動事件監聽器。使用<a>標記剖析含有 HTML 標記的字串時,這個方法會為每個這類標記建構LinkAnnotation.Url,並將樣式物件和連結互動事件監聽器傳遞至每個註解。(I7c977)
- LinkAnnotation現在會採用以狀態為準的樣式引數和- LinkInteractionListener。將這項註解新增至- AnnotatedString即可取得超連結。傳遞- focusedState和/或- hoveredState,即可定義連結在焦點和/或懸停時的視覺- configuration。(I81ce4、b/139312671)
- ImeOptions.hintLocales不再可為空值。如要傳遞空白的語言代碼清單,請使用- LocaleList.Empty。(Ic5bc4)
修正錯誤
- 妥善處理錯誤/損毀的歷來輸入事件資料 (忽略錯誤的位移資料)。
- 修正在有效指標輸入事件串流期間,於另一個指標輸入修飾符之前動態新增指標輸入修飾符時,發生非預期指標事件的問題 (例如在懸停進入和懸停結束之間 [滑鼠/觸控筆])。
1.7.0-alpha06 版
2024 年 4 月 3 日
發布 androidx.compose.ui:ui-*:1.7.0-alpha06。1.7.0-alpha06 版包含這些修訂項目。
新功能
- 新增樣式字串的 parseAsHtml方法:可將標記 HTML 標記的字串轉換為AnnotatedString。請注意,系統目前僅支援部分標記,例如無法顯示項目符號清單。(I84d3d、I30626、b/139326648)
- 使用官方 Android API (ScrollCaptureCallback),在 Compose 捲動容器中實作實驗性長截圖支援功能。這項功能仍在實驗階段,目前可能無法正確處理所有情況。因此目前預設為停用。如要選擇啟用這項功能,請將ComposeFeatureFlag_LongScreenshotsEnabled標記設為 true。(I2b055、b/329296471)
API 變更
- fun ClipEntry.getMetadata()已變更為- val ClipEntry.clipMetadata。(I50155)
- 移除了 ClipboardManager.getClipMetadata和ClipboardManager.hasClip函式。請使用clipEntry.getMetadata()讀取目前剪輯片段項目的中繼資料。此外,請檢查ClipboardManager.getClip的結果是否為空值,瞭解剪貼簿是否有目前的剪輯片段。(I50498)
- 您現在可以將 GraphicsLayer物件傳遞至placeable.placeWithLayer()函式 (I1b22f)
- ClipboardManager.setClip現在可接受空值,以便清除剪貼簿。(I7d2e9)
- 新增資源 ID,協助隱藏在建構工具中做為實作詳細資料的 Views (I99531)
- 新增 GraphicsLayer#toImageBitmap暫停方法,支援將點陣圖內容算繪至GraphicsLayer。這是 API 級別 22 以上 (含) 的硬體加速算繪作業,支援超過 99% 的 Android 裝置。在 Android API 級別 21 中,這會回溯至軟體算繪。(I9e114)
- 將 Android RectF轉換為ComposeRect的輔助方法 (I39925、b/325660505)
- 所有 KeyboardOptions參數現在預設都有未指定的值。新增KeyboardOptions.merge方法。
- 已將 KeyboardOptions.autoCorrect重新命名為autoCorrectEnabled,並將該值設為可為空值,空值表示未指定任何值。(Ia8ba0、b/295951492)
- BasicTextField(state)變數和- BasicSecureTextField現在會使用- KeyboardActionHandler,而不是- KeyboardActions來處理軟體鍵盤執行的動作。(I58dda)
1.7.0-alpha05 版
March 20, 2024
發布 androidx.compose.ui:ui-*:1.7.0-alpha05。1.7.0-alpha05 版包含這些修訂項目。
新功能
- 推出新的 GraphicsLayerAPI,可在顯示清單中記錄繪圖指令,以及影響顯示清單算繪的其他屬性。這項功能提供隔離界線,可將複雜場景劃分為較小的部分,這些部分可個別更新,不必重新建立整個場景。對GraphicsLayer進行的轉換作業不必重新記錄顯示清單。與Modifier.graphicsLayer不同,GraphicsLayer可在其他位置算繪可組合函式內容,適用於動畫用途,因為內容預期會在不同場景中算繪。
API 變更
- GraphicsLayer.draw(Canvas)不再是公開 API。請改用- DrawScope.drawLayer(GraphicsLayer)擴充功能函式繪製圖層。(I7a7c0)
- 將 restrictedConstraints()分割成兩個方法:fitPrioritizingWidth()和fitPrioritizingHeight()(I6d7fd)
- 導入 Android L 用途的 HardwareCanvas虛設常式 (I1c3b5、b/288494724)
- 更新 Compose 架構,以公開 GraphicsContext組合項本機,同時更新擁有者、DelegateableNode和drawWithCache修飾符實作,以公開GraphicsContext的存取權,供範圍存取使用,當修飾符遭到終止時,系統會自動清除GraphicsLayer執行個體。(I64a2f、b/288494724)
- 導入 InterceptPlatformTextInput,協助撰寫低層級 IME 相關測試和其他低層級 IME 用途。PlatformTextInputTestOverride已淘汰。(I862ed、b/322680547)
- 新增了 GraphicsLayer.setOutline(Outline)擴充功能函式。(Ib81f4)
- 導入 GraphicsContext函式建構函式,建立工廠來建立GraphicsLayer例項 (Ib98d6、b/288494724)
- 公開 GraphicsLayerAPI,讓開發人員能彈性擷取繪圖指令,用於其他地方的繪圖作業,並對最終結果套用不同的視覺效果。(I80245、b/288494724)
- 介紹 Paragraph#getRangeForRect,這個函式會傳回指定矩形區域涵蓋的文字範圍。(Iee516、b/325660505)
- 移除了 BasicText的實驗性覆寫,並使用onLinkClicked引數。日後將推出支援超連結的替代 API。(I107d5)
修正錯誤
- 新增 GraphicsLayer預期/實際 API 定義,支援擷取及重新播放繪圖指令,並提供選用的合成視覺效果和轉換。導入GraphicsContext介面,其中包含圖像依附元件,包括建立及管理GraphicsLayer執行個體。(I4a8d6、b/288494724)
- 修正互通性問題:焦點會卡在其他檢視區塊中嵌入的 ComposeView內,無法進行一維焦點搜尋。(I08fd4)
外部貢獻
- LocalLifecycleOwner已從 Compose UI 移至- lifecycle-runtime-compose,因此您可以在 Compose UI 外部使用以 Compose 為基礎的輔助 API。感謝 Jake Wharton 的貢獻。(I6c41b、b/328263448)
- 在所有以偏差為準的對齊子類型中,持續公開偏差浮動屬性。(I69f0f、b/328088992)
1.7.0-alpha04 版
2024 年 3 月 6 日
發布 androidx.compose.ui:ui-*:1.7.0-alpha04。1.7.0-alpha04 版包含這些修訂項目。
API 變更
- 在 Android U 以上版本的裝置上,支援 BasicTextField2 的手寫筆手寫功能。(I002e4)
- 在這個 CL 中,我們新增了 GetScrollViewportLength語意動作,因此可以將 Compose 中捲動的元件相關資訊傳送至無障礙系統。這個 CL 也會在 Foundation 可捲動清單中套用上述屬性。(Ic5fa2)
- FocusRequester.createRefs現在是穩定版 (I4d92c、b/261436820)
- 推出 DelegatableNode.requireView(),讓修飾符節點可取得目前的 AndroidView,而不需讀取本機組合。(I40768)
- 新 API Path.reverse()可反轉路徑方向 (I36348)
- 新增 hintLocales至KeyboardOptions,為TextFields提供提示 IME 特定語言代碼的功能,預設偏好語言。
- 從 Locale顯示platformLocale屬性,傳回基礎平台物件,例如java.util.Locale。(I921c6)
1.7.0-alpha03 版
2024 年 2 月 21 日
發布 androidx.compose.ui:ui-*:1.7.0-alpha03。1.7.0-alpha03 版包含此連結所列的修訂項目。
API 變更
- 隆重推出 ContextualFlowRow和強化版FlowRow/Column,支援 MaxLines 和溢位。我們很高興宣布實驗性FlowRow和FlowColumn推出強化功能,現在支援 maxLines 和溢位,同時推出ContextualFlowRow和ContextualFlowColumn。這項更新旨在提供最佳效能的元件,其中ContextualFlow*非常適合大量項目,可使用小型maxLines設定和動態 +N 查看更多按鈕,而FlowRow和FlowColumn則非常適合少量項目 (少於 100 個項目)。重要事項:如要在FlowRow或FlowColumn中維持現有行為,無論項目是否符合交叉軸上限,都會組成所有項目,請在初始化期間將overflow設為FlowRowOverflow.Visible或FlowColumnOverflow.Visible。如要查看這些新功能的實際應用情形,請參閱ContextualFlowRowSample和FlowRowSample。(Ib9135、b/293577082)
- 新增 maxTextLength語意屬性,該屬性應在篩選允許字元數上限的文字欄位中設定。(I24d9f、b/170648072)
- Modifier.inspectable包裝函式已淘汰。這個 API 會建立過多無效的修飾符,因此我們不建議使用。如果開發人員想向工具公開修飾符屬性,建議在- ModifierNodeElement上實作- inspectableProperties()方法。(Ib3236)
- PopupProperties的新建構函式,可完全控管- WindowManager.LayoutParams旗標。(Ibb33e、b/312485503)
- 導入 DelegatableNode.requireLayoutCoordinates(),可取得Modifier.Node的目前LayoutCoordinates,不必覆寫onPlaced並自行將座標儲存在屬性中。(Ia8657)
- 導入 DelegatableNode.currentLayoutCoordinates,可取得Modifier.Node的目前LayoutCoordinates,不必覆寫onPlaced並自行將座標儲存在屬性中。(Iaebaa)
- BasicTextField2和- androidx.compose.foundation.text2套件下的相關 API 已移至- androidx.compose.foundation.text。(I9f635)
- 新增 ApproachLayoutModifierNodeAPI,支援在明確的修飾符節點中建立自訂方法邏輯。此外,我們也新增了實驗性DeferredTargetAnimationAPI,適用於在例項化時目標不明的動畫。(I60745)
- 新增 PathAPI,可查詢路徑的方向,並從Path擷取輪廓。(I63d04)
- 新增 PathHitTest和Path.contains(Offset),可檢查Path是否包含特定點。(I3b218)
- TextLayoutResult現在會公開- getLineBaseline(lineIndex)方法。除了現有的便利屬性- firstBaseline和- lastBaseline之外,這項功能還可讀取任意文字行的基準線。(Ide4e8、b/237428541)
- 新增方法,僅比較兩個 AnnotatedStrings的註解。(I32659)
修正錯誤
- 修正 SemanticsPropertyReceiver.performImeAction和SemanticsActions.PerformImeAction的回溯相容性問題。(Id0528、b/322269946)
1.7.0-alpha02 版
2024 年 2 月 7 日
發布 androidx.compose.ui:ui-*:1.7.0-alpha02。1.7.0-alpha02 版包含以下修訂項目。
API 變更
- 修正與 SemanticsPropertyReceiver.performImeAction的二進位檔相容性問題。(I65865、b/322269946)
- 採用 usePlatformDefaultWidth參數的PopupProperties建構函式不再是實驗性質。(I8f8d2)
- 新增 ComposeTestRule.waitUntil的多載,可接受條件的字串說明,並納入逾時訊息。(I9413e)
- 新的語意 API unset(),可移除在相同修飾符鏈中新增的語意屬性。新增語意屬性isOpaque。(I8c583、b/317966058、b/246056649)
- 已從 PointerInputChange公用 API 的複製方法中移除originalEventPosition。(I7bead)
修正錯誤
- 修正無障礙功能錯誤:選取非分頁和非圓形按鈕時,可點選這些項目。(I2181c)
- VelocityTracker現在預設會修正新增點的問題。如有任何問題,您仍可將- VelocityTrackerAddPointsFix設為 false 來停用修正功能。(Ib3877、b/269487059)
- 修正 TextStyle和ParagraphStyle的回溯二進位檔不相容問題。(I179f0、b/320819734)
外部貢獻
1.7.0-alpha01 版
2024 年 1 月 24 日
發布 androidx.compose.ui:ui-*:1.7.0-alpha01。1.7.0-alpha01 版包含此連結所列的修訂項目。
API 變更
- 擴充 ClipboardManager,新增ClipEntry和ClipMetadata,支援任意內容 (例如圖片)。
- 在 ui-test中新增DeviceConfigurationOverrideAPI,允許在本機覆寫受測內容的行為,例如指定可用大小、地區設定、版面配置方向、字型比例或主題。
1.6 版本
1.6.8 版
2024 年 6 月 12 日
發布 androidx.compose.ui:ui-*:1.6.8。1.6.8 版包含這些修訂項目。
修正錯誤
- 修正字型縮放比例低於最低定義表格時,字型縮放比例不一致的問題。在本例中,我們現在會根據線性 1 倍比例和最低定義的表格進行內插,因此字型大小會隨著比例增加而單調遞增。(Icbae3)
1.6.7 版
2024 年 5 月 1 日
發布 androidx.compose.ui:ui-*:1.6.7。1.6.7 版包含這些修訂項目。
1.6.6 版
2024 年 4 月 17 日
發布 androidx.compose.ui:ui-*:1.6.6。1.6.6 版包含這些修訂項目。
修正錯誤
- 修正極少數的 BasicTextField異常終止問題。
1.6.5 版
2024 年 4 月 3 日
發布 androidx.compose.ui:ui-*:1.6.5。1.6.5 版包含這些修訂項目。
1.6.4 版
March 20, 2024
發布 androidx.compose.ui:ui-*:1.6.4。1.6.4 版包含這些修訂項目。
1.6.3 版
2024 年 3 月 6 日
發布 androidx.compose.ui:ui-*:1.6.3。1.6.3 版包含這些修訂項目。
1.6.2 版
2024 年 2 月 21 日
發布 androidx.compose.ui:ui-*:1.6.2。1.6.2 版包含以下修訂項目。
1.6.1 版
2024 年 2 月 7 日發布 androidx.compose.ui:ui-*:1.6.1。1.6.1 版包含此連結所列的修訂項目。
修正錯誤
- 修正 SemanticsPropertyReceiver.performImeAction和SemanticsActions.PerformImeAction的回溯相容性問題。(Ie0bb2、b/322269946)
- 版面配置現在會在測量時發出錯誤,因為其中一個版面配置傳回異常大的尺寸。如果測量作業直接使用最大限制,而未檢查 Constraints.Infinity,通常就會發生這類錯誤。這項檢查可協助開發人員找出版面配置尺寸錯誤的問題,而不是找出含有錯誤的版面配置。(I339a9)
1.6.0 版
2024 年 1 月 24 日
發布 androidx.compose.ui:ui-*:1.6.0。1.6.0 版包含以下修訂項目。
1.6.0-rc01 版
2024 年 1 月 10 日
發布 androidx.compose.ui:ui-*:1.6.0-rc01。1.6.0-rc01 版包含以下修訂項目。
修正錯誤
- 最佳化向量圖形實作方式,盡量減少額外重組作業,進而提升效能。
1.6.0-beta03 版
2023 年 12 月 13 日
發布 androidx.compose.ui:ui-*:1.6.0-beta03。1.6.0-beta03 版包含以下修訂項目。
新功能
- 現在可以分離 LayoutCoordinates,不必分離節點。在 Compose 版面配置檢查器中防範這類情況 (If693)
修正錯誤
- PlatformImeOptions現在是具體類別,而不是介面。(If40a4)
- 修正因每次根重新組合時,LocalSoftwareKeyboardController和LocalTextInputService都會提供新值,而導致的額外下游重新組合。(I42190、b/310510985)
1.6.0-beta02 版
2023 年 11 月 29 日
發布 androidx.compose.ui:ui-*:1.6.0-beta02。1.6.0-beta02 版包含以下修訂項目。
1.6.0-beta01 版
2023 年 11 月 15 日
發布 androidx.compose.ui:ui-*:1.6.0-beta01。1.6.0-beta01 版包含以下修訂項目。
API 變更
- DragAndDropTarget修飾符現在會明確接收- DragAndDropTarget,並提供 lambda 來選擇加入拖曳工作階段。現在有兩個- DragAndDropModifierNode的工廠函式。一個用於接收轉移內容,另一個用於轉移資料 (I69481)
- 已將 maximumFlingVelocity更新為以 Float 表示。更新說明文件,更清楚說明maximumFlingVelocity統一性。(I8adc7)
- DragAndDropModifierNode工廠中的- onDragAndDropStart已重新命名為- acceptDragAndDropTransfer。- acceptsDragAndDropTransfer已新增至- dragAndDropTarget修飾符,可接受來自拖曳工作階段的項目。如果對拖曳工作階段感興趣,這個 lambda 會傳回可行的- DragAndDropTarget。其他用於處理拖曳事件的 lambda 已由這個函式取代。此外,也新增了- DragAndDropTarget工廠函式,可接收拖曳工作階段的資料 (Iebf3a)
- 已移除 - DragAndDropInfo做為型別- DragAndDropModifierNode.drag,現在會採用- transferData、裝飾大小和拖曳裝飾- DrawScopelambda 的參數- DragAndDropTarget具有特定拖曳事件的方法,而非單一抽象方法- 工廠函式中的 - onDragAndDropEvent已重新命名為- onDragAndDropStart,以便更清楚地傳達所提供的- DragAndDropTarget僅適用於特定拖曳工作階段- DragAndDropModifierNode- 已移除 - DragAndDropEventType(I645b1)
- 「 - PlatformTextInputModifierNode.runTextInputSession」已重新命名為「- establishTextInputSession」。(I03cd0)
- 改善可遍歷節點的 API 名稱,讓名稱更容易理解。(Ia4474) 
- 以 - TextSubstitution取代- OriginalText。(Ifa5a8)
- PlatformTextInputModifierNode.textInputSession已重新命名為- runTextInputSession。(Ie9c6b)
- 系統會將保留下來供日後重複使用的 - SubcomposeLayout子項 (以及以其為基礎的- LazyColumn等版面配置) 視為已停用。我們推出了新的- assertIsDeactivated()測試 API,用於測試這類節點。根據預設,其餘測試 API 會篩除已停用的節點。(I2ef84、b/187188981)
- 移除 - FocusDirection.In和- FocusDirection.Out,改用- FocusDirection.Enter和- FocusDirection.Exit(I2f660)
- Material - SwipeToRevealAPI (適用於資訊卡和晶片) 現在會依據以插槽為基礎的 API (Compose 建議使用) 建立插槽,而非以資料類別為基礎的例項。這項變更會造成中斷,如需如何使用新版 API 的範例,請參閱示範和程式碼範例。(Ia8943)
- FontStyle(int)建構函式已淘汰,請改用- FontStyle.Normal或- FontStyle.Italic。(I66610)
- 已將 - FontScalable介面重新命名為- FontScaling(Ie804a)
修正錯誤
- 如果沒有文字編輯器處於焦點狀態,SoftwareKeyboardController.show()將不再顯示軟體鍵盤。(I2165a、b/301477279)
- 如果按鍵在同一個 Compose 檢視區塊中未收到 Down 事件,系統現在會忽略該按鍵的硬體按鍵 Up 事件。(Ib37b4、b/305518328)
- 在 ArcLine中新增掃描漸層的算繪器支援功能。(I4d5bb)
- 為 PageSize.Fixed實作等號和雜湊碼。(Ie3ede、b/300134276)
- 修正 Window Inset 變更的二進位檔相容性問題 (Iee695)
- 移除 Material3 晶片/按鈕的 Material 核心層,因為微基準測試顯示,移除後效能會更好。(I55555)
- 現在會使用傳遞為 Compose 測試 effectContext的TestDispatcher,建立測試和影格時鐘。(Ia7178)
1.6.0-alpha08 版
2023 年 10 月 18 日
發布 androidx.compose.ui:ui-*:1.6.0-alpha08。1.6.0-alpha08 版包含以下修訂項目。
API 變更
- Modifier.dragAndDrawSource的- onDrawDragShadowlambda 已重新命名為- drawDragDecoration,而- DragAndDropInfo的大小參數已重新命名為- dragDecorationSize。(Id0e30、b/303904810)
- 導入 SemanticsNodeInteraction.isDisplayed()和SemanticsNodeInteraction.isNotDisplayed(),檢查相符節點是否可見,而不需同時進行斷言。(I2c196、b/302100809)
- 為 ParagraphTextStyle的TextAlign、TextDirection、Hyphens和LineBreak欄位導入特殊Unspecified值,以取代null。由於這些類別是內嵌類別,因此將可為空值取代為 Unspecified,可避免原始型別裝箱。TextStyle和段落樣式中的建構函式、getter 和其他方法已更新,可接受上述參數做為非空值型別。(I4197e、b/299490814)
- 新增 GoogleFont多載,從 XML 讀取GoogleFont。(If8f59)
- 將 LoremIpsumPreviewParameterProvider設為開放類別。(I41bf5、b/266918816、b/300116360)
修正錯誤
- FontFamilyResolver現在會針對快取管理協同程式使用- Dispatchers.Main。(Ie8dd9)
- AndroidViewBinding現在會使用- commitNow(而非先前使用的- commit),同步移除因在版面配置中加入- FragmentContainerView而膨脹的- Fragment執行個體 (做為- onRelease的一部分),因此修正了 Live Edit 方法在變更時替換組合的問題。(I58fbf)
1.6.0-alpha07 版
2023 年 10 月 4 日
發布 androidx.compose.ui:ui-*:1.6.0-alpha07。1.6.0-alpha07 版包含此連結所列的修訂項目。
API 變更
- 推出 PlatformTextInputMethodTestOverride,可為自訂文字編輯器編寫測試。(Id159b)
- 新增 dragAndDropSource修飾符,用於啟動拖曳工作階段,以及dragAndDropTarget修飾符,用於接收拖曳工作階段的內容。(Ib7828、b/286038936)
- 新增可避免分配的 ColorList和ColorSet集合。(I744bd)
- 新增 DisableNonLinearFontScalingInCompose暫時性標記,停用非線性字型縮放功能。如需時間清理這些項目,請在測試中設定DisableNonLinearFontScalingInCompose = true。這項標記將在 Compose 1.6.0-beta01 中移除。(Ic9486)
修正錯誤
- 最佳化 XML 向量可繪項目剖析作業。(Ibb015)
1.6.0-alpha06 版
2023 年 9 月 20 日
發布 androidx.compose.ui:ui-*:1.6.0-alpha06。1.6.0-alpha06 版包含以下修訂項目。
API 變更
- 進一步最佳化 Material 圖示。(I3e08d)
- 新增向上/向下遍歷修飾符樹狀結構的功能,可尋找類似節點。(I2d234)
- 已將 onRestoreFailed()回呼新增至focusRestorer()修飾符 (Ie1d43)
- 在各種 Graphics API 中新增 androidx 註解,指定 ColorInt、FloatRange、IntRange、Size等。(Id65c8、b/290950582)
- 將 showSystemUi=true新增至PreviewScreenSizes定義 (Ib61d3)
行為變更
- Compose 現在使用非線性字型縮放功能,提升可讀性和無障礙程度。如果系統設定中的字型縮放比例大於 100%,小型文字會正常放大,但大型文字只會稍微放大。此外,SP 中定義的行高會自動調整,與 100% 比例的預期高度保持比例。詳情請參閱「字型縮放最佳做法」(I11518)。
1.6.0-alpha05 版
2023 年 9 月 6 日
發布 androidx.compose.ui:ui-*:1.6.0-alpha05。1.6.0-alpha05 版包含此連結所列的修訂項目。
API 變更
- 在 AndroidComposeViewAccessibilityDelegateCompat中啟用內容擷取功能。(Ib2969)
- ScrollView和- RecyclerView等 View 元件的 Fling 速度上限為- ViewConfiguration.ScaledMaximumFlingVelocity。Compose 現在包含自己的- maximumFlingVelocity版本,適用於- Draggable。(Ibf974)
- 新增初始架構,支援平台拖曳 API。(If84ce)
- 將 deviceId新增至RotaryScrollEvent(Iba3bf)
- 更新 ui-tooling裝置 API,納入新裝置 (Ib25b4)
1.6.0-alpha04 版本
2023 年 8 月 23 日
發布 androidx.compose.ui:ui-*:1.6.0-alpha04。1.6.0-alpha04 版本包含以下修訂版本。
API 變更
- 新增停用 ReusableComposition的方法,移除觀察項目,但保留節點。呼叫setContent即可再次啟用停用的組合。(Ib7f31)
- 新增 ReusableComposition介面,用於管理子組合的生命週期和重複使用。(I812d1、b/252846775)
- Modifier.focusGroup已升級為穩定版 API。(I7ffa3)
- 在各種 Graphics API 中新增 androidx 註解,指定 ColorInt、FloatRange、IntRange、Size等。(I70487、b/290950582)
- 更新 ColorFilterAPI,提供具體的子類別型別,以利檢查參數。(I5fe29)
- 導入 wear-tooling-preview 程式庫,列出可用於 UI 預覽的有效穿戴式裝置 (Ib036e)
- 建立 FontScalable介面,處理 Density 介面的字型縮放部分。(I2cf3f)
1.6.0-alpha03 版本
2023 年 8 月 9 日
發布 androidx.compose.ui:ui-*:1.6.0-alpha03。1.6.0-alpha03 版包含以下修訂項目。
API 變更
- 新增的「進入/退出」轉場效果可根據進入和退出動畫期間的動畫容器大小,縮放內容。LookaheadScope可組合函式和介面現已穩定。(Ifb2ce)
- 新增了設定 privateImeOptions的支援 (Idb772)
修正錯誤
- 現在,當計算中讀取的狀態變更時,PopupPositionProvider.calculatePosition會自動更新彈出式視窗的位置。(I676a1、b/292257547)
- 修正文字欄位在 readOnly為 true 時顯示鍵盤並可編輯的問題。此外,也修正了當焦點從 true 變更為 false 時,鍵盤不會顯示的問題。readOnly(I34a19、b/246909589)
- 在 UI 測試中擴大應用全域斷言。(I1f90d)
1.6.0-alpha02 版本
2023 年 7 月 26 日
發布 androidx.compose.ui:ui-*:1.6.0-alpha02。1.6.0-alpha02 版包含以下修訂項目。
API 變更
- 新增服務定位器介面,可由組合實作人員實作,允許組合實作將其他組合委派服務查閱作業委派給原始組合。這不應直接呼叫,而是用於在執行階段啟用建立實驗性 API,這些 API 可從 Composer 的包裝版本 (例如 UI 模組) 找到。(I296b9)
- 全面重新設計 PlatformTextInput*API。(I6c93a、b/274661182、b/267235947、b/277380808)
- SoftwareKeyboardController及- LocalSoftwareKeyboardController不再是實驗版,- LocalSoftwareKeyboardController現在也是適當的- CompositionLocal。(I4c364)
- LookaheadLayout和- LookaheadLayoutScope已淘汰一段時間,現在已移除。替代 API 為- LookaheadScope,可與任何 Layout 搭配使用。(I12ac3)
- 新增 SemanticsNodeInteraction.requestFocus,讓您在測試中要求焦點時更方便,也更容易找到。(Ie8722)
- 新增實驗性 API,用於註冊全域斷言,供日後的測試架構使用。(I12d77)
修正錯誤
- AndroidView的- update回呼函式現在會延後到附加檢視區塊時再首次叫用,而不是在套用導入- AndroidView的組合時執行。修正錯誤:如果效果立即變更讀取的狀態,- update回呼就不會失效。(Ie9438、b/291094055)
1.6.0-alpha01 版本
2023 年 6 月 21 日
發布 androidx.compose.ui:ui-*:1.6.0-alpha01。1.6.0-alpha01 版包含此連結所列的修訂項目。
新功能
- 在 LazyList中支援先行。這樣一來,Lookahead 傳遞中的LazyList就能略過所有動畫 (例如項目放置動畫、AnimatedVisibility等),並計算所有子項的 Lookahead 大小和位置。在預先傳遞後,LazyList的子項可以獨立動畫化,呈現預先傳遞中看到的實況。
行為變更:Compose 現在預設會將 includeFontPadding 設為 false
在 Compose 中,includeFontPadding 現在預設為 false (21d806)。
includeFontPadding 是舊版屬性,可控制是否要在文字的第一行和最後一行頂端加入額外邊框間距,以容納可能超出文字基準線的任何字元。
更新這個 Compose 版本後,系統會移除顯示的所有文字第一行和最後一行頂端的額外邊框間距,藉此修改 UI 中所有文字的算繪方式。
視您的 UI 需求和使用的字型指標而定,變更幅度應不大。但您可能會遇到以下阻礙: - 螢幕截圖測試損毀。視需要修正 UI,然後重新產生黃金圖片。 - 文字稍微錯位。移除任何自訂負邊框間距,或視需要新增邊框間距。
如要啟用 includeFontPadding,請為每則文字使用 PlatformTextStyle:
Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)
如要為所有文字啟用 includeFontPadding,請設定 Material 樣式。請注意,M2 和 M3 的參數名稱會有所不同。
val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /* … */,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /* … */
   )
)
MaterialTheme(
   typography = Typography,
   /* … */
)
如要進一步瞭解 Compose includeFontPadding,請參閱開發人員說明文件和這篇網誌文章。
如果遇到與這項變更相關的問題/錯誤,請使用問題追蹤工具回報錯誤。
API 變更
- 支援 InputConnection#requestCursorUpdates(I0c69b)
- 新增 FocusRequester.saveFocusedChild和FocusRequester.restoreFocusedChild(Ic557e、b/272302679、b/275157318)
- 新增 ResourceResolutionException型別,包裝嘗試載入點陣圖資產時擲回的可拋出項目,並說明無法載入的資產路徑。(I19f44、b/230166331、b/278424788)
- 針對效能和記憶體配置進行最佳化調整,(Iede48)
- 新增語意屬性和動作,支援文字翻譯。(I4a6bc)
- IntrinsincMeasureScope中的新屬性及其實作項目 (例如- MeasureScope),用於指出目前的測量傳遞是否為預先查看傳遞。(I7a812)
- 更新 DrawScopeAPI,導入將算繪作業重新指定至其他畫布的功能,並提供替代密度/版面配置方向和大小。
- 更新 DrawContext,支援設定密度和版面配置方向,以及設定畫布。(Ie1f9b、b/225408150)
- 新增 Paragraph#fillBoundingBoxes,用於計算字元定界框。(If30ee)
- 新增一組常見的 MultiPreviews(Ia5a27)
修正錯誤
- 新增 FocusTargetModifierNode介面,可用於建立自訂FocusTarget。(I9790e)
- 已將 TextMeasurer建構函式中的fallback*參數重新命名為default*。(I940a5)
- 已將 SemanticsPropertyReceiver.performImeAction重新命名為onImeAction,並將SemanticsActions.PerformImeAction重新命名為OnImeAction。(I8e841)
- 新增 Wheel,用於區分巢狀捲動 (具體來說,在 NestedScrollConnection中) 的滑鼠捲動和拖曳。(Ie57e4)
- 新增 asComposePaintAPI,取代toComposePaint,因為傳回的物件會包裝原始android.graphics.Paint(I22b4c)
- 淘汰 SemanticsProperties.imeAction,並以新參數取代SemanticsActions.performImeAction。(I4a587)
- 新增滑鼠選取支援。以觸控方式選取文字時,選取範圍會以字詞為單位擴大,並以字元為單位縮小。(Ic0c6c、b/180639271)
- 如果偏移量超出範圍,過去會擲回 AssertionError的Paragraph方法,現在會擲回IllegalArgumentException,與MultiParagraph相同。(I549d3、b/243338896)
1.5 版本
1.5.4 版本
2023 年 10 月 18 日
發布 androidx.compose.ui:ui-*:1.5.4。1.5.4 版包含以下修訂項目。
1.5.3 版本
2023 年 10 月 4 日
發布 androidx.compose.ui:ui-*:1.5.3。1.5.3 版包含以下修訂項目。
修正錯誤
- (b/301209788) TextField有時會在聚焦並輸入韓文時,錯誤地套用先前的指令,導致字元遺失。
1.5.2 版本
2023 年 9 月 27 日
發布 androidx.compose.ui:ui-*:1.5.2。1.5.2 版包含以下修訂項目。
修正錯誤
- 如果從背景執行緒存取無障礙捲動 API,系統會新增解決方法來避免當機。
- 修正新增至語意樹狀結構的未附加節點。
1.5.1 版本
2023 年 9 月 6 日
發布 androidx.compose.ui:ui-*:1.5.1。1.5.1 版包含此連結所列的修訂項目。
修正錯誤
- 修正文字欄位在 readOnly為 true 時顯示鍵盤並可編輯的問題。此外,也修正了當焦點從 true 變更為 false 時,鍵盤不會顯示的問題。readOnly(I34a19、b/246909589)
1.5.0 版本
2023 年 8 月 9 日
發布 androidx.compose.ui:ui-*:1.5.0。1.5.0 版包含此連結所列的修訂項目。
1.5.0-rc01 版
2023 年 7 月 26 日
發布 androidx.compose.ui:ui-*:1.5.0-rc01。1.5.0-rc01 版包含此連結所列的修訂項目。
修正錯誤
- 修正在 movableContentOf()內使用SubcomposeLayout時發生的當機問題。
1.5.0-beta03 版
2023 年 6 月 28 日
發布 androidx.compose.ui:ui-*:1.5.0-beta03。1.5.0-beta03 版包含以下修訂項目。
修正錯誤
- 新增 FocusTargetModifierNode 介面,可用於建立自訂 FocusTarget。(Ifb1d6)
- 修正 Dialog 和 Popup 可組合函式的問題,這個問題可能導致子視窗在 usePlatformDefaultWidth=true時無法如預期調整大小。(I112ee)
1.5.0-beta02 版
2023 年 6 月 7 日
發布 androidx.compose.ui:ui-*:1.5.0-beta02。1.5.0-beta02 版包含以下修訂項目。
API 變更
- 新增 asComposePaintAPI,可啟用android.graphics.Paint執行個體,以便在 Compose 中使用
修正錯誤
- 新增 asComposePaintAPI,取代toComposePaint,因為傳回的物件會包裝原始android.graphics.Paint(I22b4c)
1.5.0-beta01 版
2023 年 5 月 24 日
發布 androidx.compose.ui:ui-*:1.5.0-beta01。1.5.0-beta01 版包含此連結所列的修訂項目。
API 變更
- 移除重組、色彩動畫和 AndroidComposeView中的配置 (Ib2bfa)
- 新增輔助函式 CacheDrawModifierNode(),允許委派 (Icf8f9)
- 推出 isLookingAhead屬性,可從MeasureScope存取,用於觀察預先查看結果,並視需要影響主要傳遞。(Ibf4c3)
- 新的語意屬性 traversalIndex,用於重新排序TalkBack遍歷中的節點 (值越小越靠前)。(I9a81b、b/186443263)
- 將語意屬性 isContainer重新命名為isTraversalGroup(I121f6)
- ColorProducer現在是- operator fun invoke,而非- produce(I4a9a2)
- 新增 Path轉換 API,將平移/縮放/旋轉轉換套用至路徑物件。(I23434、b/233772232)
- ColorProducer的方法稱為- produce。(I78bde)
- 將 toFrameworkColorSpace重新命名為toAndroidColorSpace(I4f547)
- 將 ColorLambda重新命名為ColorProducer。(I73b1a)
- 導入 API,在 Android 和 Compose 色彩空間類型之間轉換。(Ie7db4、b/279979665)
- 在 BasicText中新增顏色參數,可有效設定或製作文字顏色動畫。(Iffd88、b/246961787)
- TextRange.constrain已重新命名為- TextRange.coerceIn。(I31be2)
- 新增最佳化 TextStyle.merge(...),並提供完整參數清單。(Iad234、b/246961787)
- 穩定許多文字 API,包括 Brush、DrawStyle、TextMotion、DrawScope.drawText、Paragraph.paint(Brush)、MultiParagraph.paint(Brush)。(I2f740、b/261581564、b/261581931、b/261561245)
- PlatformTextStyle.includeFontPadding已取消淘汰。我們原本打算移除這個欄位,但開發人員意見回饋顯示,他們需要這個設定選項。因此從欄位中移除淘汰項目 (I98e96、b/277703184)
- 新增了公開 TextRange.constrain方法。(I97912)
- 現在可透過 TalkBack等無障礙服務開啟AnnotatedString中的UrlAnnotation。(If4d82、b/253292081)
- 新增文字欄位的 InsertTextAtCursor語意動作。(I11ed5)
- LineHeightStyle.Alignment(topRatio)建構函式已升級為穩定版 API。(I79c32、b/261565383)
- TextMeasurer和相關 API 不再處於實驗階段。(I74647、b/261581753)
- 新增 PerformImeAction語意動作,用於在文字編輯器節點上叫用 IME 動作。(Ic606f、b/269633506)
- Android 的 PlatformTextInputAPI 不再處於實驗階段。(I668eb)
- Enum.valueOf的值參數名稱已變更 (Ia9b89)
- 從列舉 valueOf 擲回更多例外狀況 (I818fe)
- 推出新的低階 PlatformTextInputAdapterAPI,用於建構可直接與平台 API 通訊的自訂文字輸入實作項目。(I58df4)
- 在 DrawScope.drawText、Paragraph.paint和MultiParagraph.paint方法中新增BlendMode參數,以便在畫布上繪製文字時支援不同的混合演算法。(I57508)
- 將 Font.MaximumAsyncTimeout重新命名為Font.MaximumAsyncTimeoutMillis。僅限重新命名。(I07af5)。
- 更新 @Preview參考裝置的 DPI 值 (Id6151、b/254528382)
- 在 BasicText中新增brush、alpha參數,可有效製作動畫或設定文字筆刷。
- 在 :ui:ui-unit 中,為 Float、Double、Long、Int、Short 定義無裝箱的 lambda 型別 (I6f18d、b/246961787)
修正錯誤
- 移除指標速度追蹤中的多個配置 (I26bae)
- 減少版面配置和指標輸入管理中的分配 (I5333a)
- 最佳化 Vector 記憶體用量和首頁影格算繪 (I2f3c6)
- 使用 Canvas 繪製線條和點時,系統會移除分配 (I9f535)
- 新增 AndroidFont.fontVariationSettings的文件 (I7d9e2)
外部貢獻
- 提升效能並減少 Vector API 中的分配量 (I906cb)
1.5.0-alpha04 版
2023 年 5 月 10 日
發布 androidx.compose.ui:ui-*:1.5.0-alpha04。1.5.0-alpha04 版包含以下修訂項目。
新功能
- Modifier.Node委派功能改善 從- DelegatingNode委派給其他- Modifier.Node執行個體時,現在可使用進階功能。您可以使用- delegate和- undelegateAPI 執行這項操作。在這項變更之前,委派節點的每個 API 都必須明確委派給委派節點。這項變更生效後,節點介面會隱含委派,除非- DelegatingNode明確覆寫這些介面。(67352bc)
API 變更
- 推出 NestedScrollModifierNode,這是可委派的NestedScroll Modifier.Node。(I69513)
- 在 AndroidViewBinding可組合函式中新增onReset和onRelease參數,鏡像AndroidView可組合函式,並透過ViewBinding支援 View 重複使用。(I00b1e、b/276802519)
- 更新 Compose 路徑 API,支援倒轉作業,以便在頻繁操作路徑時更快重複使用。(I7b797)
- 新增最佳化 TextStyle.merge(...),並提供完整參數清單。(Iad234、b/246961787)
- 穩定許多文字 API,包括 Brush、DrawStyle、TextMotion、DrawScope.drawText、Paragraph.paint(Brush)、MultiParagraph.paint(Brush)。(I2f740、b/261581564、b/261581931、b/261561245)
- PlatformTextStyle.includeFontPadding已取消淘汰。我們原本打算移除這個欄位,但開發人員意見回饋顯示,他們需要這個設定選項。因此從欄位中移除淘汰項目 (I98e96、b/277703184)
修正錯誤
- 修正迴歸問題:鍵盤不會顯示在並非由 Dialog可組合函式建立的對話方塊內文字欄位。(I82551、b/262140644)
1.5.0-alpha03 版
2023 年 4 月 19 日
發布 androidx.compose.ui:ui-*:1.5.0-alpha03。1.5.0-alpha03 版包含此連結所列的修訂項目。
新功能
- LookaheadScope中- SubcomposeLayout的新預設行為:沒有條件式插槽 (例如- TabRow、- Scaffold、- BoxWithConstraints等) 的- SubcomposeLayouts現在可與預先查看動畫順利搭配運作。
API 變更
- 新的預設 intermediateMeasurePolicy會重複使用 Lookahead 傳遞中的測量政策,讓SubcomposeLayout子類型 (例如Scaffold、TabRow和BoxWithConstraints) 預設可搭配 Lookahead 使用,而不需要條件式插槽。(Id84c8)
- 現在,Android 視窗建立的重組器收到 ON_STOP通知時,只會封鎖對withFrameNanos的呼叫,而非所有組合。也就是說,與停止活動相關聯的視窗會繼續重組資料變更,但動畫或withFrameNanos的任何其他呼叫端都會遭到封鎖。(Id9e7f、b/240975572)
- 將 motionEventSpy變更為穩定版。(Ic5ec4、b/261560988)
- 新增了公開 TextRange.constrain方法。(I97912)
- PlatformTextStyle.includeFontPadding不再是已淘汰的項目,鼓勵開發人員使用這個相容性 API 切換及測試將- includeFontPadding設為 false。(I98e96、b/277703184)
1.5.0-alpha02 版
2023 年 4 月 5 日
發布 androidx.compose.ui:ui-*:1.5.0-alpha02。1.5.0-alpha02 版包含此連結所列的修訂項目。
API 變更
- 新的 SubcomposeLayoutAPI,可額外採用中介測量政策,在以預先查看為基礎的動畫期間處理測量/版面配置邏輯。(I017d3)
- PointerInput 現在會延遲執行,並使用 Modifier.Node 提升效能 (瞭解行為的微小變化)。(15dab9)
- 將實驗性 API 變更為穩定版,並加入重要事件。(I9c7d8、b/261566839、b/261567368)
- 將 PointerInputChange中的實驗性 API 改為穩定版。(I1b543、b/261560988、b/261565762、b/261565749)
- 新增例項化 SuspendingPointerInputModifierNode的方式,以便實作更複雜的Modifier.Node。(Ic4933)
- 現在可透過 TalkBack等無障礙服務開啟AnnotatedString中的UrlAnnotation。(If4d82、b/253292081)
- 新增 API,可在硬體按鍵傳送至軟體鍵盤前攔截 (I4f4c6、b/186800395)
- 新增文字欄位的 InsertTextAtCursor語意動作。(I11ed5)
- 現在,文字相關的測試動作 (例如 performTextInput) 會使用語意動作直接要求焦點,而不是點選欄位。(I6ed05)
修正錯誤
- 文字測試動作現在必須啟用文字欄位。(Iab328)
1.5.0-alpha01 版本
2023 年 3 月 22 日
發布 androidx.compose.ui:ui-*:1.5.0-alpha01。1.5.0-alpha01 版包含此連結所列的修訂項目。
API 變更
- Modifier.intermediateLayout 現在不需要明確的 LookaheadScope。intermediateLayout 中的測量區塊以 IntermediateMeasureScope 做為接收器,可提供便利的 CoroutineScope、LookaheadScope 和 MeasureScope。(Ibe2e5)
- LookaheadLayout 已由 LookaheadScope 取代,後者不再是 Layout。這可讓父項的 MeasurePolicy 直接控制 LookaheadScope 中的子項內容。(Ibe2e5)
- 新增 Modifier.Node#coroutineScope,允許 Modifier.Nodes 啟動協同程式。(I76ef9)
- 實作 CompositionLocalConsumerModifierNode 介面,允許 Modifier.Nodes 讀取 CompositionLocals。(Ib44df)
- 將 @Deprecated 類別傳播至屬性。(I882d1)
1.4 版
1.4.3 版本
2023 年 5 月 3 日
發布 androidx.compose.ui:ui-*:1.4.3。1.4.3 版本包含這些修訂版本。
修正錯誤
- 修正問題:搭配特定修飾符使用時,AndroidView可能無法正確配置。(I4dc77、b/274797771)
- 修正 2D 焦點搜尋中的錯誤,該錯誤會影響 DropDown選單 (b/276811828)
- 修正自訂焦點進入/離開屬性的錯誤,該錯誤只會在首次叫用 lambda 時執行進入/離開區塊 (b/277234245)
- 修正焦點系統中的迴歸問題,該問題會在讀取 focusProperties時導致當機。(b/271324781、b/274897776)
1.4.2 版
2023 年 4 月 19 日
發布 androidx.compose.ui:ui-*:1.4.2。1.4.2 版本包含這些修訂版本。
修正錯誤
- 修正 AndroidView無法正確重複使用修飾符的問題,這可能會導致非預期的行為和當機。(Ib67ee、b/275919849)
- 修正迴歸問題:對於並非由 Dialog可組合函式建立的對話方塊,文字欄位不會顯示鍵盤 (I82551、b/262140644)
1.4.1 版本
2023 年 4 月 5 日
發布 androidx.compose.ui:ui-*:1.4.1。1.4.1 版本包含這些修訂版本。
修正錯誤
- 修正 ParentDataModifier無法影響AndroidView的問題 (b/274797771)
1.4.0 版本
2023 年 3 月 22 日
發布 androidx.compose.ui:ui-*:1.4.0。1.4.0 版包含此連結所列的修訂項目。
自 1.3.0 版以來的重要異動
- 新增的 PinnableContainerAPI,可允許固定 Lazy 清單項目,如此一來,這些項目就不會在捲動到邊界外時遭到捨棄。舉例來說,Modifier.focusable()會利用這項機制固定當前聚焦的項目 (Ib8881、b/259274257、b/195049010)。
- 使用新的實驗性 Modifier.NodeAPI 重新編寫焦點系統。(I7f4d7、b/247708726、b/255352203、b/253043481、b/247716483、b/254529934、b/251840112、b/251859987、b/257141589)。
- 在 Surfaces 上新增 IsContainer語意屬性。這項屬性會在日後的變更中用到,屆時我們會根據 surfaces 等元素的語意含義來決定周遊順序 (I63379)。
- 新增無障礙角色 DropdownList。可用於在聚焦android.widget.Spinner時複製TalkBack的行為。(I177e5、b/236159001)。
- 您現在可以使用 PlatformTextStyle(emojiSupportMatch),選擇性停用對單一 Paragraph 的表情符號支援處理功能 (Ia7100、b/139326806)。
- Android Compose UI 測試會在執行畫面要進入閒置狀態 (例如透過 waitForIdle) 時,為每個畫面執行版面配置傳遞作業。這可能會影響到宣告版面配置動畫的個別畫面測試 (I8ea08、b/222093277)。
- 新增實驗性 TextMotion至TextStyle,將文字定義為Static(default)或動畫。如要透過動畫縮放、變換或旋轉文字,請使用TextMotion.Animated(I24dd7)。
1.4.0-rc01 版本
2023 年 3 月 8 日
發布 androidx.compose.ui:ui-*:1.4.0-rc01。1.4.0-rc01 版包含此連結所列的修訂項目。
API 變更
- 新增了 AndroidView可組合函式的超載,這會接受onReset參數。當組合中的節點遭到捨棄,並以相容方式重複使用時,即可重複使用 View 執行個體。這對 Views 的LazyRows和LazyColumns尤其有用。(I3f10d、b/230099236)
- 推出新的低階 PlatformTextInputAdapterAPI,用於建構可直接與平台 API 通訊的自訂文字輸入實作項目。(I58df4)
修正錯誤
- BasicTextField的- SetText語意動作現在會使用與 IME 更新和測試函式 (例如- performTextReplacement) 相同的程式碼路徑,更新文字緩衝區。
- 文字測試函式 performTextClearance、performTextReplacement和performTextSelection現在使用SemanticsActions。(I0807d、b/269633168、b/269624358)
1.4.0-beta02 版本
2023 年 2 月 22 日
發布 androidx.compose.ui:ui-*:1.4.0-beta02。1.4.0-beta02 版包含以下修訂項目。
API 變更
- 已移除 modifierElementOf()API。請改為直接從ModifierNodeElement擴充。(I2256b)
- 新增 Modifier.Node.onReset()回呼,讓您重設部分本機狀態,以便正確處理Layout重複使用的情況 (例如做為LazyColumn的項目)。修正FocusTargetModifierNode,以正確重設焦點狀態。(I65495、b/265201972)
- 在 DrawScope.drawText、Paragraph.paint和MultiParagraph.paint方法中新增BlendMode參數,以便在畫布上繪製文字時支援不同的混合演算法。(I57508)
修正錯誤
- 改良無障礙焦點順序演算法,例如頂端列/底端列現在更常分別先/後讀取 (74e9c5)
1.4.0-beta01 版本
2023 年 2 月 8 日
發布 androidx.compose.ui:ui-*:1.4.0-beta01。1.4.0-beta01 版包含此連結所列的修訂項目。
API 變更
- PinnableContainer.PinnedHandle.unpin()已重新命名為- release()(I4667a)。
- 已新增 waitUntilNodeCount、waitUntilAtLeastOneExists、waitUntilExactlyOneExists和waitUntilDoesNotExist做為ComposeTestRule的實驗性 API,擴充waitUntilAPI 以接受任何比對器和節點數量。詳細說明請參閱ComposeTestRule(Ifa1b9、b/226934294)。
- 將 Font.MaximumAsyncTimeout重新命名為Font.MaximumAsyncTimeoutMillis(I07af5)。
- 已移除 GoogleFont.Provider.AllFontsListUri,並改為在 ktdoc 中連結此連結 (I16f29)。
修正錯誤
- 新增 AndroidFont.fontVariationSettings的文件 (I7d9e2)
1.4.0-alpha05 版
2023 年 1 月 25 日
發布了 androidx.compose.ui:ui-*:1.4.0-alpha05。查看 1.4.0-alpha05 版的修訂項目。
API 變更
- 推出了適用於 runComposeUiTest函式和create*ComposeRule函式的全新實驗性超載,該函式接受CoroutineContext參數。結構定義將用於測試組合及當中的LaunchedEffect和rememberCoroutineScope()呼叫。(I10614、b/265177763)
- 新增 API 以追蹤一維速率 (If5a82)
- FocusRequester現已標示為- @Stable。(I580ee)
- 從採用 usePlatformDefaultWidth參數的DialogProperties建構函式中移除實驗性註解。(Ic4048)
- 在路徑一定距離的計算位置和切線上新增了函式 - 使用 PathMeasure.getPosition()和PathMeasure.getTangent()(I3b47c)
- 移除了 PlatformParagraphStyle上意外公開的公開 setter。(I07f47)
- 針對內嵌/已淘汰並隱藏的函式提供更多類型/是否可為空值選項 (I24f91)
- 新增 AnnotatedString.hasStringAnnotations以查詢沒有分配資源的註解。(I94dfe、b/246960758)
- 新增了適用於 TextMeasurer.measure函式的全新超載,這會將String視為文字來採用。(I47b2d、b/242705342)
- TextStyle 中的 LineBreak和HyphensAPI 已升級為穩定版。(Ic1e1d)
外部貢獻
- TextInputSession和- TextInputService中的- notifyFocusedRect方法不會再次淘汰。(I23a04、b/262648050)
1.4.0-alpha04 版本
2023 年 1 月 11 日
發布了 androidx.compose.ui:ui-*:1.4.0-alpha04。查看 1.4.0-alpha04 版的修訂項目。
新功能
- 新增的 PinnableContainerAPI,可允許固定 Lazy 清單項目,如此一來,這些項目就不會在捲動到邊界外時遭到捨棄。舉例來說,Modifier.focusable()會利用這項機制固定當前聚焦的項目 (Ib8881、b/259274257、b/195049010)。
- 使用新的實驗性 Modifier.NodeAPI 重新編寫焦點系統。(I7f4d7、b/247708726、b/255352203、b/253043481、b/247716483、b/254529934、b/251840112、b/251859987、b/257141589)。
- 在 Surfaces 上新增 IsContainer語意屬性。這項屬性會在日後的變更中用到,屆時我們會根據 surfaces 等元素的語意含義來決定周遊順序 (I63379)。
- 新增的無障礙角色 DropdownList,可用於在聚焦android.widget.Spinner時複製TalkBack's行為 (I177e5、b/236159001)。
- 您現在可以使用 PlatformTextStyle(emojiSupportMatch),選擇性停用對單一 Paragraph 的表情符號支援處理功能 (Ia7100、b/139326806)。
- Android Compose UI 測試會在執行畫面要進入閒置狀態 (例如透過 waitForIdle) 時,為每個畫面執行版面配置傳遞作業。這可能會影響到宣告版面配置動畫的個別畫面測試 (I8ea08、b/222093277)。
- 新增實驗性 TextMotion至TextStyle,將文字定義為Static(default)或動畫。如要透過動畫縮放、變換或旋轉文字,請使用TextMotion.Animated(I24dd7)。
API 變更
- 將 drawText中的maxSize: IntSize引數替換為size: Size,以便內嵌於其他DrawScope函式。size預設為Size.Unspecified,這應該不會變更先前的預設行為 (Icd27d)。
- 移除了已淘汰的實驗性字型建構函式。(I8a724、b/261435386)。
- UI 工具資料類別 Group現在包含isInline欄位,這表示群組是否用於目標為內嵌可組合函式的呼叫。如果isInline是true,呼叫目標即為內嵌可組合函式。不過,如果呼叫目標為來自模組的內嵌可組合函式,而且這些模組的編譯方式採用不會產生內嵌函式資訊的 Compose Compiler 外掛程式版本,那麼這個值可能會是 false (Idb846)。
- 將先前推出的一些實驗性 API 升級為穩定版
- Rotary Scroll Event API 現在是穩定版 (I42ad3、b/261561229)
- FontVariationAPI 現在是穩定版 (I8779f、b/241016309)
- 所有 Font()建構函式現在都是穩定版 API (I5948b、b/261435386)
- DeviceFontFamilyName現在是穩定版 (I8b640、b/261435386)
- 包含 variationSettings的AndroidFont建構函式現在是穩定版 API,可用於建立新類型的字型描述元。(I5adcc、b/261565807)。
- createFontFamilyResolverAPI 現在是穩定版,可用於在非同步載入字型時找出未偵測到的例外狀況 (Ibb481、b/261435386)。
- Font.loadingStrategyAPI 現在是穩定版 (I5937c、b/261435386)。
- GoogleFontAPI 現在是穩定版 (Ic90b0、b/261435386)。
- TextUnit(float, TextUnitType)現在是穩定版 API (I90c84、b/261561612)。
- pluralStringResource現在是穩定版 API (I09849、b/261439703)。
1.4.0-alpha03 版
2022 年 12 月 7 日
發布 androidx.compose.ui:ui-*:1.4.0-alpha03。1.4.0-alpha03 版包含此連結所列的修訂項目。
API 變更
- 將 ExperimentalComposeUiApi從PointerIcon中移除 (I23af8)
- 導入頁面無障礙動作:PageUp、PageDown、PageLeft、PageRight。請注意,這些內容僅適用於 API 29。(Ida4ab)
- 將 rememberNestedScrollConnection參數檢視畫面從根層級檢視畫面變更為主機檢視畫面。(Ia5200)
- 新增 Modifier API 來查詢祖系捲動資訊 (I2ba9d、b/203141462)。
- 如果手勢可能產生捲動事件,用在 Clickable中可正確延遲按下的互動動作。
- 修正了在 Scrollable ViewGroup中使用Clickables時無法正確延遲漣漪效果的問題。
- 更新導覽匣和試算表,以便在手勢可能成為捲動事件時,使用可正確延遲按下的動作。
- 已將 CompositingStrategy.Always重新命名為Offscreen,表示graphicsLayer一律會轉譯成中繼緩衝區 (I47dc1)
- 含有多個內容版位的版面配置超載現已穩定 (I10566、b/248294649)
- 新增了實驗性的新 API PerfettoTrace.record {}和PerfettoTraceRule,以擷取 Perfetto 追蹤記錄 (也稱為系統追蹤) 作為測試的一部分,以檢查測試的行為和效能。(I3ba16)
- 在使用 Compose 規則的 UI 測試中,在所有影格回呼都執行完畢後,才會分派在 withFrameNanos回呼期間繼續作業。這與 Compose 正常執行時的行為相符。不過,仰賴舊行為的測試可能會失敗。這只會影響直接呼叫withFrameNanos或withFrameMillis的程式碼,並將回呼外的邏輯傳遞至可能需要在回呼內移動的函式。如需範例,請參閱這份 CL 中的動畫測試變更。
- 將選用的 onPerformTraversals: (Long) -> Unit參數新增至TestMonotonicFrameClock建構函式和工廠函式,以便在withFrameNanos回呼之後和重新啟用呼叫端協同程式之前執行程式碼。(Idb413、b/254115946、b/222093277、b/255802670)。
- 將 EmojiCompat 新增至 Compose (Ibf6f9、b/139326806)
- 在 @Preview中新增桌布參數,以支援動態色彩 (I9f512)
修正錯誤
- 現在,Recomposer套用變更之後,系統即會傳送快照套用通知 (Iad6c0、b/222093277)。
- 導入 captureToImage中的變更,以擷取多視窗螢幕截圖。這對於使用 compose PopUp 的螢幕截圖測試而言非常實用。(I169c5)
依附元件更新
- Compose UI 和 Compose Material 現已依附於 Lifecycle 2.5.1。(I05ab0、b/258038814)
1.4.0-alpha02 版
2022 年 11 月 9 日
發布 androidx.compose.ui:ui-*:1.4.0-alpha02。查看 1.4.0-alpha02 版的修訂項目。
API 變更
- 更新了 GraphicsLayerScope以揭露graphicsLayer目前的尺寸。這有助於計算graphicsLayer轉換做為 Composable 尺寸的函式。(If8c43、b/181387080)
- 推出 CompositingStrategy,以便判斷何時應使用螢幕外合成層來轉譯graphicsLayer內容。Auto 會維持於套用 Alpha 或RenderEffect/Overscroll時在內部使用圖層的預設行為。Always 一律會引入螢幕外緩衝區,其中ModulateAlpha會避免使用螢幕外緩衝區,並改為逐一調整graphicsLayer內記錄的繪圖指示。使用ModulateAlpha時,系統仍會利用RenderEffect/Overscroll用到的螢幕外緩衝區 (I25e82、b/256382834)
- 在 Modifier.Node中新增invalidateSubtree(),以便使版面配置和繪圖的整個階層失效。(I4bd90)
- 將 rememberNestedScrollInteropConnection升級為穩定版。推出將根層級檢視區塊傳送至rememberNestedScrollInteropConnection的功能。如此一來,自訂檢視區塊就能對捲動限制條件做出反應,尤其是在ModalBottomSheetDialog等非標準檢視畫面中 (I9e107)
- 新增了 ObserverNode介面,可用於Modifier.Node實作,以便在先前已讀取的值發生變更時收到通知 (I5728b、b/247716483)
- 在 Paint中新增可接受原生android.graphics.Paint的建構函式。另外也新增了擴充功能函式toComposePaint(),可將現有的原生 Paint 物件轉換為 Compose Paint。(Ica91b)
- 新增適用於 Android 的 FontFamily.Resolver.resolveAsTypeface。(I8950b)
- 新增 ToolingState,讓工具能變更 Composable 的內部狀態 (Ie6614)
- 重構工具,以便完善支援新增的動畫 (I8677b)
- 將 minLines參數加到 Material 和 Material 3 的 Text、TextField和OutlinedTextField中,藉此以行數為單位來設定元件的最小高度 (I4af1d)
1.4.0-alpha01 版
2022 年 10 月 24 日
發布 androidx.compose.ui:ui-*:1.4.0-alpha01。查看 1.4.0-alpha01 版的修訂項目。
API 變更
- 新增了適用於手勢偵測工具的新方法:awaitEachGesture()。運作方式與forEachGesture()類似,但手勢的迴圈完全在AwaitPointerEventScope內運作,因此事件不會在疊代之間遺失。
- 由於 forEachGesture()會導致事件在手勢間遺失,因此已將其淘汰並改用awaitEachGesture()(Iffc3f、b/251260206)。
- 淘汰 AndroidX 中無障礙功能物件的回收作業。我們發現即使是最舊的受支援版本,這項變更的成效差異都是微不足道。(I0a961)
- 已將 DrawStyle新增為TextStyle和SpanStyle的實驗性屬性,以便啟用含外框文字的繪製功能。(If24b8、b/155421273)
- AnnotatedString.Builder現可實作- kotlin.text.Appendable。(I1a061、b/231030444)
- AnnotatedString.Builder現在提供- append(AnnotatedString, start: Int, end: Int)方法,用於附加- AnnotatedString的子字串和相交樣式。
- 在 Paragraph和MultiParagraph繪製函式中加入DrawStyle參數,可用於繪製含外框的文字。(Ic8102、b/155421273)
外部貢獻
- 感謝 vighnesh將 TV 裝置新增至預先發布版 (Ie15cd)
1.3 版
1.3.3 版
2023 年 1 月 11 日
發布 androidx.compose.ui:ui-*:1.3.3。查看 1.3.3 版的修訂項。
修正錯誤
- 修正問題:Activity 正在儲存 Compose View 狀態時,Android 9 有時會停止運作 (I0b755、b/260322832)。
1.3.2 版
2022 年 12 月 7 日
發布了 androidx.compose.ui:ui-*:1.3.2。1.3.2 版包含此連結所列的修訂項目。
修正錯誤
- 已更新為使用 Profobuf 3.21.8,以避免 protobuf-javalite:3.19.4中的安全性警示 (CVE-2022-3171) (b/255545055)
1.3.1 版
2022 年 11 月 9 日
發布 androidx.compose.ui:ui-*:1.3.1。1.3.1 版包含此連結所列的修訂項目。
1.3.0 版
2022 年 10 月 24 日
發布 androidx.compose.ui:ui-*:1.3.0。1.3.0 版包含此連結所列的修訂項目。
自 1.2.0 版以來的重要變更
- 全新實驗性 API 套件 LookaheadLayout(啟用先前無法使用的動畫行為)
- 全新實驗性 API 套件 Modifier.Node(取代Modifier.composed的高效能 API 套件)
- 改善視窗插邊支援機制。
- 提供適用於 LazyLists 中 D-Pad 和硬體鍵盤的焦點支援。
- 對話方塊和彈出式視窗的支援高度上限已降到 8 dp (針對部分自訂設計系統的行為破壞性變更 - 原因請參閱 Beta01 版本資訊)
- 多個小幅非破壞性的 API 改善項目
- 多項錯誤修正和效能改善項目
1.3.0-rc01 版
2022 年 10 月 5 日
發布 androidx.compose.ui:ui-*:1.3.0-rc01。查看 1.3.0-rc01 版的修訂項目。
API 變更
- 新增了實驗性 API Hyphens,以支援 Text 中的自動連字號 (Iaa869)
修正錯誤
- 根據預設,DeviceFontFamilyName字型不會指定wght和ital變化版本設定,而是使用已載入Typeface的平台設定 (Ia7a6d、b/246989332)。
- 修正了 LazyColumn記憶體流失問題 - 重複使用修飾符時,並未使用預設值呼叫onModifierLocalsUpdated(b/230168389)
1.3.0-beta03 版
2022 年 9 月 21 日
發布 androidx.compose.ui:ui-*:1.3.0-beta03。查看 1.3.0-beta03 版的修訂項。
API 變更
- 新增自訂文字斷行選項 (I86907)。
- 已利用 constraints: Constraints變更在TextMeasurer.measure方法中的size:IntSize引數來處理最小寬度限制 (I37530、b/242707525)
修正錯誤
- AndroidX Activity 的 BackHandlerAPI 現在可在Dialog可組合項中運作。(I35342)
1.3.0-beta02 版
2022 年 9 月 7 日
發布 androidx.compose.ui:ui-*:1.3.0-beta02。查看 1.3.0-beta02 版的修訂項目。
API 變更
- 對 Layout 新增實驗性的超載,可接受多個可組合內容 lambda,可用來威脅將測量內容放至不同的 lambda 內容中 (Ic1b4e)
實驗性 Focus API 的變更:
- FocusDirection.In和- FocusDirection.Out已淘汰,並由- FocusDirection.Enter和- FocusDirection.Exit取代。(Ia4262、b/183746982)
- 新增了兩個新的焦點屬性 (進入和結束事件),用來指定 FocusManager.moveFocus(Enter)和FocusManager.moveFocus(Exit)的自訂行為。(I5f3f9、b/183746982)
- 您現在可以使用 FocusRequester.Cancel取消焦點的移動。FocusRequester.Cancel可用於以下任何一種焦點屬性:向上、向下、左側、右側、下一個、上一個、開始、結束、進入和結束。(Ib300f)
1.3.0-beta01 版
2022 年 8 月 24 日
發布了 androidx.compose.ui:ui-*:1.3.0-beta01。查看 1.3.0-beta01 版的修訂項目。
修飾符節點重構
處理 Modifier/Modifier.Element 執行個體及協調其在 LayoutNodes 上行為的層已大幅重構。但由於此為重構,不會影響 Compose 中許多修飾符的公用 API,而且可視為僅實作的變更。儘管如此,基於各種原因,這仍是一項重要的變更。(Ie4313)
變更摘要
新增的實驗性 Modifier.Node API 提供抽象層,允許在執行個體上維護狀態,該執行個體將隨版面配置節點的生命週期一起保留,且將按版面配置節點和產生其的對應 Modifier.Element 的使用情況進行分配。
普遍來說,這個抽象層提供了另一種機制,不必依賴 Modifier.composed API 的機制即可產生有狀態的修飾符。
風險
此變更與先前版本的二進位程式碼高度相容,目的是盡可能在合理範圍內確保可觀測行為的回溯相容性。即便如此,有幾個子系統並未經過重新建構,因此「可能」會一些有不在測試範圍內的行為變化,目前尚未被發現及修正。
請謹慎升級至這個版本。如果您認為升級時發生了問題,請與我們聯絡。
實驗性 API
我們新增了各種實驗性 API,全都與「修飾符節點」的新概念有關。修飾符節點的建立係依據
- fun modifierElementOf(…): Modifier
- abstract class ModifierNodeElement
- abstract class Modifier.Node
- abstract class DelegatingNode
- interface LayoutModifierNode
- interface DrawModifierNode
- interface SemanticsNode
- interface PointerInputNode
- interface ModifierLocalNode
- interface ParentDataModifierNode
- interface LayoutAwareModifierNode
- interface GlobalPositionAwareModifierNode
- interface IntermediateLayoutModifierNode
行為破壞性變更
對話方塊和彈出式視窗支援的高度上限已降至 8dp。
Compose 對話方塊和彈出式視窗支援的高度上限已從 30dp 降至 8dp。這項變更會影響 Material 及 UI 自訂對話方塊和彈出式視窗。這項變更是為了減少 Android S 以下版本的無障礙服務錯誤,並確保這些視窗中的無障礙服務能與對話方塊或彈出式視窗的內容互動。
只有在您建立自訂對話方塊或彈出式視窗實作項目、且高度設定為 8 dp 以上時,才會受到這項變更的影響。請考慮降低對話方塊或彈出式視窗的高度。如果您需要選擇不採用這項新行為,可考慮以所需高度設定,自行建立對話方塊或彈出式視窗。不建議這麼做,因為無障礙功能可能會受到不當的影響,而且必須由開發人員確保對話方塊的底部或彈出式視窗能進行互動,並且可供無障礙服務讀取。
API 變更
- 修正了 painterResource無法更新設定變更的問題 (I58e73、b/228862715)
- rememberTextMeasurer不再使用- FontFamily.Resolver、- Density或- LayoutDirection參數。請使用- TextMeasurer建構函式為這些參數提供自訂值。(Ia1da3)
- 新增了 DialogProperties.decorFitsSystemWindows屬性,以允許對話方塊支援WindowInsets。(I57742、b/229378542)
- 將字型建構函式移回原本的 kotlin 檔案,以保持二進位程式碼相容性。與上次的穩定版本相比沒有任何變更。(Ieb2f3)
- 從多個等號定義中移除不必要的運算子 - 不會產生任何作用。(I6c309)
- FontVariation.Setting為密封介面,用於允許日後限制 API 的取值範圍。(I11021、b/143703328)
- 新增 CompositionGroup.findParameters至SlotTree.kt。這可讓工具擷取CompositionGroup的參數,而不必剖析整個運算單元資料表。(I124fe)
1.3.0-alpha03 版
2022 年 8 月 10 日
發布 androidx.compose.ui:ui-*:1.3.0-alpha03。1.3.0-alpha03 版包含此連結所列的修訂項目。
API 變更
- LayoutCoordinates.findRootCoordinates()現已公開 (I7fa37、b/204723384)
- 新增了實驗性 API,以取得 PlacementScope中的LayoutCoordinates。這可讓開發人員得知目前版面配置的位置,將其子項放在相對的位置。(I5482b、b/238632578)
- 新增了 LayoutCoordinates.transformFrom,以取得兩個LayoutCoordinates之間的 Matrix 轉換資料。(Ic5ab1、b/238632578)
- 淘汰了 SemanticsModifier.id,並將語意 ID 移至LayoutInfo.semanticsId。(Iac808、b/203559524)
- 資源字型現在支援字型變化版設定 (API 26 以上版本)。(I900dd、b/143703328)
- DeviceFontFamilyNameFont中的可變字型支援 (Ic1279、b/143703328)
- 字型建構函式現在接受 FontVariation.Setting清單,以便在 O+ 裝置上設定可變字型。(I11a9d、b/143703328)
- 新增 FontVariationAPI 以定義及使用可變字型。(I3c40c、b/143703328)
- LineHeightStyle.Alignment建構函式現已公開 (實驗性質) (I4bbbe、b/235876330)
- Android 和電腦版應用程式現在都可以實際運用並定義段落。(Id387e、b/239962983)
- 介面 Paragraph 現已改為密封的介面 Paragarph。沒有任何用途需要將段落設為子類別,而如果這項變更對您造成影響,建議您與我們聯絡。(If5247、b/239962983)
- 從 PlatformTextStyle和LineHeightStyle中移除實驗性註解。(I64bef)
- 淘汰 TextInputService.show|hideSoftwareKeyboard。請在應用程式程式碼中改用SoftwareKeyboardController,並在輸入法編輯器管理程式碼中使用TextInputSession。(I14e4c、b/183448615)
- 為現有的動畫類型新增 API (I26179)
修正錯誤
- 將 @RequiresPermission新增至需要為 SDK 33 以上版本授予POST_NOTIFICATIONS權限的 API (Ie542e、b/238790278)
1.3.0-alpha02 版
2022 年 7 月 27 日
發布 androidx.compose.ui:ui-*:1.3.0-alpha02。查看 1.3.0-alpha02 版的修訂項。
API 變更
- 新增了 PointerInputChange#pressure屬性以擷取壓力。(I45a5e、b/205164819)
- 新增了 rememberTextMeasurer,方便您在組合中建立及記錄TextMeasurer執行個體。(I8d66e)
- Rect、- RoundRect和- MutableRect現在支援使用 Kotlin- in語法呼叫- contains函式。(Ie42b0、b/238642990)。
- 從 KeyInjectionScope中移除不需要的函式,因為您可透過更簡單的 API 元件輕鬆實作這些函式。已移除的函式包括pressKeys、keysDown和keysUp。(I81d77)
- 重構 KeyInjectionScope中的常數和參數名稱以加上後置字串「Millis」,其中上述常數和參數的單位為毫秒。(Iabef5)
- 在 EditCommand中新增了toStringForLog()方法,以協助排解文字編輯問題。(I53354、b/228862731)
- 在 DrawScope上新增了drawText擴充功能函式,這樣就能對在DrawScope(例如Canvas和drawBehind) 上操作的可組合項和修飾符上繪製多樣式的文字。(I16a62、b/190787898)
- 推出一個名為 TextMeasurer的新實驗性 API,用於啟用任意文字版面配置的運算,以便在與 Compose 執行階段無關的情況下,產生與BasicText相同的結果。(I17101)
- 在 SlotTree.kt中新增mapTree。這可讓各項工具檢查SlotTree,但不需要像 asTree 一樣先在記憶體中進行複製。對於版面配置檢查器來說,效能可提升約 10 倍。(I5e113)
- 將 Compose 預覽變更為以二進位輸出檔案儲存,方便開發人員編寫及重複使用程式庫中的 MultiPreview註解。(I85699、b/233511976)
修正錯誤
- 將 InputEventChange事件加入至Velocity追蹤器時,我們現在會考慮使用差異值而非位置,因此即使目標元素移動,也能確保所有案例的速度計算正確 (Icea9d、b/216582726、b/223440806、b/227709803)
- 修正在顯示註解時 AnnotatedString.toUpperCase造成的 NPE。(I0aca2、b/210899140)
1.3.0-alpha01 版
2022 年 6 月 29 日
發布 androidx.compose.ui:ui-*:1.3.0-alpha01。查看 1.3.0-alpha01 版的修訂項目。
API 變更
- 新增 LookaheadLayout,支援在實際測量/版面配置之前使用 Lookahead 傳遞。如此一來,就可以在版面配置變更時預先計算,讓 Lookahead 後測量/版面配置使用預先計算的大小/位置,以動畫方式呈現目標的大小和位置。目前尚不支援SubcomposeLayouts,但會在即將推出的版本中推出。(I477f5)
- 新增選用的 Alpha 參數至 TextStyle和SpanStyle的 Brush 變種版本,以修改整個Text的不透明度。(Ic2fac、b/234117635)
- 推出 UrlAnnotation註解類型與相關的方法,以支援AnnotatedString中的TalkBack連結支援。(I1c754、b/231495122)
- 將公用程式功能移至執行階段 (I4f729)
修正錯誤
- TextLayoutResult.getLineForOffset不會擲回。(Idc5d6、b/235876324)
外部貢獻
- 已加入新的 API WindowInfo.keyboardModifiers,用來在可組合函式內或透過 snapshotFlow 觀察其狀態 (Icdb8a)
1.2 版
1.2.1 版本
2022 年 8 月 10 日
發布 androidx.compose.ui:ui-*:1.2.1。查看 1.2.1 版的修訂項目。
修正錯誤
- 修正了檢查器中的空值指標 (b/237987764)
- 修正了在檢查器中記錄期間發生的類別層級轉換例外狀況 (b/235526153)
1.2.0 版
2022 年 7 月 27 日
發布 androidx.compose.ui:ui-*:1.2.0。1.2.0 版包含此連結所列的修訂項目。
自 1.1.0 版以來的重要變更
- 改善焦點周遊功能: - 使用新的 BeyondBoundsLayout核心 API 時,Lazy 清單的焦點導向捲動功能現可正常運作
- 在 FocusOrder和FocusProperties中新增自訂行為 API
- 改善使用實體鍵盤或電視遙控器時的行為表現
 
- 使用新的 
- 適用於以下項目的新 API: - 視窗插邊
- 手勢驅動、無限和版面配置動畫適用的核心基本功能
- GraphicsLayer功能,包括- RenderEffect
 
- 多項錯誤修正和效能改善項目 
1.2.0-rc03 版
2022 年 6 月 29 日
發布 androidx.compose.ui:ui-*:1.2.0-rc03。查看 1.2.0-rc03 版的修訂項目。
- 自 1.2.0-rc02 以來沒有變更。
1.2.0-rc02 版
2022 年 6 月 22 日
發布 androidx.compose.ui:ui-*:1.2.0-rc02。查看 1.2.0-rc02 版的修訂項目。
1.2.0-rc01 版
2022 年 6 月 15 日
發布 androidx.compose.ui:ui-*:1.2.0-rc01。查看 1.2.0-rc01 版的修訂項目。
API 變更
- Compose 程式庫中的介面現已使用 jdk8 預設介面方法建立 (I5bcf1)
- 已加入高階函式至 KeyInjectionScope以供在按住其他鍵時按下插入鍵,或在切換開啟時使用。這些函式包括withKeysDown、withKeysToggled等。另外也加入了可檢查特定中繼鍵是否無法使用的屬性,舉例來說,isCtrlDown可檢查 Ctrl 鍵是否無法使用。如需各函式的文件,請參閱KeyInjectionScope。(I9f6cd、b/229831515)
- 我們推出了實驗性 OverscrollEffect,可以支援自訂過度捲動功能,以及接受Modifier.scrollable的超載。
- 實驗性 LocalOverScrollConfiguration已從foundation.gesture移至基礎套件,並重新命名為「LocalOverscrollConfiguration」(If19fb、b/204650733)
- 將 runComposeUiTestWithoutActivity {}重新命名為runEmptyComposeUiTest {},使其與createEmptyComposeRule()一致 (I6fed7)
1.2.0-beta03 版
2022 年 6 月 1 日
發布 androidx.compose.ui:ui-*:1.2.0-beta03。查看 1.2.0-beta03 版的修訂項目。
API 變更
- 將 pressKeyTimes、isCapsLockOn和友元新增至KeyInjectionScope。此外,此 API 現可支援滑鼠和鍵盤的組合插入模式,例如按下滑鼠按鈕時伴隨按住的中繼鍵。(I4c8da、b/229831515)
- 新增了插入鍵事件支援。使用 performKeyInput傳送鍵事件,或是在performMultiModalInput的多重模組輸入手勢中透過MultiModalInjectionScope的key屬性傳送這些事件。如需 API 的說明文件,請參閱KeyInjectionScope。(Ic5000、b/229831515)
- 新增 GoogleFont.Provider.AllFontsListUri,可用於擷取 Android 支援的 Google Fonts 標準網際網路來源。
- 改善 GoogleFonts 在撰寫時無法載入的錯誤訊息。(I0416c)
修正錯誤
- 將 InputEventChange事件加入至速率追蹤器時,我們會考慮使用差異值而非位置,因此即使目標元素已移動,系統仍會確保所有案例的計算速度正確 (I51ec3、b/216582726、b/223440806、b/227709803)
- 現在只要從快速設定方塊中切換 Show Layout Bounds設定,系統就會立即為可組合項套用設定,不必離開再重新進入活動。(I843d5、b/225937688)
- 無障礙功能字串查詢不會觸發字型載入。之前如果 FontFamily.Resolver遭到覆寫,系統就會嘗試載入StyleSpans的字型,並且造成當機。(I4609d)
- 當游標移到文字欄位結尾時,按下向前刪除鍵時不會再當機。
- 現在 DeleteSurroundingTextCommand和DeleteSurroundingTextInCodePointsCommand的建構函式引數不得為負數。(Ica8e6、b/199919707)
1.2.0-beta02 版
2022 年 5 月 18 日
發布 androidx.compose.ui:ui-*:1.2.0-beta02。1.2.0-beta02 版包含此連結所列的修訂項目。
API 變更
- 在其他預覽類型中提供重複使用功能 (I19f39)
修正錯誤
- ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer已重新命名為- DisposeOnDetachedFromWindowOrReleasedFromPool,以貼切反映棄置發生的情況,而不是棄置未發生的情況。(If15ca)
1.2.0-beta01 版
2022 年 5 月 11 日
發布 androidx.compose.ui:ui-*:1.2.0-beta01。查看 1.2.0-beta01 版的修訂項目。
新功能
- 這是 1.2 版的第一個 Beta 版!
API 變更
- 新增了實驗性的 BeyondBoundsInterval,可供LazyList的自訂實作用於版面配置範圍超出可見邊界的情況。(Ifabfb、b/184670295)
- Modifier.composed的索引鍵版現在是穩定版本 API。(Ie65e4、b/229988420)
- 簡化了 rememberNestedScrollConnectionAPI,以便使用組合本機值取得目前檢視區塊資訊。(I67ca7)
- @ComposableTargetMarker註解和標示- @ComposableTarget的註解現在可藉由加上- @file前置字串,於檔案範圍使用。如果在檔案範圍使用目標註解,編譯器將假設檔案中的所有可組合函式都是用來指定相關 Applier。舉例來說,使用- @file:UiComposable即等同於宣告所有- @Composable函式皆指定 Compose UI Applier。如果函式需要指定其他套用器,必須針對想指定的套用器明確提供目標標記註解 (I40804)。
- 推出了實驗性、獨立於平台的新測試 API: - interface ComposeUiTest和- fun runComposeUiTest(block: ComposeUiTest.() -> Unit),可用來執行 Compose UI 測試,而不需要使用- TestRule。如要在不使用- ComposeTestRule的情況下執行測試,請將測試以 lambda 形式傳遞至- runComposeUiTest,並使用接收範圍- ComposeUiTest中的方法和成員 (跟- ComposeContentTestRule中的完全相同)。- 新增 Android 專用的 - interface AndroidComposeUiTest和- fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit),以便提供基礎 Activity 的存取權限,與- AndroidComposeTestRule類似。如需更進一步的控管權限,您可以自行將- class AndroidComposeUiTestEnvironment執行個體化。- 電腦版實作是 - class DesktopComposeUiTest,但目前並未提供電腦版專用的執行函式。- 如要將測試從 - ComposeTestRule遷移至- ComposeUiTest,可以參考下方的 Android 範例。從:- @RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }- 到: - @RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
- 現階段, - ComposeContentTestRule和- ComposeTestRule不會從- ComposeUiTest擴充,這表示在- TestRule介面上還無法呼叫- ComposeUiTest中的擴充功能函式。當- ComposeUiTest升級為穩定版 API 後,- ComposeContentTestRule和- ComposeTestRule就會變成可從- ComposeUiTest擴充。(Ib4e90)
- LineHeightBehavior已重新命名為- LineHeightStyle。
- LineVerticalAlignment已重新命名為- LineHeightStyle.Alignment。
- LineHeightTrim已重新命名為- LineHeightStyle.Trim。
- 移除了 - LineHeightStyle中的預設建構函式值 (I582bf、b/181155707)
- 為 - TextStyle和- SpanStyle新增了- Brush,可讓您使用漸層顏色來繪製文字。(I53869、b/187839528)
- LineHeightBehavior的- trimFirstLineTop、- trimLastLineBottom屬性已變更為單一列舉:- LineHeightTrim。- LineHeightTrim擁有由兩個布林值定義的 4 種狀態值:- FirstLineTop、- LastLineBottom、兩者和無 (Ifc6a5、b/181155707)
- 為 - TextStyle和- ParagraphStyle新增了- LineHeightBehavior。- LineHeightBehavior可控制是否要在第一行頂端和最後一行底端套用行高,以及定義- TextStyle(lineHeight)所提供空間中的行對齊方式。- 舉例來說,您可以透過 - LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false),獲得與 CSS 定義行為類似的結果。
- trimFirstLineTop、- includeFontPadding設定只有在- trimLastLineBottom設定為 false 時才能正確運作。(I97332、b/181155707)
- 將 - PlatformParagraphStyle.lerp和- PlatformSpanStyle.lerp函式變更為頂層函式 (I9a268)
修正錯誤
- PointerInputChange::copy說明文件現在會正確指出其為淺層副本。(I182f5)
- 高度受限且無法納入所有文字行 (Ie528c、b/168720622) 時支援刪節號
- 啟用了預設的 includeFontPadding。您可以使用TextStyle.platformTextStyle屬性關閉includeFontPadding。我們即將變更預設行為。但在此之前,這種做法能以較好的方式整合行高改善項目 (aosp/2058653),並解決TextField裁剪問題 (I01423、b/171394808)。
外部貢獻
- 現在垂直捲動時,就會在 Android 上反轉 MouseInjectionScope.scroll(delta = someDelta)(如果 someDelta 為正值,則會向下捲動) (Ifb697、b/224992993)
1.2.0-alpha08 版
2022 年 4 月 20 日
發布 androidx.compose.ui:ui-*:1.2.0-alpha08。查看 1.2.0-alpha08 版的修訂項。
API 變更
- 為 pluralStringResource函式加上實驗性質標示以利演進,於日後支援更完善的國際化體驗。(If24e4)
- Paragraph 和 MultiParagraph 現在接受 Constraints 參數。傳送 Constraints.maxHeight目前為免人工管理,但未來會進行一些計算,例如根據高度進行刪節。(I6afee、b/168720622)
- SubcomposeSlotReusePolicy.getSlotsToRetain()可接受自訂 MutableSet 類別,該類別不允許在其中新增項目。(Icd314)
- PointerIcon 現在更名為 @Stable介面 (I9dafe)
- 已從 PointerInputChange淘汰部分消耗功能 (減少或定位)。可使用consume()徹底使用變更。可使用isConsumed判斷其他使用者是否曾經使用過該變更。
- PointerInputChange::copy()現在會一律建立淺層複本。這表示只要使用一份複本,系統就會使用- PointerInputChange的複本。如要建立未繫結的- PointerInputChange,請改用建構函式。(Ie6be4、b/225669674)
- 按照 Compose > View 方向,啟用 Compose 和 View 之間的巢狀捲動互通功能。這樣一來,Compose 父項即可從巢狀捲動檢視畫面接收巢狀捲動差異。(If7949、b/174348612)
- 新增 SemanticsProperty testTagsAsResourceId,用於讓 Compose 符合針對 View 系統設計的 UIAutomator 測試。(I39c20)
- 使用 FontFamily.SansSerif時,可在 Android 的系統字型中顯示所有可用權重。這會在 API 21-28 內部使用備用廣告字型名稱,例如 Santa-serif-medium。由於之前 API 21-28 上僅支援 400 和 700 粗細,因此這是行為變更。(I380fe、b/156048036、b/226441992)
- Paragraph 和 Multiparagraph 指示已將位置引數重新排列至選用引數之前。(Idafaa)
- AndroidFont現在會採用 typefaceLoader 做為建構函式參數。(I2c971)
1.2.0-alpha07 版
2022 年 4 月 6 日
發布 androidx.compose.ui:ui-*:1.2.0-alpha07。查看 1.2.0-alpha07 版的修訂項。
API 變更
- 新增 Snapshot.withoutReadObservation { ... }函式。使用者可以透過該函式執行傳遞的 lambda,而無需訂閱在這個區塊中讀取的狀態值變更。如果您想利用以快照為基礎的安全執行緒寫入/讀取作業來提高成效,同時希望能夠在不造成不必要重組或重新測量的情況下讀取這個值,這項變更就非常實用 (I9f365、b/214054486)
- ComposeView的- consumeWindowInsets擴充功能屬性可讓開發人員停用 Android- WindowInsets的消耗。這樣一來,階層中的個別- ComposeViews就能分別套用- WindowInsets,不會彼此干擾。(I0ef08、b/220943142)
- 將 KeyboardType.Decimal新增為Keyboard.Number的替代項,專門用於在 IME 中加入小數分隔符。(Iec4c8、b/209835363)
- PointerEventType.Scroll和- PointerEvent.scrollDelta現在是穩定的 API (I574c5、b/225669674)
- 針對合作執行的 View 類別,啟用 View 和 Compose 之間的巢狀捲動互通功能。這表示 Compose 現在可以將捲動差異調派給 (合作執行的) View 父項。(I5d1ac、b/174348612)
- 更新了 FontFamily.Resolver,以整合全系統中的粗體文字無障礙設定 (I6c1e7)
- Font(AssetManager, String, ...)已淘汰,並取代為- Font(String, AssetManager, ...)。這是實驗性質的 API。(I1c7a4)
- 新增字型描述元 Font(DeviceFontFamilyName),可選擇在備用字型鏈中查詢系統已安裝的字型。(I30468、b/219754572)
- 為 TextStyle/ParagraphStyle 中的 includeFontPadding新增臨時相容性設定。includeFontPadding可以透過TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))變更。這是臨時設定選項,用來啟用遷移,將來會移除 (If47be、b/171394808)。
- 新增 GoogleFont.Provider.isAvailableOnDevice擴充功能以協助偵錯 (I64e31)。
- 新增 GoogleFont.Provider建構函式,與@ArrayRes搭配使用 (Ic5ee1、b/225984280)
- Compose GoogleFont現改名為- Font(GoogleFont),但 API 會以其他方式保持穩定。(I125f2)
修正錯誤
- 為 Material/Scaffold 新增了 Lint 檢查,確保使用的是內部邊框間距 (Ifb111)
1.2.0-alpha06 版
2022 年 3 月 23 日
發布 androidx.compose.ui:ui-*:1.2.0-alpha06。查看 1.2.0-alpha06 版的修訂項目。
API 變更
- 新增 RequestFocus語意動作,用於要求聚焦於可聚焦的目標 (I17b71)。
- 更新了向量可繪項目剖析,以支援自動鏡像,只要目前的版面配置方向為 RTL 就能翻轉 VectorPainter的內容 (I79cd9、b/185760237)。
- 將陰影/環境色彩更新為 - Modifier.graphicsLayer的結尾參數,確保 API 相容性 (I3f864、b/160665122)
- 針對 - GraphicsLayerScope中的陰影/環境色彩新增預設實作,確保進行非破壞性 API 變更
- 在 RSB 事件中新增了事件時間 (Ief8ae) 
- FocusOrder現已合併至- FocusProperties,- focusProperties()現在具備- focusOrder()的所有功能。- FocusOrder和- focusOrder()已淘汰。接受- focusRequester的- focusOrder()應替換為- focusRequester()修飾符,並與- focusProperties()搭配使用。如此一來,修飾符就能更妥善區隔問題 (I601b7)。
- 現在,如果同時升級 - RecyclerView和- Compose,可為包含 Compose 檢視區塊做為子項的 RecyclerView 大幅改善捲動效能。
- 新增 - ViewCompositionStrategy.Default做為擷取內建預設策略的方法
- 新增 - ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer,這是新的預設策略,可正確處理 RecyclerView 等集區容器。(If7282)
- 新增了使用 @Preview 為註解類別加上註解的支援機制,做為新增 Multipreview 功能的第一步。這類註解可加註於可組合方法或其他註解類別,這樣這些方法或類別就能視為間接加上了指定的 @Preview 註解。(I12eff) 
- 在 @Preview 裝置清單中新增參照裝置 (I071c9) 
修正錯誤
- 更新了向量圖形 API,以便使用適當的可組合註解 @VectorComposable,而非 @UiComposable (I942bc)
- 從 AnnotatedString.Builder.withStyle中移除 crossinline (If84d5)
外部貢獻
- compose-ui:在 GraphicsLayerScope中新增ambientShadowColor和spotShadowColor屬性 (I1ba1a、b/160665122)
- 系統現在可透過 pluralStringResource函式支援複數資源。(Ib2f23、b/191375123)
1.2.0-alpha05 版
2022 年 3 月 9 日
發布 androidx.compose.ui:ui-*:1.2.0-alpha05。查看 1.2.0-alpha05 版的修訂項目。
API 變更
- TextToolbar現在會以 lambda 引數取代- ActionCallback。(Ib2eb9、b/197950089)
- 根據 Tiramisu DP2 (I0cbb7) 更新核心和應用程式是否可為空值的作法
- 經過測量的介面現在會顯示 parentData 屬性 (I3313f)
- Modifier.onPlaced和- OnPlacedModifier介面現已穩定運作。(Ib5482)
- 太棒了!現在 Compose 動畫支援「開發人員選項」中的「動畫影片長度比例」設定 (I5a4fc、b/161675988)
- 新增了 BeyondBoundsLayout區域修飾詞 (If8b51、b/184670295)
- 文字:includeFontPadd 目前預設為停用狀態。系統會處理 includeFontPadding=false造成的剪輯問題,而不會針對較高指令碼執行剪輯。(I31c84、b/171394808)
修正錯誤
- 如果您嘗試在已有內容的情況下設定內容,ComposeContentTestRule.setContent現在會擲回IllegalStateException。(I888a5、b/199631334)
- 修正在 Android 上讀取剪貼簿時,由剪貼簿內容造成的當機問題。(I06020、b/197769306)
- 改善 RSB 滾動樣本。(I6a596)
外部貢獻
- 已更新為使用 Kotlinx 協同程式 1.6.0 (I3366d)
1.2.0-alpha04 版
2022 年 2 月 23 日
發布 androidx.compose.ui:ui-*:1.2.0-alpha04。查看 1.2.0-alpha04 版的修訂項。
API 變更
- 新增了 - ComposableTarget、- ComposableTargetMarker和- ComposableOpenTarget,這樣如果所呼叫的可組合函式指定了不適用的 Applier,就能在編譯時回報。- 在多數情況下,Compose 編譯器外掛程式能夠推論出註解,因此直接使用這些註解的情形應該相當罕見。無法推論的案例包括建立及使用自訂 Applier、抽象的可組合函式 (例如介面方法)、欄位,或是屬可組合 lambda 的全域變數 (本機變數和參數為推論得出),或在使用 - ComposeNode或相關的可組合函式時。- 對於自訂 Applier,呼叫 - ComposeNode或- ReusableComposeNode的可組合函式需要為函式和任何可組合的 lambda 參數類型新增- ComposableTarget註解。不過,與其直接使用- ComposableTarget,建議您建立以- ComposableTargetMarker加上註解的註解,再使用已標示的註解。使用- ComposableTargetMarker加上標示的可組合註解,等同於使用屬性類別完整名稱做為套用器參數的- ComposbleTarget。如需- ComposableTargetMarker的使用範例,請參閱- anroidx.compose.ui.UiComposable。(I38f11)
- Font(resId, ...)現在可以在穩定版 API 上使用 loadingStrategy。(Ief3d2)
- FontLoadingStrategy現在是穩定版 API。(I1ee35、b/174162090)
- 支援在 Text 中載入非同步字型。(I77057、b/214587005) 
- 新增橋接設定 API,可將自訂 - Font.ResourceLoader轉換成- FontFamily.Resolver。(Ia0060)
修正錯誤
- 提供的 FontFamily.Resolver會傳送至子元件,例如彈出式視窗。
- 提供的 Font.ResourceLoader會傳送至子元件,例如彈出式視窗 (I48fa5)。
1.2.0-alpha03 版
2022 年 2 月 9 日
發布 androidx.compose.ui:ui-*:1.2.0-alpha03。查看 1.2.0-alpha03 版的修訂項。
API 變更
- 不會再呼叫 TextInputSession和TextInputService中的notifyFocusedRect方法,此方法現已淘汰。請改用BringIntoViewRequester(Ia4302、b/192043120、b/216842427、b/178211874)。
- 在 RenderNode虛設常式類別中加入destroyDisplayListData方法 (I1e659、b/216660268)
- 加入新的 API,可預先評估您事先撰寫的 SubcomposeLayout子項。(I857ea)
- 新增了 - movableContentOf,用於將可組合 lambda 轉換為另一種 lambda,後者會將相關狀態和對應的節點移至呼叫該 lambda 的新位置。如果先前的呼叫離開組合,狀態會暫時保留,如果對 lambda 的新呼叫進入組合,狀態和相關聯的節點就會移至新呼叫的位置。如未新增新呼叫,系統會永久移除對應的狀態。同時別忘了,觀察器會收到相關通知。- 如果在相同組合中多次呼叫 - movableContentOflambda,系統會為每個呼叫建立新的狀態和節點。隨著呼叫退出組合及新呼叫進入組合,系統會按照呼叫順序,將對應的狀態從第一個退出的呼叫移至隨後進入的呼叫。新呼叫未宣告的所有狀態都會永久移除 (Ib4850)。
- FontFamilyResolver現可透過- LocalFontFamilyResolver.current使用
- 新增了 - createFontFamilyResolver(context)和- createFontFamilyResolver(context, coroutineScope),以便在撰寫用途外建立新的 FontFamily 解析器。
- Paragraph 和 MultiParagraph 現在採用 - FontFamily.Resolver
- TextLayoutResult.layoutInput.fontFamilyResolver現在包含此版面配置使用的解析器,並淘汰不再使用的- TextLayoutResult.layoutInput.resourceLoader(Id5a45、b/174162090)。
- 支援非同步和選用字型載入,並支援備用行為。這個文字由 Text 和 TextField 使用,並透過 FontFamilyResolver 公開 
- 支援透過 - FontFamilyResolver.preload預先載入字型
- FontFamilyResolver.setAsyncLoadContext可讓您設定用於載入非同步字型的全域協同程式結構定義。(I87fe8、b/174162090)
- 新增 - AndroidFont這個新的低階 API,可在 Android 上提供新型的字型資源描述元。其用途包括從特定應用程式後端載入字型、選擇找出裝置上預先安裝的字型,或是從目前字型工廠未提供的資源載入字型。
- 擴充 - Font.ResourceLoadedAPI,支援選用和非同步字型載入功能。我們不建議應用程式開發人員直接使用這個 API。如要新增新型字型,請參閱- AndroidFont。
- Font.AndroidResourceLoader擴充功能函式可讓您在組合外建構- Font.ResourceLoader。
- 將 - loadingStrategy參數新增至以資源為基礎的字型,以便在資源字型參照可下載的字型 XML 時進行非同步載入。(Ie5aea、b/174162090)
- Typeface(FontFamily)建構函式已經淘汰,之前用於預先載入字型,而且最多可能需要 10 秒才能下載字型。因此,處理可下載的字型時,這個呼叫可能會封鎖 10 秒。改用- FontFamilyResolver.preload。
- fontResource(FontFamily): Typeface已淘汰,之前用於預先載入字型,而且最多可能需要 10 秒才能下載字型。請改用- FontFamilyResolver.preload(If8e7c、b/174162090)
- 接受 - maxSlotsToRetainForReuse的- SubcomposeLayoutState建構函式現已淘汰,替換為接受- SubcomposeSlotReusePolicy的新建構函式:新版介面可讓您更精準控制要保留哪些運算單元供日後重複使用 (I52c4d)。
- 將 - Color中的 HSV 和 HSL 函式公開為非實驗 API。Oklab 色域現已改為公開 API。(I08fb6、b/180731008)
- 淘汰了 - AndroidComposeTestRule.AndroidComposeStatement並非公開 API,對您來說沒有任何實質功能。(Ibc46b)
- 內部產生的 kt 類別重新命名 (Ia0b9e、b/174162090) 
- 移除了 - FontLoadingStrategy.values(I42a9d、b/174162090)
- 全域字型載入器現在稱為 - FontFamilyResolver。(I4f773、b/174162090)
- 使用電腦版的新字型載入系統。(I9ce5c、b/174162090) 
- FontFamily.Resolver.resolve會傳回- State<Any>(I4406c、b/174162090)
修正錯誤
- 當焦點在 TextField 上時,TextField 現在會保持在鍵盤上方;如果軟輸入模式設為 ADJUST_PAN,則會顯示鍵盤 (I8eaeb、b/190539358、b/192043120)。
- 電腦使用 FontFamily.Resolver的本機元素
- 電腦版 FontLoader已經淘汰
- 新增電腦版適用的新 createFontFamilyResolver工廠函式 (I6bbbb、b/174162090)
- 切換文字欄位時,螢幕鍵盤輸入類型不會再閃爍。(I1bf50、b/187746439)
1.2.0-alpha02 版
2022 年 1 月 26 日
發布 androidx.compose.ui:ui-*:1.2.0-alpha02。1.2.0-alpha02 版包含此連結所列的修訂項目。
API 變更
- 為具有旋轉側邊按鈕的 Wear 裝置新增 Modifier.onRotaryScrollEvent()和Modifier.onPreRotaryScrollEvent()(I18bf5、b/210748686)
- 新增實驗性 View.createLifecycleAwareRecomposer擴充功能 (I0cde6)
外部貢獻
- PointerEvent.scrollDelta.y現在可在 Android 上反轉 (現在將滑鼠滾輪往右移,會傳回 1,而非 -1) (Ia9811)
1.2.0-alpha01 版
2022 年 1 月 12 日
發布 androidx.compose.ui:ui-*:1.2.0-alpha01。查看 1.2.0-alpha01 版的修訂項。
API 變更
- 淘汰了 FontFamily.canLoadSynchronously。這個屬性沒有語意含義。(Ica5ef)
- 將 ID 欄位新增至 CompositionData,以在版面配置檢查器中產生不變的 ID。(Ic116e)
- 已將 Wear OS 裝置 ID 新增至預覽裝置清單 (I93232)
依附元件更新
- 現在依附於 Kotlin 1.6.10。
1.1 版
1.1.1 版
2022 年 2 月 23 日
發布 androidx.compose.ui:ui-*:1.1.1。1.1.1 版包含此連結所列的修訂項目。
修正錯誤
- 修正 androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList中的NullPointerException(aosp/1947059、b/206677462)
- 修正在 Android 上讀取剪貼簿時,由剪貼簿內容造成的當機問題 (I06020、b/197769306)
- 修正 LazyVerticalGrid中的 RTL (aosp/1931080、b/207510535)
1.1.0 版
2022 年 2 月 9 日
發布 androidx.compose.ui:ui-*:1.1.0。查看 1.1.0 版的修訂項。
自 1.0.0 版以來的重要變更
1.1.0-rc03 版
2022 年 1 月 26 日
發布 androidx.compose.ui:ui-*:1.1.0-rc03。1.1.0-rc03 版包含此連結所列的修訂項目。
修正錯誤
- 更新為可支援 Compose Material 1.1.0-rc03
1.1.0-rc01 版
2021 年 12 月 15 日
發布 androidx.compose.ui:ui-*:1.1.0-rc01。查看 1.1.0-rc01 版的修訂項。
修正錯誤
- 修正了導致無障礙捲動操作失敗的錯誤 (I7cbfb)
- 如果 HardwareRenderer.isDrawingEnabled()是false,只要在呼叫期間啟用,SemanticsNodeInteraction.captureToImage()現在也能正常運作 (Idf3d0)
1.1.0-beta04 版
2021 年 12 月 1 日
發布 androidx.compose.ui:ui-*:1.1.0-beta04。查看 1.1.0-beta04 版的修訂項。
新功能
- 已更新為與 Kotlin 1.6.0相容
API 變更
- 清除了 androidx.core.view中的空值 (I7078a、b/204917439)
- 新增了實驗性 API,可讓使用者將整個端點使用 PointerInputchange 或確認是否已被使用。(I2e59d)
- 新增 UI 圖層中滑鼠滾輪事件的支援。(Ia14eb、b/198214718)
- 新增實驗性 Modifier.composed超載,允許索引鍵進行相等性的比較,而且符合略過最佳化的資格。(Ice799、b/205851704)
- ComposeNotIdleException現在由- Exception擴充,而不是直接由- Throwable。請注意,這表示原本擷取- Exception的擷取子句現在可能會擷取- ComposeNotIdleException,而這些子句先前針對類似情況並不會這麼做 (I9c217)。
修正錯誤
- 修正問題:輸入法編輯器瀏覽權限變更時,文字控點不會移動 (I25f2e)。
1.1.0-beta03 版
2021 年 11 月 17 日
發布 androidx.compose.ui:ui-*:1.1.0-beta03。1.1.0-beta03 版包含此連結所列的修訂項目。
API 變更
- 新增修飾符 Modifier.onPlaced,藉此觀察位置變更。您可以根據觀察到的位置變更,對子項修飾符的偏移進行額外變更 (I558fd)。
- 移除了 InjectionScope.flush()和InjectionScope.dispose()。所有事件的清除作業,以及處理範圍的棄置作業,現在會在已呼叫的 perform*Input() 方法結尾進行,就跟先前一樣。(I2bed8)
- 移除了 MultiModalInjectionScope.Touch和MultiModalInjectionScope.Mouse。如要插入多模式手勢的觸控和滑鼠事件,現在您可以使用MultiModalInjectionScope.touch()和MultiModalInjectionScope.mouse(),而這兩種都接受使用有該形式接收器範圍的 lambda。(Idde18)
修正錯誤
- 系統現在會計算 TouchInjectionScope.swipeWithVelocity中durationMillis的預設值,以執行滑動操作。(I19deb)
1.1.0-beta02 版
2021 年 11 月 3 日
發布 androidx.compose.ui:ui-*:1.1.0-beta02。查看 1.1.0-beta02 版的修訂項。
API 變更
- 新增了實驗性的 BringIntoView API,可讓您傳送要求給父項,請父項透過捲動將項目帶入檢視區塊 (Ib918d、b/195353459)
- 新增支援工具的 Animation API。具體來說,這類 API 可讓工具檢查轉換中的動畫和動畫設定。(I4116e)。
外部貢獻
- 新增了 Modifier.pointerHoverIcon (I95f01)
1.1.0-beta01 版
2021 年 10 月 27 日
發布 androidx.compose.ui:ui-*:1.1.0-beta01。查看 1.1.0-beta01 版的修訂項。
API 變更
- 新增了實驗性 BringIntoViewAPI,讓您可以傳送要求至父項,使其可捲動項目至檢視畫面中 (Ib918d、b/195353459)
- 新增支援工具的 Animation API。具體來說,這類 API 可讓工具檢查轉換中的動畫和動畫設定。(I4116e)
1.1.0-alpha06 版
2021 年 10 月 13 日
發布 androidx.compose.ui:ui-*:1.1.0-alpha06。查看 1.1.0-alpha06 版的修訂項。
API 變更
- 從 ViewRootForInspector和LayoutInfo.ownerViewId移除ExperimentalComposeUiApi(I5c2e3)
- 新增 Layout 的無子項超載,藉此提高效率 (Ib0d9a)
- 從必須跨模組呼叫的 Composer 方法中移除 InternalCompilerApi(I1aa0b)
- SemanticsNodeInteraction.performSemanticsAction現在會傳回- SemanticsNodeInteraction,系統會在後者呼叫函式。(I9e5db)
- 新增了 LocalInputModeManager CompositionLocal 以偵測 TouchMode/NonTouchMode。(I6a83c、b/175899786)
- 新增了 viewConfiguration: ViewConfiguration至LayoutInfo,讓取用端可取得長按逾時等的正確值。(I76ca6)- 新增了 InjectionScope至viewConfiguration: ViewConfiguration,讓測試能夠根據長按逾時或觸控界區等因素調整插入輸入內容。
- 根據 InjectionScope.viewConfiguration中的值,針對觸控和滑鼠輸入調整了長按和輕觸兩下操作的預設時間長度。
 
- 新增了 
- 根據 ExposedDropdownMenuBox 的 ExposedDropdownMenu 實作,且內部有 TextField 和 DropdownMenu (If60b2)
- 在 PopupProperties 中新增 dismissOnOutsideClick,取代已淘汰的 dismissOnClickOutside。新屬性可接收點擊位置與錨點邊界,讓您能夠更精細地控制是否要叫用 onDismissRequest。舉例來說,如果想防止錨點因輕觸到而關閉,這就能派上用場。- updateAndroidWindowManagerFlags 已新增至 PopupProperties,讓您能以低階的方式控制從彈出式視窗傳送給 Android WindowManager 的標記。lambda 的參數則是從產生 WindowManager 標記的 PopupProperties 值計算得出的標記:例如 focusable。lambda 的結果將是最終標記,並會傳遞給 Android WindowManager。根據預設,updateAndroidWindowManagerFlags 不會變更以參數計算的標記。此 API 僅可於彈出式視窗有非常具體的行為規定時使用,因此請謹慎使用。(I6e9f9)
 
- Recomposer.state已經淘汰並由- Recomposer.currentState取代,藉此將類型變更為 StateFlow (Ic2ab3、b/197773820)
- 在 InjectionScope中新增了flush()和dispose(),供您在需要立即清除所有排入佇列的事件,或要處理範圍時使用。(Ifb73a)
- 新增了 performScrollToNode(matcher: SemanticsMatcher),這會根據指定配對工具的配對結果,將可捲動的容器捲動至配對內容。(Ic1cb8)
- InjectionScope現已實作- Density,允許您在- performTouchInput和好友之間輕鬆轉換 px 和 dp。(I8fe1f)
修正錯誤
- AndroidView 現在會透過 ViewTreeLifecycleOwner 和 ViewTreeSavedStateRegistryOwner 將 LocalLifecycleOwner 和 LocalSavedStateRegistryOwner 傳輸到檢視畫面中。(I38f96、b/179708470)
- 修正 WearOS SwipeToDismissBox 有時無法處理滑動手勢的問題。(I9387e)
- 插入輸入事件之間的預設時間已從 10 毫秒變更為 16 毫秒。這項操作可能會變更執行輸入手勢的測試結果,例如特定滑動。(I829fd)
1.1.0-alpha05 版
2021 年 9 月 29 日
發布 androidx.compose.ui:ui-*:1.1.0-alpha05。查看 1.1.0-alpha05 版的修訂項。
API 變更
- 新增了修飾詞之間通訊的支援 (Id5467、b/198826874)
- 將實驗性的歷來指標新增至 PointerEventChange。(Ic1fd8、b/197553056、b/199921305)
- 將 density: Density和layoutDirection: LayoutDirection新增至LayoutInfo。這樣LayoutInfo的取用端就能正確解讀LayoutInfo中顯示的維度和位置。(I002f1)
- 新增了插入滑鼠事件的實驗性支援。使用 performMouseInput即可開始傳送滑鼠事件,或在以performMultiModalInput做出多模組輸入手勢時,透過MultiModalInjectionScope的Mouse屬性傳送滑鼠事件。如需可用 API 的說明文件,請參閱MouseInjectionScope。(Iaa4a8、b/190493367)
修正錯誤
- 修正了可捲動元件 (包括延遲和非延遲) 在捲動方面的無障礙功能支援 (I6cdb0)
- 已改善 TouchInjectionScope.swipeWithVelocity。現在可接受更廣泛的輸入變數,但如果無法建立滑動手勢,系統會建議更改後的輸入內容 (I40fbe、b/182477143)
1.1.0-alpha04 版
2021 年 9 月 15 日
發布 androidx.compose.ui:ui-*:1.1.0-alpha04。查看 1.1.0-alpha04 版的修訂項。
API 變更
- PointerEvent現在含有- PointerEventType,可支援懸停事件 (I091fa)。
- 允許子項接受父項指標輸入範圍以外的指標輸入資料。父項可以使用屬性 PointerInputScope.alwaysInterceptChildEvents 攔截呼叫 (I9eae3、b/192479655)
- 淘汰了 performGesture和GestureScope,並已由performTouchInput和TouchInjectionScope取代。(Ia5f3f、b/190493367)
- 將 touchBoundsInRoot加入含有最低觸控目標尺寸的SemanticsNode,讓開發人員能確保觸控目標符合無障礙功能的最低要求 (I2e14b、b/197751214)。
- 重做可檢查實作 (I927bc、b/191017532)
- 將可檢查的參數名稱變更為組合 (I3a482、b/191017532)
- 採用 - performTouchInput和- TouchInjectionScope做為- performTouchInput和- TouchInjectionScope的替換方法,藉此提供其他模式 (例如滑鼠)- TouchInjectionScope與- GestureScope採用的方法相同,但- movePointerTo和- movePointerBy除外,系統會將其重新命名為- updatePointerTo和- updatePointerBy。所有其他方法都相同。- TouchInjectionScope的行為幾乎與- GestureScope相同,只有兩個小細節需注意:- 傳送下移事件的同時,如果指標在未傳送移動事件的情況下移動 (也就是使用了 updatePointerTo(),但未使用move(),然後呼叫down()),先前的實作會將事件時間提前並傳送移動事件,然後再傳送下移事件。新的實作方式仍會傳送移動事件,但在這個特定情境中並不會將事件時間提前。
- 傳送上移事件的同時,如果指標在未傳送移動事件的情況下移動 (與上述情況類似),先前的實作會將事件時間提前並傳送移動事件,然後再傳送上移事件。新的實作方式都不會改變:指標的新位置只會透過上移事件反映。
 - 最後, - TouchInjectionScope會採用新的方法- currentPosition(pointerId: Int)來取得指定指標的目前位置。(If1191、b/190493367)
- 傳送下移事件的同時,如果指標在未傳送移動事件的情況下移動 (也就是使用了 
修正錯誤
- 在剪輯時,允許觸控目標邊界超出剪輯區域,以符合最小觸控目標要求。(I43e10、b/171509422)
- 在 Android 12 裝置中新增延伸越區捲動支援。(Iccf3c、b/171682480)
1.1.0-alpha03 版
2021 年 9 月 1 日
發布 androidx.compose.ui:ui-*:1.1.0-alpha03。1.1.0-alpha03 版包含此連結所列的修訂項目。
新功能
- 更新 Compose 1.1.0-alpha03,使其依附於 Kotlin1.5.30。(I74545)
API 變更
- 新增了 Modifier.inspectable以納入其他修飾符 (I1909b、b/191017532)
- 新增了 BlurredEdgeTreatmentAPI,以簡化剪輯作業的用途,並結合常用的短片標記和 TileModes 組合。最常見的用途有二,一種是讓模糊處理的內容顯示在原始內容邊界外,並以透明黑色模糊處理這些邊界外的區域,另一種是針對擴展至內容邊界外的模糊處理核心,依據內容邊界來剪輯內容,而內容邊界會對最近邊緣進行取樣。(I6b4b7、b/166927547)
- 在 Compose 電腦版中新增了對 RenderEffect 的支援。推出 OffsetEffect 以及模糊處理修飾詞,讓您可輕鬆地為一部分的組合階層導入模糊視覺效果。(I0f6aa、b/166927547)
- 推出 RenderEffect API,供您選擇在 Modifier.graphicsLayer上加以設定,以變更圖層本身的內容。這可用於模糊處理可組合項的內容,以及組合階層中的子項可組合項。(I47c4d、b/166927547)
- AwaitPointerEventScope 現在支援 withTimeout() 和 withTimeoutOrNull() (I507f0、b/179239764、b/182397793)
- 已對 ViewConfiguration 新增最小觸控目標尺寸,用於語意及指標輸入,確保可使用無障礙功能。(Ie861c)
- 新增 TileMode.Decal 支援,可用於定義模糊式 RenderEffect 的邊緣行為 (I7e8ed、b/166927547)。
- performScrollToIndex、- performScrollToKey、- hasScrollToIndexAction和- hasScrollToKeyAction現已改為穩定 API (I142ae、b/178483889)
- 新增了測試方法,以取得裁剪邊界。(I6b28e)
修正錯誤
- 已從 BlurredEdgeTreatment 中移除了 isBounded 方法,以便明確檢查形狀參數是否為空值。(I85d68)
1.1.0-alpha02 版
2021 年 8 月 18 日
發布 androidx.compose.ui:ui-*:1.1.0-alpha02。查看 1.1.0-alpha02 版的修訂項。
API 變更
- PointerEvent 現在支援讀取滑鼠按鈕狀態和鍵盤修飾符狀態 (I6310c、b/180075467)。
- 插入的手勢現在使用 MainTestClock 的時間做為可靠資料來源。系統會將 performGesture中所插入事件的目前時間初始化為 MainTestClock 的目前時間 (Ifb364、b/192064452)。
- 新增了 DpRect(DpOffset, DpSize)建構函式 (I2cf16,b/194219828)
- 新增了 DpSize 類別 (I7abb1、b/194219828)
修正錯誤
- 更新了向量圖形 xml 剖析功能,以支援 ColorStateLists 做為 VectorDrawables 上的根色彩色調屬性。(I86915、b/195668138)
1.1.0-alpha01 版
2021 年 8 月 4 日
發布 androidx.compose.ui:ui-*:1.1.0-alpha01。查看 1.1.0-alpha01 版的修訂項。
API 變更
- RelocationRequester.bringIntoView現在接受矩形做為參數,讓我們將可組合項的部分內容呈現在檢視畫面中 (Ice2c5、b/194330245)
- AnimatedImageVector和相關 API 現已新增至新的- androidx.compose.animation:animation-graphics模組。(I60873)
- 新增了實驗性修飾符,可處理重新配置的請求。(I65a97、b/178211874)
- 推出 BrushPainter API,支援在 PaintPall 中繪製任意筆刷,類似 ColorPainter - 更新了 Brush API,以納入在 BrushPainter 中查詢的內建函式大小參數 (Ia2752、b/189466433) 
- 更新了 DrawScope#drawImage 方法,並採用來源和目的地矩形,以使用選用的 FilterQuality 參數。這適合像素風格藝術在放大時進行像素化處理之用。更新了 BitmapPainter + Image 可組合項,使其也可使用選用的 FilterQuality 參數 (Ie4fb0、b/180311607) 
- 新增了 - GestureScope.advanceEventTime方法,以便進一步掌控手勢中的事件時間 (Ibf3e2)
修正錯誤
- 為針對繪製修飾詞鏈結提供更完善的支援,請務必在 Modifier.paint 實作中呼叫 drawsContent。以往我們會將 Modifier.paint 加在修飾符鏈結的分葉節點中,但是這種操作會導致 Modifier.paint 無法在可組合項容器 (例如:Box) 上設定,或在 Modifier.paint().border()等之上添加其他修飾。現在,我們讓 Modifier.paint 在繪製指定 Painter 的內容後呼叫 drawContent,這樣就能提升修飾詞模式中的行為一致性 (Ibb2a7、b/178201337、b/186213275)。
- 對話方塊現在會遵循平台大小行為。將 usePlatformDefaultWidth設為 false,即可覆寫這個行為。(Iffaed、b/192682388)
- 已將 InfiniteAnimationPolicy移至 :compose:ui (I5eb09、b/160602714)
- 現在透過語意操作捲動延遲清單和一般捲動式元件時會呈現動畫效果 (Id9066、b/190742024)
1.0 版
1.0.5 版
2021 年 11 月 3 日
發布 androidx.compose.ui:ui-*:1.0.5。1.0.5 版包含此連結所列的修訂項目。
修正錯誤
- 修正追蹤 derivedStateOf 例項時的異常終止問題 (aosp/1792247)。
1.0.4 版
2021 年 10 月 13 日
發布 androidx.compose.ui:ui-*:1.0.4。1.0.4 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin 1.5.31
1.0.3 版
2021 年 9 月 29 日
發布 androidx.compose.ui:ui-*:1.0.3。1.0.3 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin 1.5.30
1.0.2 版
2021 年 9 月 1 日
發布 androidx.compose.ui:ui-*:1.0.2。1.0.2 版包含此連結所列的修訂項目。
更新為支援 Compose 1.0.2 版。Compose 1.0.2 仍與 Kotlin 1.5.21 相容。
1.0.1 版
2021 年 8 月 4 日
發布 androidx.compose.ui:ui-*:1.0.1。1.0.1 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin 1.5.21。
1.0.0 版
2021 年 7 月 28 日
發布 androidx.compose.ui:ui-*:1.0.0。1.0.0 版包含此連結所列的修訂項目。
1.0.0 的主要功能
這是 Compose 的第一個穩定版本。如需詳細資訊,請參閱官方的 Compose Release 網誌!
已知問題
- 如果使用的是 Android Studio Bumblebee Canary 4 或 AGP - 7.1.0-alpha04/- 7.1.0-alpha05,則可能會遇到下列當機情形:- java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"- 如需修正這個問題,請暫時將 - build.gradle檔案中的 minSdkVersion 提高到 24 以上。Android Studio Bumblebee 和 AGP- 7.1的下一個版本會修正這個問題 (b/194289155)
1.0.0-rc02 版
2021 年 7 月 14 日
發布 androidx.compose.ui:ui-*:1.0.0-rc02。查看 1.0.0-rc02 版的修訂項。
修正錯誤
- 對話方塊現在會遵循平台大小行為。將 usePlatformDefaultWidth設為 false,即可覆寫這個行為。(Iffaed、b/192682388)
1.0.0-rc01 版
2021 年 7 月 1 日
發布 androidx.compose.ui:ui-*:1.0.0-rc01。查看 1.0.0-rc01 版的修訂項。
新功能
- 將 ui-tool 模組分割為 ui-tooling和ui-tooling-preview(Iefa28、b/190649014)
API 變更
- 移除了已淘汰的實驗性 FocusManager#moveFocusIn和FocusManager#moveFocusOut(I227d7、b/170154986、b/186567354、b/168510304)
- Canvas 現已支援 contentDescription 參數以提供無障礙功能。(Ib547c)
- PopupProperties中的- useDefaultMaxWidth已重新命名為- usePlatformDefaultWidth。(I05710)
- 對話方塊現在可使用整個螢幕寬度。(I83929、b/190810877)
- 新增了 HSV 和 HSL 色彩表示法的實驗性支援。(Id7cf8、b/180731008)
行為變更
- Compose @Preview現在提供LocalActivityResultRegistryOwner,可讓您預覽使用rememberLauncherForActivityResult()(這會依附於現有擁有者) 等 API 的可組合項 (Ib13d1、b/185693006)。
- Compose @Preview現在提供LocalOnBackPressedDispatcherOwner,可讓您預覽使用BackHandler(這會依附於現有擁有者) 等 API 的可組合項 (Ia1c05、b/185693006)。
修正錯誤
- 已將 InfiniteAnimationPolicy移至androidx.compose.ui:ui(I5eb09、b/160602714)
- 為了變更模組結構,系統已暫時移除 AnimatedImageVector。(I41906、b/160602714)
1.0.0-beta09 版
2021 年 6 月 16 日
發布 androidx.compose.ui:ui-*:1.0.0-beta09。1.0.0-beta09 版包含此連結所列的修訂項目。
API 變更
- 使用不公開建構函式將列舉角色和 LiveRegionMode 變更為內嵌類別 (Id1890)
- KeyboardCapitalization 轉換為內嵌類別。(Id5a1c)
- 將 HapticfeedbackType 變更為內嵌類別。(I255ec)
- Modifier.pointerInteropFilter 是 @experimentComposeUiApi。(Iede6c)
- TextAlign、FontSynthesis 和 TextDirection 現為內嵌類別。(I212fe)
- TextOverflow 變更為內嵌類別。(I433af)
- FontStyle 現在是內嵌類別。(I9e48b)
修正錯誤
- 目前索引鍵常數為 @experimentComposeUiApi。穩定之前,使用程式碼可宣告不公開常數。(Ia5d48)
- Compose 測試現可於 Robolectric 上執行。目前已找出以下限制:
- 由於沒有原生點陣圖,因此 ImageBitmap()會導向 NullPointerException
- 因為沒有任何繪圖,所以 captureToImage()會無限期地等待下一個繪圖許可 (也就是無法解鎖)。
- 未載入任何字型,因此系統無法正確測量任何文字。所有字元的固定高度約 20 px,寬度為 1 px。
- ComposeTestRule.waitUntil {}在等待期間不會執行主執行緒,因此實際上跟- ComposeTestRule.mainClock.advanceTimeUntil {}並無不同。我們預計日後會找到更多限制。(I284fa)
 
- 由於沒有原生點陣圖,因此 
新增的設定檔規則
這個版本將設定檔規則新增至下列撰寫模組 (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
什麼是設定檔規則?
- 程式庫的設定檔規則在位於 - src/main或同等目錄中的文字檔- baseline-prof.txt內進行指定。該檔案會每行指定一個規則,這裡的規則是指對應至程式庫方法或類別的模式。這些規則所用語法是人類可讀形式的 ART 設定檔格式的超集,使用- adb shell profman --dump-classes-and-methods ...時會用到這類格式。這些規則會採用兩種形式之一來指定方法或類別。
- 方法規則將採用以下模式: - <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
- 類別規則將採用以下模式: - <CLASS_DESCRIPTOR>
- 此處的 - <FLAGS>是- H、- S和- P之中的一或多個字元,用於指出這個方法應標記為「Hot」、「Startup」或「Post Startup」。
- <CLASS_DESCRIPTOR>是指定方法所屬的類別描述元。舉例來說,- androidx.compose.runtime.SlotTable類別的描述元是- Landroidx/compose/runtime/SlotTable;。
- <METHOD_SIGNATURE>是方法的簽名,含有該方法的名稱、參數類型和傳回類型。舉例來說,- LayoutNode上的- fun isPlaced(): Boolean方法含有- isPlaced()Z簽名。
- 這些模式可包含萬用字元 ( - **、- *和- ?),以便讓單一規則涵蓋多種方法或類別。
規則的用途
- 方法中如果帶有 - H標記,表示這個方法是「Hot」方法,應該預先完成編譯。
- 方法中如果帶有 - S標記,表示這是系統會在啟動時呼叫的方法,應該預先完成編譯,以免啟動時耗費資源處理編譯作業及解析方法。
- 方法中如果帶有 - P標記,表示這是系統在啟動之後才會呼叫的方法。
- 如果類別顯示在這個檔案中,表示系統會在啟動期間使用該類別,因此應該要事先在堆積中分配該類別,以免耗費載入類別的成本。 
運作方式
- 程式庫可以定義這些規則,並會包裝於 AAR 構件中。接著,系統會在建構包含這些構件的應用程式時,將這些規則合併起來,然後使用合併後的規則建構該應用程式專屬的精簡二進位 ART 設定檔。當該應用程式安裝在裝置上時,ART 便可以利用這個設定檔預先編譯特定應用程式子集,以提高應用程式效能,特別是首次執行的效能。請注意,這項設定不會對可偵錯的應用程式產生任何影響。
1.0.0-beta08 版
2021 年 6 月 2 日
發布 androidx.compose.ui:ui-*:1.0.0-beta08。1.0.0-beta08 版包含此連結所列的修訂項目。
API 變更
- NestedScrollSource列舉是由內嵌類別取代。(Ie321b、b/187055290)
- FocusManager.clearFocus(forcedClear = true)已重新命名為- FocusManager.clearFocus(force = true)(Ia0c41)
- 已將列舉用例重構為內嵌類別,以避免完整的 when 陳述式在新增列舉值後出現問題。(I2b5eb)
- 從 PopupProperties移除@ExperimentalComposeUiApi。(I01fa6)
- 「PointerType」已從列舉變更為內嵌類別 (If5058)
- ContentDescription 和 Text 語意屬性不再只是單一值,而是清單。如此即可直接合併,無需串連。同時也提供更優質的測試 API,以便善用這些變更 (Ica6bf、b/184825850)
- 淘汰了 Modifier.focusModifier(),改為Modifier.focusTarget()(I6c860)
- Modifier.onSizeChanged()和- Modifier.onGloballyPositioned()已不再為內嵌函式 (I727f6、b/186109675)
- KeyboardType列舉是由內嵌類別取代。(I73045、b/187055290)
- FocusState列舉已改為- FocusState介面 (Iccc1a、b/187055290)
- ImeAction 列舉已由內嵌類別取代。(I18be5、b/187055290)。
- PlaceholderVerticalAlign轉換為內嵌類別。(If6290)
- TextUnitType 現在是內嵌類別。(I4cba9)
- AnnotatedString.withAnnotation函式現在是 ExperimentalTextApi,而非 ExperimentalComposeApi。(I0cd0a)- 採用 TextUnitType 的 TextUnit 建構函式現在是 ExperimentalTextApi,而非 ExperimentalComposeApi。
 
修正錯誤
- 修正了 Beta 版 7 版導入的漏洞,因為捲動畫面後,LazyColumn/Row 項目僅有部分顯示 (I8c9ac、b/188566058)
- 現在,detectDragGesures、detectVerticalGestures和detectHorizontalGestures會自動使用位置變更,不需要在 onDrag 回呼中呼叫 change.consumePositionChange (I42fc4、b/185096350、b/187320697)
- 提供對齊線的 LayoutModifiers 是固定的。修正子項對齊線變更會導致無法重新測量父項的錯誤 (I4401f、b/174315652)。
- 已變更 Modifier.onGloballyPositioned(),系統會回報此修飾詞在修飾詞鏈結中的座標,而非套用所有修飾詞後的版面配置座標。也就是說,修飾符的排序現在會影響系統回報的座標。(Ieb67d、b/177926591)
1.0.0-beta07 版
2021 年 5 月 18 日
發布 androidx.compose.ui:ui-*:1.0.0-beta07。1.0.0-beta07 版包含此連結所列的修訂項目。
API 變更
- 新增了用於檢查器的 ViewRootForInspector介面 (Ib70df)
- SubcomposeLayoutState現可支援可重複使用的運算單元數量。版面配置會維持在有效計數中,而非丟棄,改為在下次需要新版位時重複使用 (Ieb981)
- KeyEventType 列舉是由內嵌類別取代。(Id670a、b/187055290)
- FocusDirection列舉是由內嵌類別取代。(Ib6d03、b/187055290、b/184086802)
- 推出可拉高 SubcomposeLayout 狀態的功能,讓您預先組合內容並傳遞至必要的 slotId,這樣下次只要使用指定的 slotId 建立子組合,就能略過組合程序,進而更快速地傳遞測量結果。(I42580、b/184940225)
- 新增了剪輯片段選取控點 (Iff80d、b/183408447)
- 移除了與 LayoutInspector 支援相關且未使用的 API。(I2ac78)
修正錯誤
- LazyColumn/Row 現在會保留最多 2 個先前顯示項目的有效狀態 (而非加以丟棄),即使這些項目已被捲出畫面也一樣。如此一來,當我們需要組合新項目時,元件可重複使用有效的子組合,達到提升捲動效能的效果 (Ie5555)。
- AnnotatedString上的- TextGeomerticTransform和- TextDecoration將依指定的方式套用 (I61900、b/184760917)。
1.0.0-beta06 版
2021 年 5 月 5 日
發布 androidx.compose.ui:ui-*:1.0.0-beta06。1.0.0-beta06 版包含此連結所列的修訂項目。
API 變更
- 解決導覽手勢相關衝突。(I1145e)
- @ComposeCompilerApi已不再使用- @RequiresOptIn(Iab690)
- 新增了 CollectionInfo 和 CollectionItemInfo 無障礙服務 API,可為集合及其項目加上無障礙服務標示 (Id54ef、b/180479017)
- 新增了 SemanticsActions.ScrollToIndex,可將含有索引項目的項目清單捲動到含有特定索引的項目,並新增SemanticsProperties.IndexForKey以取得包含索引鍵項目清單的項目索引。這兩個動作均是透過 LazyList 實作。- 新增了 SemanticsNodeInteraction.performScrollToIndex和SemanticsNodeInteraction.performScrollToKey,前者可將清單捲動至指定的索引,後者則能將清單捲動到含有指定鍵的項目上。(I4fe63、b/178483889、b/161584524)
 
- 新增了 
- 已將 ownerViewId 新增至 GraphicLayerInfo (I19f62)
- 新增了 Font() 超載,可載入素材資源、File 和 FileDescriptor 中的字型 (I5d382)
- 新增了無障礙功能 API (error),以便標示含有無效輸入內容的節點 (I12997、b/180584804、b/182142737)
- 新增了 Font()超載,以載入素材資源、File 和 File 描述元 (I43007) 的字型
- 註解標記可將支援儲存至 TextFieldValue.Saver。已將addTtsAnnotation和擁有註解公用程式函式新增至AnnotatedString.Builder(I8cbdc、b/178446304)
- 新增了 TextUnit 建構函式函式 TextUnit(value: Float, type: TextUnitType)(I7ecce、b/178446304)
1.0.0-beta05 版
2021 年 4 月 21 日
發布 androidx.compose.ui:ui-*:1.0.0-beta05。1.0.0-beta05 版包含此連結所列的修訂項目。
API 變更
- 新增了實驗性 FocusManager.moveFocus(In)和FocusManager.moveFocus(Out)(Ic5534、b/183746743)
- 新增了實驗性 performTextInputSelectionAPI (I2dcbb、b/178510628)
- 淘汰了 InputEventCallback介面。您無法在任何公用 API 中使用該介面;在程式碼中也是一樣。(I34a02、b/184003208)
- 淘汰了 TextLayoutResult/createTextLayoutResult函式。這是用於測試的未使用的公開函式。這項函式沒有任何用於編寫文字 API 的功能。函式目前已淘汰,稍後會移除。(I80413)
修正錯誤
- 修正 ACTION_SCROLL_FORWARD、ACTION_SCROLL_BACKWARD、accessibilityActionScrollLeft、accessibilityActionScrollUp、accessibilityActionScrollRight和accessibilityActionScrollDown無障礙捲動操作。現在不會捲動至可捲動項目底部,而是會依照指定方向捲動單一畫面 (Ieccb0)。
- ui-test-manifest 和 ui-tooling-data 的 AndroidManifest 檔案現在與 Android 12 相容 (I6f9de、b/184718994)
1.0.0-beta04 版
2021 年 4 月 7 日
發布 androidx.compose.ui:ui-*:1.0.0-beta04。1.0.0-beta04 版包含此連結所列的修訂項目。
API 變更
- 將 SoftwareKeyboardController中的hideSoftwareKeyboard和showSoftwareKeyboard分別重新命名為hide()和show()。- 為 LocalSoftwareKeyboardController 提供完整的 CompositionLocal 介面,以便設定該物件 (在測試中特別實用) (I579a6)
 
- 新增了 LiveRegion 無障礙服務 API。如果節點標示為即時區域,無障礙服務會自動向使用者發送該節點的變更通知 (Idcf6f,b/172590946)
- 推出了 TextOverflow.Visible。(Ic8f89)。
修正錯誤
- 修正了位於邊緣的 LazyColumn/LazyRow項目在快速滑過操作後擺放位置不正確的問題 (Ie4d13、b/183877420)
- 當 AndroidViewBinding從 Compose 階層中移除時,AndroidViewBinding現在會妥善移除透過FragmentContainerView加載的片段 (Ib0248、b/179915946)。
- 現在,如果 ComposeView位於Fragment內,AndroidViewBinding會正確地為透過FragmentContainerView加載的片段建立巢狀結構,修正無法儲存及還原這些片段狀態的問題 (I70eb0、b/179915946)。
- Compose ViewBinding 現在取決於片段 1.3.2,而現在在設定變更之後,還會持續顯示透過FragmentContainerView加載的片段。(I0743d、b/179915946)
1.0.0-beta03 版
2021 年 3 月 24 日
發布 androidx.compose.ui:ui-*:1.0.0-beta03。1.0.0-beta03 版包含此連結所列的修訂項目。
API 變更
- 延遲檢查 ComposeView 的 ViewTree 依附元件 (I8dbbf、b/182466548)
- 已將 startX/endX和startY/endY選用參數新增至GestureScope的swipeUp/swipeDown/swipeLeft/swipeRight函式中。(I49e2d、b/182063305)
1.0.0-beta02 版
2021 年 3 月 10 日
發布 androidx.compose.ui:ui-*:1.0.0-beta02。查看 1.0.0-beta02 版的修訂項。
API 變更
- 新增了 LocalSoftwareKeyboardController組合本機 API,以取代 TextField 中的舊 SoftwareKeyboardController 介面 (I5951e、b/168778053)。
- 新增了 LocalSoftwareKeyboardController組合本機 API,以取代 TextField 中的舊 SoftwareKeyboardController 介面 (I84472、b/168778053)
- 移除了下列 SemanticsMatcher:- hasWidth(width, tolerance)
- hasHeight(height, tolerance)
- hasLeftPosition(left, tolerance)
- hasTopPosition(top, tolerance)
- hasRightPosition(right, tolerance)
- hasBottomPosition(bottom, tolerance)(If16bd)
 
- 將下列 SemanticsMatchers標示為 @experimentTestApi:- hasWidth(width, tolerance)
- hasHeight(height, tolerance)
- hasLeftPosition(left, tolerance)
- hasTopPosition(top, tolerance)
- hasRightPosition(right, tolerance)
- hasBottomPosition(bottom, tolerance)(Ia600c)
 
- 新增了下列 SemanticsMatcher:- hasWidth(width, tolerance)
- hasHeight(height, tolerance)
- hasLeftPosition(left, tolerance)
- hasTopPosition(top, tolerance)
- hasRightPosition(right, tolerance)
- hasBottomPosition(bottom, tolerance)(I2f502)
 
修正錯誤
- 強制限制實驗 API 的公開使用行為 (I6aa29、b/174531520)
- 「androidx.compose.ui:ui」已不再取決於 AppCompat 或 Fragment。如果您在應用程式中使用 ComposeView,同時也使用 Fragment 和/或 AppCompat,請確保您使用的是 AppCompat 1.3 以上版/Fragment 1.3 以上版,這樣才能正確設定 ComposeView 必備的生命週期和已儲存狀態擁有者。(I1d6fa、b/161814404)
- 修正在導覽構成目的地中使用無效 rememberSaveable { mutableStateOf(0) }的問題。(I1312b、b/180042685、b/180701630)
- 新增了 LocalSoftwareKeyboardController組合本機 API,以取代 TextField 中的舊 SoftwareKeyboardController 介面 (I658b6、b/168778053)
- 修正了 ComposeRootRegistry的tearDownRegistry()中極少發生的 NoSuchElementException (Iddce1)
1.0.0-beta01 版
2021 年 2 月 24 日
發布 androidx.compose.ui:ui-*:1.0.0-beta01。1.0.0-beta01 版包含此連結所列的修訂項目。
這是 Compose 1.0.0 Beta 版的第一個版本。
API 變更
- 已將 onStart 回呼新增至 detectDragGestures(I67269、b/179995594)
- 用於依照內建函式調整大小的修飾符不再處於實驗階段。(I15744)
- MeasureBlocks 已重新命名為介面新奇有趣的 MeasurePolicy。版面配置 API 經過更新/簡化,可使用 MeasurePolicy (Icab48、b/167662468、b/156751158)。
- InteractionState已替換為- [Mutable]InteractionSource- 介面負責傳送/收集「互動」(Interaction) 事件。
- 使用 interactionSource = remember { MutableInteractionSource() },而不是將interactionState = remember { InteractionState() }傳遞給Button和Modifier.clickable()等元件。
- 應改用 InteractionSource 中的擴充功能函式,例如 InteractionSource.collectIs PressedAsState(),而不是:Interaction.Pressed in interactionState。
- 如果用途複雜,可以使用 InteractSource.interactions 來觀察互動的串流。如需詳細資訊,請參閱 InteractSource 的說明文件和範例
- (I85965、b/152525426、b/171913923、b/171710801、b/174852378)
 
- 新增 AccessibilityMananger 介面和 CompositionLocals 的 LocalAccessibilityMananger (I53520)
- 移除了已淘汰的 LayoutCoordinate 方法;針對 positionInParent 和 boundsInParent,請使用函式取代屬性 (I580ed,b/169874631、b/175142755)
- 替換為基礎類型的 Typealias:
- ColorStop現在是- Pair<Float, Color>
- SpanStyleRange現在是「AnnotatedString.Range- 」 
- ParagraphStyleRange現在是- AnnotatedString.Range<ParagraphStyle>
- StringAnnotation現在是- AnnotatedString.Range<String>
- (I8dd1a)
 
- 為 CoreTextField 等低階文字元件的輸入工作階段建立新的 TextInputSession (I8817f、b/177662148)
- 「位置」指標現在會顯示測距,代表子版面配置實際測量的大小。這個大小可能不受測量限制的影響。(Ib2729、b/172560206、b/172338608)。
- 新增 selectionGroup 修飾詞,可為 Tab 或 RadioButton 集合加上無障礙用途標示 (Ie5c29)
- compositionLocalOf和- staticCompositionLocalOf的- defaultFactory現在是必要元素,而非選用元素。- 如未提供預設工廠,這項變更可移除非空值的潛在類型錯誤。以前,這會為非空值的類型提供空值的參照。 - 如果是可為空值類型,請考慮提供 - { null }做為預設工廠。- 除非能提供合理的預設值,否則我們不建議搭配不可為空值類型使用本機。如果沒有任何可行的預設值, - defaultFactorylambda 應擲回例外狀況。不過,擲回例外狀況代表本機取用者會有隱含的依附元件,前提是該元件不會由類型系統強制執行 (Ifbd2a)。
- 移除了 ui 模組的已淘汰方法 (I646f6) 
- 已重新命名大小修飾符。將 Modifier.width/height/size 重新命名為 requiredWidth/requiredHeight/requiredSize。Modifier.PreferredWidth/PreferredHeight/recommendedSize 已重新命名為 width/height/size。(I5b414) 
- 已移除 - Modifier.tapGestureFilter。請改用- Modifier.pointerInput { detectTapGestures(...) }。(I266ed、b/175294473)
- 部分消耗已從指標輸入系統中移除。協調部分消耗的建議做法是使用 Modifier.nestedScroll (Ie9c9b)。 
- 方向已移至基礎套件。VelocirtTracker 已從 ui.gesture 移至 ui.input.pointer (Iff4a8、b/175294473)。 
- imageResource 和 varResource 現已成為 ImageBitmap 和 ImageVector 隨播廣告的擴充功能函式。已刪除 - load{Image,Vector,Font}Resource個函式。(I89130)
- 已移除 AnimationClockObservable 和子類別,AnimatedFloat 也已移除。(Icde52、b/177457083)。 
- Provider 已重新命名為 CompositionLocalProvider - Composition 建構函式不再接受索引鍵參數,且已淘汰。
- currentCompositeKeyHash 已變成可組合的頂層屬性,而非可組合的頂層函式。
- CompositionData 和 CompositionGroup 已移至 androidx.compose.runtime.tooling 命名空間
- ComposableLambda 已成為介面而非具體類別,並且不再有類型參數。
- ComposableLambdaN 已成為介面而非具體類別,並且不再有類型參數。
- snapshotFlow 函式已移至 androidx.compose.runtime 命名空間。
- SnapshotMutationPolicy 的合併方法不再是實驗性功能
- 已移除 @TestOnly 頂層 clearRoot 函式,因為不再需要使用。
- 已移除 keySourceInfoOf 和 resetSourceInfo 函式,因為不再需要使用。
- 已移除 Composer.collectKeySourceInformation,因為不再需要使用。
- 已移除 isJoinedKey、joinedKeyLeft 和 joinedKeyRight 方法。因為不再需要使用。
- 重新整理多個頂層 API,分別歸類到不同的檔案中。由於 Kotlin 的檔案類別語意的關係,此舉會破壞二進位檔案相容性,但不影響原始碼相容性,因此對大多數使用者而言應不成問題
- (I99b7d、b/177245490)
 
- ComponentActivity.setContent()已從 compose:ui 中移除。請使用- androidx.activity:activity-compose:1.3.0-alpha01提供的項目。已將- viewModel()和- LocalViewModelStoreOwner從 compose:ui 中移除。請使用- androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01提供的項目 (I6f36b)
- Modifier.scrollable 經過重新設計。現在,這個應用程式使用捲動式介面,而非捲動式控制器類別 (I4f5a5、b/174485541、b/175294473) 
- 已從 PointerInputModifier 移除 CustomEvents 支援功能 (I02707,b/175294473) 
- SnapshotStateObserver 已不再是實驗版 (Id2e6a) 
- 刪除了一些已淘汰的 API (Ice5da、b/178633932) 
- longPressGestureFilter 和 doubleClickGestureFilter 已移除。將 Modifier.pointerInput 與輔助函式搭配使用,例如 detectTapGestures (I2fedf、b/175294473) 
- 移除了 String.format API,其將多個 toString 方法重構使用,以防止內部使用 String.format。(Id1290) 
- 移除了 dp 判斷提示 (I798d2) 
- 移除了 androidx.compose.runtime:runtime-fulfillment (I55feb) 
- 文字動作現在會自動檢查焦點 (I13777、b/179648629) 
- 移除了 - runBlockingWithManualClock(I15cdc、b/179664814)
- Modifier.verticalScroll()/horizontalScroll() 的捲動位置現在會以 Ints 表示 (I81298) 
- FlingConfig 已重新命名為 FlingBehavior,現在可以自訂暫停動畫,而不是預先定義的衰減功能。(I02b86、b/175294473) 
- 新增了輔助函式,用於針對所有 ImeAction 回呼設定相同的動作 (I63447、b/179226323) 
- 已自所有文字欄位移除 SoftwareKeyboardController 回呼,並且很快就會以新的 API 取代。(Iae869、b/168778053) 
- FontSpan 和 FontWeigthStyleSpan 已不再使用且已經移除。(Ie5b56、b/177423444) 
- 已進行下列 Material API 變更: - 已將 contentPAdding 參數新增至 Top/BottomAppBar,以自訂預設邊框間距。
- 已依據 API 指南重新調整 BackdropScaffold 中的參數順序,將必要參數置於選用參數之前。
- 已將 BottomNavigationItem 中的 icon參數移至selected和onClick之後。
- 已將 BottomNavItem 中的 alwaysShowLabels參數重新命名為alwaysShowLabel。
- 在幾個元件中將 bodyContent參數重新命名為content。
- 已將 ButtonDefaults.buttonColors()中的參數重新排序。請注意,由於參數類型維持不變,因此不會造成您的程式碼產生錯誤。請務必使用具名參數或是手動更新順序,否則您的程式碼將無法正常運作。
- 已將 secondaryVariant參數新增至darkColors()。此顏色通常與深色主題中的secondary相同,但新增這個參數是為了保持一致性和進一步自訂功能。
- 已從公用 API 介面中移除 ElevationDefaults 和 animateElevation(),因為這些項目不常用或不實用。
- 已將 Slider中的onValueChangeEnd重新命名為onValueChangeFinished,並將該值設為可為空值。
- 為求一致,請將 Snackbar中的text參數重新命名為content。
- 已將 contentPadding參數新增至DropdownMenuItem,以自訂預設邊框間距,並將content設為RowScope的擴充功能。
- ModalDrawerLayout已重新命名為- ModalDrawer。
- BottomDrawerLayout已重新命名為- BottomDrawer。
- (I1cc66)
 
修正錯誤
- 新增了 API,可在 Compose 中使用動畫類 VectorDrawable 資源。使用 animatedVectorResource 載入 <animated-vector>XML 做為 AnimatedImageVector,並以 PainterFor 新增該動畫 (I8ea91)
- 新增了 LocalSoftwareKeyboardController 組合本機 API,取代 TextField 中的舊 SoftwareKeyboardController 介面 (I658b6、b/168778053)。
1.0.0-alpha12 版
2021 年 2 月 10 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha12。查看 1.0.0-alpha12 版的修訂項。
API 變更
- 從 UiApplier 移除對 ViewGroup 的支援功能,並移除已淘汰的 emitView 可組合項 (Ifb214)。
- Modifier.pointerInput 目前規定 remember 鍵必須指出指標輸入偵測處理常式何時該重新啟動,以設定新的依附元件。(I849cd)
- CompositionReference 已重新命名為 CompositionContext (I53fcb)
- 邊界已重新命名為 DpRect (I4b32a)
- 測試更新:hasText() 會檢查文字欄位中的輸入和標籤/提示/預留位置文字 (Iab803)
- viewModel() 可組合項和 LocalViewModelStoreOwner 已移至 androidx.lifecycle.viewmodel.compose。您現在需要新增個別的依附元件 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 才能使用 (I7a374)。
- 允許 AccessibilityAction 中的空值動作、將 AccessibilityAction 和 CustomAccessibilityAction 的動作標籤從 CharSequence 變更為 String (I0dc82)
- 為更符合 ImageBitmap 和 ImageVector 的命名慣例,ImagePainter 已重新命名為 BitmapPainter,以便與 VectorPainter 並行。(Iba381、b/174565889)
- 已改良子字串測試 API,現在起以子字串作為引數 (Icbe78)
- 新增了接受 FocusRequester 的 Modifier.focusOrder(),但未指定自訂焦點順序的 lambda。如果只需要指定參考資料,而不是可組合項的自訂焦點順序,這個功能就非常實用 (I4f52a、b/179180978)
- ComponentActivity.setContent 已移至 androidx.activity:activity-compose 模組中的 androidx.activity.compose.setContent。(Icf416)
- Destructuring 和 copy() 方法在幾個類別中極少使用,現已將其從中移除。(I26702、b/178659281)
- 彈出式視窗已移至特定平台。AndroidPopupProperties 已重新命名為 PopupProperties,isFocusable已移至PopupProperties中的focusable參數 (Ieeea5)
- 已將對話方塊移至特定平台。已將 AndroidDialogProperties 重新命名為 DialogProperties (I4ef69、b/179138130)
- Made LayoutNode (I8a7b1、b/175103944)
- Constraints.enforce 已由 Constraints.constrain 取代。(I8b8ea)
- loadFontResource 已淘汰,請改用 fontResource。imageResource、loadImageResource、vectorResource 和 loadVectorResource 也已淘汰,請改用 painterResource。(I6b809)
- 出於效能考量,ScrollAxisRange 語意現在接受傳回 Float (而非直接 Float 值) 的 lambda。(If4a35、b/178657186)。
- 新增了 EditableText 語意,可為文字欄位的可編輯輸入文字加上無障礙標示,也新增了相應的測試方法來檢查語意 (I8e07a)
- Made PolicyLayer/OwnerScope/OwnerSnapshotObserver 內部 (I4ffaf、b/175103944)
- toIntPx() 已重新命名為 roundToPx() (I9b7e4、b/173502290)
- IntBounds 已重新命名為 IntRect,且該 API 已改善 (I1f6ff)。
- Snapshot API 經更新後更符合 API 指南規範,並隱藏了公用 API 的內部實作類別。(Id9e32)
- 新增了展開及收合語意動作。在 ModalBottomSheetState 中新增了 expand 和 halfExpand (Ib5064)
- Modifier.dragGestureFilter 已淘汰,請改用 Modifier.pointerInput { detectDragGestures (...)}。或者,也可使用 Modifier.draggable 進行單一軸線拖曳 (I0ba93、b/175294473)
- 已將 Ambient 重新命名,以配合 Ambient -> CompositionLocal 的更名。Ambient 原本名為 AmbientFoo,現在已將 CompositionLocal 命名為 LocalFoo。(I2d55d)
- 已淘汰的 BaseTextField 現已移除。請改用 BasicTextField。(I71368)
- 已將選取項目移至基礎。(I7892b)
- 如同我們先前移除 state { 0 }可組合項且現在鼓勵使用remember { mutableStateOf(0) }等項目,我們也將移除savedInstanceState { 0 }可組合項。請改用rememberSaveable { mutableStateOf(0) },這樣只要 MutableState 內使用的類型可儲存在套裝組合中,就能自動儲存並還原。如果之前傳遞的是自訂儲存工具物件,現在需使用含有stateSaver參數的全新 rememberSaveable 超載。用量格式如下:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26、b/177338004)
- 新增了無障礙功能密碼語意 (I231ce)
- 新增了 ProgressBarRangeInfo.Indeterminate 以標示無障礙功能的不確定進度列 (I6fe05)
- 淘汰了 emptyContent()和(@Composable () -> Unit).orEmpty()公用程式,原因是這些公用程式對效能已無正面影響或價值 (I0484d)
- snapshotFlow和- withMutableSnapshot不再處於實驗階段 (I6a45f)
- Recomposer 現在可以關閉。封閉的重組工具將繼續調整,直到構成的子項協同程式完成為止。 將 Recomposer.shutDown 重新命名為「cancel」,以便與關閉對照 (Ib6d76)。
- UiSavedStateRegistry 已重新命名為 SaveableStateRegistry,AmbientUiSavedStateRegistry 已重新命名為 AmbientSaveableStateRegistry,且兩者都移至 androidx.compose. runtime.saveable 套件 (I30224)。
- 構件 androidx:compose:runtime:runtime-saved-instance-state 已重新命名為 androidx:compose:runtime:runtime-saveable (I6dcac)。
- UI 套件中許多過時的 API 都已刪除 (I2f2dc)。
- compose:runtime-dispatch 構件現已淘汰。目前可在 compose:runtime 中找到 MonotonicFrameClock,而 AndroidUiDispatcher 則可在 compose:ui 中找到。(Ib5c36)。
- Outline.* 類別已不再是資料類別 (I4879e、b/178001427)
- 移除了 view.captureToImage(),且沒有任何更換內容。(I7fcd2)
- 推出了 ColorMatrix API,可用於修改來源內容的 RGB 值,也推出了 Refactored ColorFilter API,可做為介面並用於比對 PathEffect 的實作 (Ica1e8)。
- 將版面配置方向參數加到 形狀的 createOutline 中。允許建立版面配置方向感知形狀。(I57c20、b/152756983)
- onImeActionPerformed 已淘汰,請改用 KeyboardActions (If0bbd、b/179071523)
- 推出將套用於無限動畫的 InfiniteAnimationPolicy協同程式結構定義元素。根據預設,系統不會安裝任何政策,除非使用ComposeTestRule執行測試。(I50ec4、b/151940543)。
- canDrag 已從 Modifier.scrollable 移除 (Id66e7、b/175294473)。
- 已將 LayoutCoordinates.ParentCoordinates 重新命名為 LayoutCoordinates.ParentLayoutCoordinates 以允許新的父項 Coordinates 屬性。parentCoordinates 屬性現在提供父項修飾符的 LayoutCoordintes。這樣將針對 onSizeChanged() 和 onGloballyPositioned() 提供更完整的用途 (Idfbfd、b/177926591)
- 淘汰了 tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 和 pressIndicaitonGestureFilter。請改用 Modifier.clickable 或 Modifier.pointerInput 搭配 DetectionTapTouchs 函式。(I6baf9、b/175294473)
- 已移除 SaveableStateRegistry 的 unregisterProvider。因此,registerProvider() 會傳回 SaveableStateRegistry.Entry 物件,以取消註冊 (Ic4274、b/178583739)。
- rememberSavedInstanceState() 已重新命名為 rememberSaveable() 並移至 androidx.compose. runtime.saveable 套件 (I1366e、b/177338004)。
- 從公用 API 移除 CoreText 和 CoreTextField
- 已移除淘汰的 SelectionContainer 超載。
- (I99c19)
 
- 在直接於 WindowManager 新增/移除的階層中使用 Compose 進行測試,現已更加穩定。(Ie81ed、b/175765614)
- 移除了 Recomposer.current()。[Abstract]ComposeView 現已預設為延遲建立、以視窗為範圍的 Recomposers,並由視窗的 ViewTreeLifecycleOwner 所驅動。主機的 Lifecycle 停止時,Recomposition 和以 withFrameNanos 為基礎的動畫滴答會暫停。(I38e11)
- Recomposer.runningRecomposers 現在會提供唯讀 RecomposerInfo 的全域 StateFlow,用於在程序中觀察進行中的組合狀態。建議使用這個 API 取代已淘汰的 Recomposer.current() (If8ebe)
- Saver、listSaver()、mapSaver()、autoSaver 已從 androidx.compose.runtime.savedinstancestate 移至 androidx.compose.runtime.saveable (I77fe6)。
- EditCommands 可接受 AnnotatedString。然而,此僅為 API 的變更,尚未實作多樣式文字編輯功能。(I4c3ea)
- 已移除運作時間與時間長度。(Ib9bf4、b/177420019)
- CompositionData.asTree() 和相關 API 已移至個別 ui-tooling-data 模組並標示為實驗性 (Ic95b8)。
- 為了支援形狀的 rtl 方向自動鏡像,RounderCornerShape、CutCornerShape 和 CornerBasedShape 的參數已從 left/right 重新命名為 start/end。導入 AbsoluteRounderCornerShape 和 AbsoluteCutCornerShape,處理不需要自動鏡像功能的情況 (I61040、b/152756983)。
- Compose 編譯器外掛程式指定的 API 已經過重構,現在會使用介面,而不是具體類別。此外,介面也不會再使用類型參數。 - 這項內部變更應該不會影響原始碼相容性,但屬於二進位破壞性變更 (I3b922、b/169406779)。 
- 移除無意公開的公開 StringBuilder.deleteAt 函式 (Id6ed9) 
修正錯誤
- 放置在檢視區塊階層中,且為另一個構圖子項的 ComposeViews,現在代管其祖系的子項構圖 (I92883)
- 更新了組合的 imageFromResource API,以在載入 ImageBitmap 物件時重複使用資源可提取的快取。(If3627、b/178751994)
1.0.0-alpha11 版
2021 年 1 月 28 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha11。1.0.0-alpha11 版包含此連結所列的修訂項目。
API 變更
- WithConstraints 已重新設計為 BoxWithConstraints,並移至 foundation.layout。(I9420b、b/173387208)
- Key.DPadUp 已淘汰。請改用 Key.DirectionUp。(Iab335、b/177954892)
- 從現在起,擁有者介面為內部使用。(If8e35)
- 新增了 FocusManager.moveFocus() API,以便透過程式輔助方式移動焦點。(I045cb、b/177681839)
- 將 PopupPositionProvider 變更為使用視窗相關座標,而非全域座標。重新命名父項 GlobalBounds 為 anchorBounds,並變更 windowGlobalBounds 為 windowSize: IntSize (I2994a)
- Duration 和 Uptime 會改為 Long 毫秒,同時此步驟也能移除這些類別上指標輸入的依附元件。(Ia33b2、b/175142755、b/177420019)
- 新增了 AmbientSavedStateRegistryOwner,與現有的 AmbientLifecycleOwner 和 AmbientViewModelStoreOwner 類似 (I9a3e8、b/176756365)
- 更新了向量圖形 API,以支援對向量圖形根套用的色調剖析。(Id9d53、b/177210509)
- 將 toolType 新增至 PointerInputChange 以區分裝置 (Iac787、b/175142755)
- AmbientWindowManager 已重新命名為 AmbientWindowInfo (I2686a、b/177084714、b/177084983)
- 淘汰了全域座標方法,並建構新的視窗式座標方法。(Iee284)
- 新增了 Modifier.toolingGraphicsLayer,這會在檢查功能開啟時加入圖形圖層修飾符 (I315df)。
- FocusRequester.createRefs 可能會有變動,因此目前標示為實驗性 (I2d898、b/177000821)。
- SemanticsPropertyReceiver.hidden 已重新命名為 invisibleToUser 並標示為 @ExperimentalComposeUiApi。AccessibilityRangeInfo 已重新命名為 ProgressBarRangeInfo。stateDescriptionRange 已重新命名為 progressBarRangeInfo。AccessibilityScrollState 已重新命名為 ScrollAxisRange。horizontalAccessibilityScrollState 已重新命名為 horizontalScrollAxisRange。verticalAccessibilityScrollState 已重新命名為 verticalScrollAxisRange (Id3148)。
- 移除了 PointerInputData 和修改的 PointerInputChange,提供所有 PointerInputData 的欄位。將 PointerInputEvent 和 PointerInputEventData 改為內部使用,因為這些並未用於任何公用 API (Ifff97、b/175142755)。
- 更新了 GraphicsLayerScope 實作密度,以支援將 dp 轉換為原始像素 (Ied528、b/176819695)。
- 更新了矩陣 API,以遵循資料列主要順序並提供索引常數,協助於不同的矩陣表示法之間進行轉換,進而讓內部 SkMatrix 和 Matrix4 之間的架構轉換邏輯保持一致。(I432e6)
- 移除了實驗性的 monotonicFrameAnimationClockOf 方法 (Ib753f,b/170708374)
- 將 String.fintPrecedingBreak 和 String.fingFollowingBreak 移至 InternalTextApi。(I657c4)
- androidx.compose.ui.util.isSurrogatePair 已從公開 API 中移除。(Ia9494)
- 將 TransformedText.transformedText 重新命名為 TransformedText.text
- TransformedText 不再是資料類別 (Ie672a)
 
- 已將 data class從下列類別中移除:- InlineTextContent
- LocaleList (I605c7)
 
- 以下類別已不再屬於資料類別:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
 
- 將 VisualTransformation 變更為功能性介面 (I3bba4)
- 新增了函式參照參數類型 (I5e1bd)
- 將轉換後的繫結新增至 ScanningorNode (Ice42f)
修正錯誤
- 淘汰了 onCommit、onDispose 和 onActive,並改用 SideEffect 和 DisposableEffect API (If760e)
- 修改了 Font/FontFamily/Typeface 的工廠函式。 - 新增了以大寫字母開頭的工廠函式
- 淘汰了使用第一個字母小寫的舊版工廠函式
- 新的工廠函式會傳回 FontFamily 而非子類別
- 隱藏子類別的建構函式,確保子類別只能透過工廠函式建構
- 將 Font.asFontFamily 重新命名為 Font.toFontFamily (I42aa7)
 
- 推出了 - ComposeContentTestRule,可用於擴充- ComposeTestRule並定義- setContent,後者已從- ComposeTestRule中移除。新增可傳回- ComposeTestRule的工廠方法- createEmptyComposeRule(),且不會代為啟動活動。如要在測試期間啟動活動,請使用此方法,例如使用- ActivityScenario.launch(I9d782、b/174472899)
- animateAsState 現已改為 animateFooAsState,其中 Foo 是增加動畫效果的變數類型。例如 Float、Dp、Offset 等 (Ie7e25) 
- 已新增圖片和圖示的內容說明參數,用於為無障礙服務提供說明 (I2ac4c) 
- 移除應避免使用的 displaySize 值。一般建議使用 onRoot() 的尺寸,或至少使用視窗尺寸 (I62db4)。 
- OnSizeChanged 回報版面配置內容的大小。現在會回報其於修飾符鏈結內位置的大小 (I36b78、b/177562900)。 
- emit() API 和所有超載已淘汰,並重新命名為 ComposeNode。這些 API 是相同的,只是為了遵循 Compose 的命名慣例而使用了不同的名稱 (I4137b) 
- TextFieldValue 接受 AnnotatedString。然而,此為 API 變更,尚未導入多樣式文字編輯功能。 - 已從 EditingBuffer 建構函式參數中移除 initial。(I326d5)
 
- 已從 EditingBuffer 建構函式參數中移除 
- invalidate 和 compositionReference() 現已淘汰,並分別以 currentRecomposeScope 和 rememberCompositionReference 取代。(I583a8) 
- AnnotatedString 已變更為由 kotlin.CharSequence 擴充。因此 length 和 subSequence 現在是執行個體函式,而擴充功能函式則已經移除。(Iaf429) 
- RememberObserver 會取代 CompositionLifecycleObserver,而 CompositionLifecycleObserver 現已淘汰。 - RememberObserver是用修改後的語意和重新命名方法取代的- CompositionLifecycleObserver。針對只記錄一次的物件,您可以不假思索地改為使用新的 API,這是不變的建議做法。不過,如果參照在某個組合中已有多次記錄,系統會針對每個只呼叫一次- onEnter的參照呼叫- onRemembered。如果子組合 (例如- WithConstraints和- Scaffold) 使用該物件,則會多次呼叫- onEnter,導致無法保證能穩定地單次呼叫- onEnter,因此已將其從- RememberObserver中移除。- RememberObserver新增- onAbandoned,如果- RememberObserver執行個體是從傳遞至- remember的回呼所傳回,但未記錄在組合狀態中,並因此一律不會呼叫- onRemembered,這時就會呼叫此新增項目。之所以會這樣,可能是因為例外狀況在組合完成前終止組合,或是因為產生組合的狀態已過時 (或基於其他原因不再需要使用),導致組合遭到捨棄。如果按照上述單一參照建議提供的- RememberObserver執行個體追蹤了外部資源,則- onForgotten和- onAbandoned都表示不再需要資源。如果物件正在追蹤- onRemembered中啟動的工作或配置的資源,則可以忽略- onAbandoned,因為呼叫- onRemembered之後便不會對其發出呼叫 (I02c36)。
- 淘汰了 2 個或多個 TextUnit 之間的運算。淘汰了 TextUnit.Sp 和 TextUnit.Em 函式,改用 Int.sp 和 Int.em 等擴充功能函式。(I48369) 
- 根據預設,如果程式庫沒有明確宣告的公開資源 (例如透過 public.xml),其中的資源現在會設為不公開。(Ia1dcc、b/170882230) 
- 淘汰了 ScrollableColumn/Row。處理大型捲動內容時,使用 ScrollableColumn 的效率會比使用 LazyColumn 來得低,那是因為使用 LazyColumn 只能組合/測量/繪製可見元素。為了避免使用者效率低落,我們決定淘汰 ScrollableColumn 和 ScrollableRow,並改為使用 LazyColumn 和 LazyRow。使用者仍可決定自己不需採用延遲行為,並直接透過以下類似方式使用修飾詞:Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b、b/170468083) 
- 已為 LazyColumn/LazyRow/LazyVerticalGrid 的範圍新增 - items(count: Int)工廠方法。- items(items: List)和- itemsIndexed(items: List)現已成為擴充功能函式,因此在使用時必須手動匯入。陣列的新擴充功能超載:- items(items: Array)和- itemsIndexed(Array)(I803fc、b/175562574)
- 請使用 ImeAction.None 取代 ImeAction.NoAction - 請使用 ImeAction.Default 取代 ImeAction.Unspecified (Ie1bcc)
 
- 運用 TestCoroutineDispatcher 進行測試 (I532b6) 
- 已重新命名 TextInputService.onStateUpdated 做為 updateState (Id4853) 
- 淘汰了以 TransitionDefinition 為基礎的轉換方式 (I0ac57) 
- 已移除 TextUnitType.Inherit 方法。請改用 TextUnitType.Unspecified。(I9ff64) 
1.0.0-alpha10 版
2021 年 1 月 13 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha10。1.0.0-alpha10 版包含此連結所列的修訂項目。
破壞性變更
- 所有 - @Composable函式都執行完畢後,可透過重新建構內部編譯器 API,針對進入「套用變更」組合階段所產生的節點進行批次變更。- 這是一項可能會影響應用程式程式碼的破壞性行為變更,因為在套用完變更之前,您都無法透過內部和實驗性 API 使用節點。這種情況通常可以採取以下變通方法:在 - SideEffect可組合項中使用這類依附元件包圍程式碼,藉此延遲程式碼的執行作業,直到節點建立並完成初始化作業。(I018da)
API 變更
- 新增了 Modifier.focusOrder(),可用於指定自訂對焦週遊順序 (I90cf5、b/175899543、b/170155556、b/170155429)
- 移除了已淘汰的 focusObserver,改為使用 onFocusChanged 或 onFocusEvent (I3ecb9、b/175156387)
- EditOperations API 變更
- 已將 EditOperation 重新命名為 EditCommand
- 為 EditOperation 具體實作的指令後置字串。
- EditCommand 已不再是資料類別
- 已將 EditOperation.process 函式重新命名為 applyTo
- 已將 InputEventListener 重新命名為 InputEventCallback
- (I0a366)
 
- 移除了未使用的 PxSquared、PxCubed、PxInverse。已將 Size.center() 變更為屬性。(I973f7)
- 現在,ui-test 模組可以設定測試用 UI 重新重編 (Ibebd8)
- 已將 Velocity 修改成為具有元件部分和數學運算 (Ib0447)
- 將 @ExperimentalTesting重新命名為@ExperimentalTestApi,以便與類似的實驗 API 註解保持一致 (Ia4502、b/171464963)
- 已將 Color.useOrElse() 重新命名為 Color.takeOrElse() (Ifdcf5)
- 移除了未使用的 DpInverse、DpSquared 和 DpCubed 類別。(I4d62b)
- Constraints#satisfiedBy 已重新命名為 isSatisfiedBy。(I9cf5c)
- 新增回呼,在版面配置節點邊界變更時通知擁有者。(I72fd1)
- 為含有 Unspecified 常數的內嵌類別新增了 isSpecified、isUnspecified 和 useOrElse。(I93f7b、b/174310811)
- 展開 [Abstract]ComposeView API,回收以 Compose 為基礎的檢視畫面,處理其組合以便日後重新建立。新增 API,可用於安裝及探索視窗範圍的 Recomposers 和 CompositionReferences,以便建立子組合。 - 新增 ViewCompositionStrategy,可用於設定 [Abstract]ComposeViews 的組合處理策略;預設行為是在視窗卸離時丟棄 (I860ab)。 
- 移除了 Any.identityHashCode() 公用 API (I025d7) 
- 移除了 toStringAsFixed API,直接改為使用 String.format。(Iaba6b) 
- 為基礎 Strings.kt 新增 Toggle (I4a5b7、b/172366489) 
- 將 nativeClass 移至 ui 模組並設為內部使用。已在同等的實作中更新 nativeClass 的使用情形,改為使用「is MyClass」。(I4f734) 
- Modifier.focus() 和 Modifier.focusRequester() 現已淘汰。請改用 Modifier.focusModifier() 和 Modifier.focusReference()。(I75a48、b/175160751、b/175160532、b/175077829) 
- 推出 SelectionRegistrar.notifySelectableChange,向 SelectManager 通知 Selectable 更新 (I6ff30、b/173215242)。 
- 導入了 Outline.bounds 屬性,藉此取得各種外框實作的繫結矩形。(I16e74、b/175093504) 
- 淘汰了 TestUiDispatcher。請改用 Dispatchers.Main (Ic171f、b/175385255) 
- ImeOptions 和 KeyboardOptions 已不再是資料類別 (I3c898、b/168684531) 
- VisualTransform API 變更 - 已將 OffsetMap 重新命名為 OffsetMapping
- 已將 OffsetMap.identityOffsetMap 重新命名為 OffsetMap.Identity
- PasswordTransformation 不再是資料類別
- 已將 OffsetMapping 移至其檔案。
- (I0bdf3)
 
- 將 Position 重新命名為 DpOffset,並移除了 getDistance() (Ib2dfd) 
- 已將有趣的 Dp.isFinite() 變更為 val Dp.isFinite (I50e00) 
修正錯誤
- 重組工具現在會呈現目前狀態的流程,以便監控其活動及相關成效的活動。(Ifb2b9)
- 原生 keyEvent 現在可以透過 keyEvent.nativeKeyEvent 存取 (I87c57、b/173086397)
- animate()現已替換為- animateAsState(),後者會傳回- State<T>而非- T。這樣系統會將無效範圍縮小至讀取 State 值的位置,因此可以提升效能 (Ib179e)。
- 新增 Semantics 角色 API,並將 Role 新增為可點選、選取和切換的 SemanticsModifier 參數。Modifier.progressSemantics 已變更,讓 Slider 也能夠使用 (I216cd)。
- 新增以協同程式為主的 API Animatable,可確保動畫之間的互斥性。- 新增 DecayAnimationSpec,可支援多維度衰減動畫
- (I820f2、b/168014930)
 
1.0.0-alpha09 版
2020 年 12 月 16 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha09。1.0.0-alpha09 版包含此連結所列的修訂項目。
API 變更
- 已淘汰的 KeyEvent.Alt 現已移除。請改用 KeyEvent.isAltPressed。(Idd695)
- 淘汰了 Modifier.keyInputFilter 和 Modifier.previewKeyInputFilter,請改用 Modifier.onKeyEvent 和 Modifier.onPreviewKeyEvent (Idbf1b,b/175156384)
- Modifier.focusObserver 已淘汰。請改用 Modifier.onFocusChanged 或 Modifier.onFocusEvent (I30f17、b/168511863、b/168511484)
- 如要暫停遊標指標輸入 API,請將 RiverPointerInputScope 重新命名為 AwaitPointerEventScope,並將 HandlePointerInput() 重新命名為 awaitPointerEventScope()。(Idf0a1、b/175142755)
- AutoFill API 現為實驗性 API,必須透過選擇加入才能使用 (I0a1ec)
- 新增刪除宣告以建立 FocuSRequester 執行個體 (I35d84、b/174817008)
- 已分別將 accessibilityLabel 和 accessibilityValue 重新命名為 contentDescription 和 stateDescription。(I250f2)
- 將自訂事件從暫停指標輸入 API 中移除 (Ia54d5、b/175142755)
- 引入了 SelectionRegistrar 的數種新函式,並將 onPositionChange 重新命名為 notifyPositionChange。(Ifbaf7)
- 標示為內部使用的 LayoutNode 成員更多 (I443c6)
- 透過版面配置和測試加入 LayoutInfo (I9b190)
- AndroidOwner 內部 (Ibcad0、b/170296980)
- 移除了 ExperimentPointerInput 註解 (Ia7a24)
- 新增了巢狀捲動系統。詳情請參閱 Modifier.nestedScroll (I36e15、b/162408885)
- subcomposeInto(LayoutNode) 已設為內部 (Id724a)
- Applier介面經過變更,將樹狀結構建構程序從由上往下簡化為由下往上。- insert()方法已重新命名為- insertTopDown()。- 加入新的方法 - insertBottomUp()。- 套用器會根據效能表現選用 - insertTopDown()或- insertBottomUp(),將節點插入目前編輯的樹狀結構。- 對某些樹狀結構 (例如 - LayoutNode和- View) 而言,由下往上的建構方式會比由上往下更有效率。在這項變更之前,如要實作由下而上建構作業,您需要先插入一些堆疊,並必須將其複製到每個需進行由下而上效能建構作業的套用器。這項變更實施後,- Applier會覆寫- insertBottomUp()以由下往上建構樹狀結構,而覆寫- insertTopDown()則會由上往下建構樹狀結構。(Icbdc2)
- 已將 dismissOnBackClick 和 dismissOnClickExternal 屬性新增至 AndroidDialogProperties。這些動作可讓您設定要在何時叫用對話方塊的 onDismissRequest lambda。(If5e17) 
- 新增了 painterResource API,藉此從光柵化資產格式 (例如 PNG) 或 VectorDrawables 處理以不透明方式載入的 Painter 物件。取用者不必再事先判斷資產類型,並可呼叫此方法,取得用於 Image 可組合項或 Painter 修飾符的 Painter 物件 (I2c703、b/173818471)。 
- 新增了 Modifier.clearAndSetSemantics 以清除子系的語意,並設定新的語意。(I277ca) 
- 已將 ContentDrawScope 移至 ui-graphics 模組,以便與 DrawScope 搭配使用。(Iee043、b/173832789) 
- 推出 PathEffect 圖形 API,為筆劃形狀提供不同模式。同時也淘汰了 NativePathEffect 的使用方式,改為希望或實際導入 PathEffect。(I5e976、b/171072166) 
- 將 IdlingResource 介面新增至 Compose,做為 Espresso 閒置資源的 Compose 支援子類。可以透過 ComposeTestRule (I433f3) 註冊及取消註冊 
- 將 ComposeIdlingResource 全域 (非) 註冊和時脈全域 (未註冊) 註冊狀態變更為 ComposeIdlingResource (I32660) 
修正錯誤
- 現在,偏移修飾符中的 lambda 會傳回 IntOffset,而非 Float (Ic9ee5、b/174137212、b/174146755)。
- 已從公用 API 中移除 SlotTable、SlotReader 和 SlotWriter。這些項目先前被標示為 InternalInternalAPI。現在是撰寫模組的內部。 - 為了取代 ui-tooling API 而新增 CompositionData 和 CompositionGroup,用於擷取組合資訊。這些是公開工具,但不適合在 ui-tooling API 外使用,因為這些工具會提供 ui-tooling API 解讀的原始資訊 (I31a9c) 
- 提供繪圖環境大小資訊時,重構 ShaderBrush 以延遲建立著色器的執行個體。這適合用於定義在組合時構成可組合項完整繪圖邊界的漸層,而不必實作自訂的 DrawModifier 實作方式。 - 已淘汰漸層函式建構函式 API,並採用 Gradient 物件的工廠方法 (I511fc、b/173066799)。 
- 淘汰 LazyColumnFor、LazyRowFor、LazyColumnForIndexed 和 LazyRowForIndexed。請改用 LazyColumn 和 LazyRow (I5b48c) 
- 淘汰了 BuildCompat.isAtLeastR (Idb37e) 
- 新增了 buildAnnotatedString 工廠函式,以建構 AnnotatedString。淘汰了 annotatedString 建構工具函式。(Idfe0b) 
- 移除了 Float 和 Double 的擴充功能將值轉換為弧度。已移至實作 PathParser 中的私人函式,這是唯一使用的位置 (I25f52) 
1.0.0-alpha08 版
2020 年 12 月 2 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha08。1.0.0-alpha08 版包含此連結所列的修訂項目。
API 變更
- 新增語意動作 Dismiss (I2b706)
- 已將 DrawModifier API 從 androidx.compose.ui 套件移至 androidx.compose.ui.draw 套件。已建立 DrawModifierDeprecated.kt 檔案,藉此加入 typealiases/helper 方法,協助從淘汰的 API 改用目前的 API (Id6044、b/173834241)。
- 已將 Modifier.drawLayer 重新命名為 Modifier.graphicsLayer,同時也根據 API 意見回饋,將相關類別更新為 GraphicsLayer。(I0bd29、b/173834241)
- 已加入新的 placeable.placeWithLayer() 和 placeable.placeRelativeWithLayer() 方法,允許自訂版面配置和版面配置修飾符利用加入繪圖的圖層放置子項。有了這個檔案,我們首先可以將重新繪圖最佳化,這樣當我們需要移動子項時,就不必重新繪製其內容;再來,還能為子項套用繪圖轉換 (Ibd8f6,b/170296989、b/171493718、b/173030831)
- <T>已從 SubcomposeLayout 宣告中移除。現在不必指定類型即可使用該項目 (Ib60c8)。
- 新增了 Modifier.scale/rotate API,以便 drawLayer 使用。
- Modifier.drawOpacity已重新命名為- Modifier.alpha。
- 已將 Modifier.drawShadow重新命名為Modifier.shadow(I264ca、b/173208140)
 
- 規定 PointerInputData 的運作時間和位置欄位不可為空值。(Id468a)
- MaterialTheme 現可為選取控點和選取背景設定正確的顏色。非 Material 應用程式可以手動使用 AmbientTextSelectionColors 自訂用於選取項目的顏色 (I1e6f4、b/139320372、b/139320907)。
- 新增了 WindowManager.isWindowFocused 和 WindowFocusObserver,分別用於檢查主機視窗是否對焦,以及提供 onWindowFocusChanged 回呼。(I53b2a、b/170932874)
- 更新了 TransformOrigin API 為具有解構語法,以傳回 pivotFractionX和pivotFractionY為component1和component2(If43c4、b/173586560)
- 針對可組合 lambda 參數的命名和位置新增了 Lint 檢查,以檢查是否與 Compose 準則一致。另外也根據 Lint 檢查和指引,將部分使用 children做為結尾 lambda 名稱的 API 遷移至content(Iec48e)。
- 新增了 API,可檢查在傳送 keyevent 時是否按下 Alt、Ctrl、Meta 或 Shift 修飾符 (I50ed9)
- 新增了 Modifier.drawLayer()超載。這會在新的 GraphicsLayerScope 使用一個 lambda 區塊,可讓您定義圖層參數,以便在狀態變更時略過重組和版面重新配置程序。DrawLayerModifier 現已處於內部準備狀態,可將其邏輯遷移至 LayoutModifier 的 placeable.placeWithLayer() 方法 (I15e9f、b/173030831)
- 依照其他 Ambient 和 Compose API 準則,淘汰以 Ambient作為字尾所命名的 Ambient,並改為以 Ambient 作為字首的新屬性。(I33440)
- 已將 androidx.compose.ui.text.Typeface移至androidx.compose.ui.text.font.Typeface(Ic2b81)
- 語意引數 mergeAllDescendants 已重新命名為 mergeDescendants (Ib6250)
- 新增拖曳手勢偵測工具的暫停指標輸入 API,包括方向鎖定在內。(Icef25)
- 根據 API 規範,將 VectorAsset 重新命名為 ImageVector 移動 VectorAsset 並重新命名,成為 ImageVector 的內部類別。新增了 VectorAssetBuilder 的 typealias,以便連結至 compat 的 ImageVector.Builder (Icfdc8)
- 已將 ImageAsset 和相關方法重新命名為 ImageBitmap。(Ia2d99)
- 為 PlacementScope 的 place() 新增 zIndex 參數,以便讓 Modifier.zIndex() 做為 LayoutModifier 使用,且任何自訂版面配置都能直接在刊登位置區塊中為其子項設定 zIndexes (I711f7、b/171493718)
- 將基礎語意屬性移至 UI (I6f05c)
- 淘汰 place(Offset) 和 placeRelative(Offset)。請改用含有 int 偏移的超載 (I4c5e7)
- 移除了先前已淘汰的 API:移除了 Modifier.onPositioned,請改用 Modifier.onGloballyPositioned。Modifier.onDraw 已移除,請使用 Modifier.onDrawBehind。已移除 Modifier.plus,請使用 Modifier.then。已移除 Color.Unset,請使用 Color.Unspecified。PxBounds 類別已移除,請改用 Rect。(Ie9d02、b/172562222)
- 更新了 Alignment 介面,使其能夠發揮作用。(I46a07、b/172311734)
- 使用新的暫停指標輸入,新增了輕觸、輕觸兩下、長按和輕按指示的手勢偵測工具。我們還新增了一些公用程式,讓開發人員更容易編寫自己的手勢偵測工具。(I00807)
- id已重新命名為- LayoutIdParentData的- layoutId。- Measurable.id已重新命名為- Measurable.layoutId(Iadbcb、b/172449643)。
- 新增多點觸控手勢偵測工具,包括偵測旋轉、縮放和平移操作的協助程式。(Ic459d)
- 推出 SweepGradientShader 和 SweepGradientBrush API。(Ia22c1)
- 測試中的時間控制項 (TestAnimationClock 及其運用) 現在處於實驗階段 (I6ef86、b/171378521)
- 新增以協同程式為主的捲動 API: - 新增 LazyListState.snapToItem 和 LazyListState.smoothScrollBy,以及較低階的 API 捲動控制 API。這些 API 會提供可控制捲動操作的暫停介面,這個介面會等到捲動操作完成後再傳回。(Ie5642)。 
- 已在基礎中新增 Modifier.focusable。這項工具可讓您為元件新增可聚焦的行為,並採用正確的語意和無障礙功能 (I41eb9、b/152525426、b/162865824)。 
- 在 AnimationClockTestRule 中針對可委派給其 - clock的方法和屬性提供預設實作 (I7ea3d、b/173399709)
- AndroidComposeTestRule 現在可接受自訂活動啟動器 (Ib8288、b/153623653、b/154135019) 
- TextLayoutResult.getLineVisibleEnd 已淘汰。替代的 TextLayoutResult.getLineEnd 現已加入新參數 visibleEnd (I73282)。 
- 更新了 TextFieldValue API - 將 TextFieldValue.composition 設為唯讀
- 移除了因選取範圍無效而擲回的例外狀況 (I4a675、b/172239032)
 
- 支援文字轉語音引擎的 TtsAnnotation。(I54cc6) 
- 推出可在協同程式中執行動畫的新 API (Ied662) 
修正錯誤
- Box 的對齊參數已重新命名為 contentAlignment。(I2c957)
- offsetPx 修飾符已重新命名為 offset,且現已改用 lambda 參數,而非 State (Ic3021、b/173594846)。
- 已將 TextInputService 參數新增至 TextInputService#onStateUpdated (I3e8f5、b/172239032、b/171860947)
- 新增了 Lint 檢查,用於可組合函式中的修飾符參數。這項 Lint 檢查會查驗參數的命名、傳回類型、預設值和順序,確認是否符合 Compose 準則。(If493b)
- 暫時新增選項,允許 TestAnimationClock 由 MonotonicFrameClock 驅動 (I1403b、b/173402197)
- 新增了 Android Typeface 包裝函式。您可以透過 typeface函式 (例如typeface(Typeface.DEFAULT)) 載入 Android 字體。同時也將typefaceFromFontFamily()重新命名為typeface()(I52ab7)
- 新增了 Lint 檢查,用於確認修飾符工廠函式是否已定義為修飾符上的擴充功能,這樣才能順暢地鏈結在一起。(I07981)
- 移除舊的 ui-test 模組及其虛設常式 (I3a7cb)
- 重組工具不再接受 EmbeddingContext;系統會從 performanceCoroutineContext 取得必要的排程依附元件。FrameManager 已淘汰;平台在進行整合時應初始化本身的全域快照處理程序 (I02369)。
- 將樣式資訊傳送至無障礙節點。(If5e8d)
- TextUnit.Inherit 已重新命名為 TextUnit.Unspecified,以便與其他單位保持一致。(Ifce19)
Compose UI 1.0.0-alpha07 版
2020 年 11 月 11 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha07。查看 1.0.0-alpha07 版的修訂項。
API 變更
- 推出了 ScaleFactor 內嵌類別,用於表示相互獨立的水平軸和垂直軸的縮放比例係數,以支援縮放比例不統一的用途。- 已將 ComputeScaleFactor 方法新增至 ContentScale
- 新增了 ContentScale.FillBounds 以執行非統一的資源調度,藉此將 srcs 邊界延伸至完全符合目的地。
- 新增了運算子方法,以便使用大小參數計算 ScaleFactor 參數。
- (Ic96a6、b/172291582)
 
- 新增了用於建立對齊的 Biasalignment 和 BiasAbsoluteAlignment 工廠函式。(Iac836、b/169406772)
- 允許開發人員強制清除焦點。(I90372)
- 修正錯誤:這個錯誤會導致系統無法針對 Compose 內部的「瀏覽次數」繪製高度。(If7782)
- 在 ContentDrawScope 中建立 onDrawBehind API,以符合 Modifier.drawBehind 的命名慣例。(I4fc3a、b/171955269)
- 新增攝影機距離支援,以搭配圖層 API 上的 3D 轉換 rotationX/rotationY。(I40213、b/171492100)
- 新增了沒有回呼的 SelectionContainer (Ibfadb)
- 已移除 ExperimentSubcomposeLayoutApi 註解。現在可以在不新增 @OptIn 的情況下使用 SubcomposeLayout (I708ad)
- FirstBaseline 和 LastBaseline 已移至 androidx.compose.ui.layout 套件 (Ied2e7)
- 從 drawShadow() 修飾符中移除讓人感到混淆的不透明度 (I82c62、b/171624638)
- MeasureResult 已從 MeasureScope 中移出 (Ibf96d、b/171184002)
- 將數個版面配置相關符號從 androidx.compose.ui 移至 androidx.compose.layout.ui (I0fa98、b/170475424)
- 移除了已淘汰的 FocusState2 (I686cb、b/168686446)
- ZIndexModifier 現已轉為內部使用 (I1808b、b/171493718)
- 更新了 Size 參數上 lerp 方法的傳回類型,以傳回非空值的 Size,避免不必要的方框設置。(Ib0044)
- 新增了 TestMonotonicFrameClock,可運用 kotlinx-coroutines-test 的 runBlockingTest,對採用 Compose MonotonicFrameClock 等待組合外框事件的程式碼進行測試 (I4402f)
- 移除了 GestureScope.localToGlobal (I15299、b/171462785)
- 新增了 onAllNodesWithSubstringFinder (I81dd7、b/171462889)
- androidx.ui.test 模組已淘汰。請遷移至 androidx.compose.ui.test 和 androidx.compose.ui.test.junit4 (I452e8)
修正錯誤
- captureToBitmap 已移至 captureToImage。(I86385)
- 淘汰了 foundation.Text,改用 material.Text。如要瞭解不使用主題值的無預設立場基本文字 API,請參閱 androidx.compose.foundation.BasicText (If64cb)。
- 更新 TextFields 以接受 KeyboardOptions (Ida7f3)
- 將 KeyboardOptions 重新命名為 ImeOptions (I82f36)
- 已將 KeyboardType 和 ImeAction 移至 KeyboardOptions (I910ce)
- 新增了 provideDefault 做為提供環境的替代方法,可僅針對未提供任何環境值的情況指定環境值。(Id6635、b/171024925)
- BaseTextField 已淘汰。請改用 BasicTextField。(I896eb)
- 推出 ui-test-junit4 模組 (Ib91f8)
- relativePaddingFrom已重新命名為- paddingFrom。新增了- paddingFromBaseline修飾符,方便您指定版面配置邊界與文字基準線的距離。(I0440a、b/170633813)
- 將 LaunchedTask 重新命名為 LaunchedImpact,以便與 SideImpact 和 Disposableimpact API 保持一致。為鼓勵採用最佳做法,系統不允許使用不含主題參數的 LaunchedEffect (Ifd3d4)。
- 推出更新設定時會進行重組的資源可組合項。(I6387c、b/167352819)
- 這表示 Composer 必須在建構時提供 CoroutineContext (Ic4610)
- 套用多個 Modifier.zIndex()時,總共要計算zIndex的值。過去前者獲得好評。(Ic514c、b/170623936)
- 對內部 SlotTable 實作進行變更,但不會影響公用 API。(If9828)
- 新增了鍵盤自動更正輸入法編輯器選項 (I57b8d)
- androidx.ui.test 已移至 androidx.compose.ui.test (I9ffdb)
- 已從公用 API 移除 KeyboardOptions.toImeOptions。(Ic2e45)
外部貢獻
- 已停用內部構件 androidx.compose.ui:ui-text-android (Ib93fa) 的發布功能
1.0.0-alpha06 版
2020 年 10 月 28 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha06。1.0.0-alpha06 版包含此連結所列的修訂項目。
API 變更
- Recomposer 現已成為 CompositionReference 以及有效的組合父項。現在只有少數情況必須使用明確的 Recomposer。(I4036f)
- 淘汰 VectorPainter 並改用 rememberVectorPainter,更明確地指出可組合 API 會在內部利用「remember」持續保存各組合的資料。(Ifda43)
- 更新了 Modifier.drawWithCache API,顯示 ContentDrawScope (而非 DrawScope) 為接收器範圍,以便為實作提供重新排序繪製指令的功能。這相當適合用於混合/調色用途;在這些情況中,必須先顯示內容像素,才能正確套用相應的混合模式演算法。(Ie7ec8)
- 將 SimpleContainer 移至 PopupTestUtils.kt (I78c57)
- ConsumedData 已不再是資料類別。詳情請參閱 https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
- 固定 Rtl 控點位置。(I6e1e0)
- 將 DrawScope 和 ContentDrawScope 重構為介面,而不是抽象類別
- 已建立 DrawScope 的 CanvasDrawScope 實作項目
- 重構導入 DrawScope 以使用 CanvasScope
- 建立 DrawContext 以納入 DrawScope 的依附元件
- 已在 DrawScope 中移除已淘汰的方法 (I56f5e)
 
- 破壞性變更:將傳回值從 PointerInputFilter.onPointerEvent(...)中移除,因為在指標事件中唯一應支援變更的值是取用資料。現在您不必從PointerInputFilter.onPointerEvent(...)傳回資料,只要修改傳入的 PointerEvents 取用資料即可。(I6acd0)
- MeasureScope 和 IntrinsicMeasureScope 已成為介面。(I1a087、b/170461665)
- 系統已隱藏 AlignmentLine 的合併函式。(I9da1a、b/170612900、b/170611568)
- 新增在經組合的修飾符中指定檢查器資訊的功能 (Idee08、b/163494569)
- 已將 SelectAll 選項新增至選取選單 (Ief02b)
- 更新了 DrawTransform.rotate,採用預設的中心資料透視參數來比對說明文件。
- 更新了 DrawScope.rotateRad 以使用資料點的偏移偏移來符合其他轉換方法。
- 淘汰了 DrawScope.rotateRad 超載,因為其會對資料透視表的 x 和 Y 座標使用浮點值。
- (Iffcbb、b/170434992)
 
修正錯誤
- 已為 androidx 啟用 MissingGetterMatchingBuilder 的 API Lint 檢查功能 (I4bbea、b/138602561)
- 新增測試。(I6b8ae)
- 在 ComposeTestRule 中啟用轉場功能,並從 ComposeTestRule 中移除啟用閃爍游標的選項。(If0de3)
- 新增了 KeyboardCapitalization 輸入法編輯器選項 (I8ac38)
- 在 CoreTextField 中新增了單行鍵盤選項 (I72e6d)
- 將 SimpleContainer 移至 PopupTestUtils.kt (I65c3e)
- 已將 Radius API 重新命名為 CornerRadius,以便完善表達於 Compose 中的使用方式。更新說明文件,指出負圓角半徑的限制取值範圍已設為零 (I130c7、b/168762961)。
- 改善了 Android 互通性,具體做法是繼續將 MotionEvent 傳送至子項 Android View,後者會針對所有操作 (ACTION_DOWN除外) 的 onTouchEvent 傳回 false (I94c5a,b/170320973)
- 已將 Box 實作為內嵌函式。(Ibce0c、b/155056091)
外部貢獻
- 為 AnnotatedString.capitalize和AnnotatedString.decapitalize支援不同的語言代碼 (I4aa7f)
1.0.0-alpha05 版
2020 年 10 月 14 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha05。1.0.0-alpha05 版包含此連結所列的修訂項目。
API 變更
- 新增用於指定檢查器資訊的 DSL (Ic9a22)
- 將 LongPress 移到文字中。(Iff2bc)
- 實驗性 Modifier.pointerInput 暫停輸入修飾詞 (Ia77d2)
- 新增了複製/貼上/剪下這三種無障礙操作 (I6db4f)
- 移除 AndroidOwner 的公開建構函式 (Iacaef)
- 彈出式視窗和對話方塊現在會沿用父項視窗的 FLAG_SECURE。另外也新增了可明確設定這個標記的選項 (I64966、b/143778148、b/143778149)
- 耗用資料現已變動。此外,呼叫這些耗用的擴充功能函式現在不會再傳回新的 PointerInputChange,而是會變更所提供的 PointerInputChange。 - 開放變更 PointerEvent 資料的步驟有 2 個,這是第一個步驟,能讓使用者程式碼無法編輯其他指標資料。第二個步驟是從 - PointerInputFilter.onPointerEvent(...)移除- List<PointerInputChange>傳回類型 (Id067e)。
- 停用 Text 中的 Selection 和 Demo。(Ie7e97) 
- Made on 全域定位內嵌函式 (I15830) 
- 分別將 OnPositionedModifier 和 onPositioned() 重新命名為 OnGloballyPositionedModifier 和 onGloballyPositioned() (I587e8、b/169083903) 
- 為擁有者新增了 hasPendingMeasureOrLayout 屬性,指出擁有者是否有任何待處理的版面配置工作。(I3d9f8、b/169038599) 
- 新增了 API 來透過程式清除焦點 (Ie1dc2、b/161487952) 
- 移除了 - PointerInputFilter.onPointerInput(...)。並應改用- PointerInputFilter.onPointerEvent(...)。(I6f04a)
- 大小調整 - 移除了 size.getFlipped
- 移除了 size.rem
- 移除了 size.truncDiv (Ief44d、b/169790720)
 
- 在內嵌類別標記值的標準化過程中,將 Color.Unset 重新命名為 Color.Unspecified,以便與其他內嵌類別保持一致 (I97611、b/169797763) 
- 加入 TextOverflow.None。溢位為 None 時,Text 不會再處理溢位,而是向 LayoutNode 回報實際尺寸 (I175c9、b/158830170)。 
- AnnotatedString.Builder.addStringAnnotation 中的範圍參數已重新命名為代碼,以便維持 API 一致性。(I7c8cb) 
修正錯誤
- 透過減少每次捲動時子組合中的工作量,改善了 LazyColumn/Row 的捲動效能。為組合類別新增了 hasInvalidations() 方法,並將重組工具的 hasPendingChanges() 方法重新命名為 hasInvalidations() (Ib2f32、b/168293643、b/167972292、b/165028371)
- 將 size.Unspecified 的參數更新為 Float.NaN,而非 Float.POSITIVE_INFINITY。更新了 Painter 實作方式,以檢查 Size.Unspecified 和非有限大小 (I95a7e)。
- 自訂版面配置中的 place() 呼叫順序現在會定義子項的繪製順序 (Ibc9f6)
- 支援將 AnnotatedString 轉換成 SpannableString,以提供無障礙功能。(Ief907)
- 為較舊平台上的 Android 類別新增虛設常式,以盡可能避免使用倒影。(Ia1790)
- 修正的錯誤:如果顯示的螢幕鍵盤導致應用程式平移,指標輸入座標將變得不正確。(Ic4cec、b/163077821)
1.0.0-alpha04 版
2020 年 10 月 1 日
發布 androidx.compose.ui:ui-*:1.0.0-alpha04。1.0.0-alpha04 版包含此連結所列的修訂項目。
API 變更
- 新增了 OwnerScope,以便收集已失效的版面配置和繪圖觀測範圍 (Ic4cf8)
- 新增了 OnRemeasuredModifier 和 onSizeChanged(),可分別用於在內容版面配置完成重新測量時及大小有變動時接收回呼。(I657cf、b/154108792)
- 新增長按語意操作 (I6281b、b/156468846)
- 將 FocusManager 設為不公開。(I7872f)
- 將實作方式更新為建立專屬的 DrawCacheModifier 實作,而不是在 DrawModifier 中加入選用屬性。 - 更新了各種方法的說明文件 (Ibd166) 
- 將 TextRange 設定為內嵌,避免建立物件。(Id034b) 
- 無法再從自訂版面配置的刊登位置區塊讀取 PlacementScope#parentWidth 和 PlacementScope#parentLayoutDirection。(Icc1ae、b/168295623) 
- 將 AccessibilityScrollState 新增至語意屬性。(Ifeda9) 
- 推出 Modifier.drawWithCache 來支援建立繪圖物件,該物件會有條件地重新建立依附於大小/狀態資訊的依附元件 (I376dc) 
- 移除了 ParagraphConstraints。寬度現在會直接傳遞至 Paragraph (Ica712)。 
修正錯誤
- 更新了多個圖形 API
- 更新縮放和旋轉功能的轉換 API,改用單一 Offset 參數代表樞紐座標,而非使用 DrawScope 和 DrawTransform 中 x/y 座標的個別浮點參數
- 移除了 Rect.expandToInclude 和 Rect.join 方法
- 更新 Radius 說明文件,一併介紹橢圓形和卵形
- 新增說明文件,指出無須直接呼叫內嵌 Radius 類別的公開建構函式,而是應該透過函式建構函式將 Radius 物件例項化
- 移除了用於查詢 topRight、bottomRight、bottomCenter 等的 roundRect API
- 淘汰了 Rect.shift,改用 Rect.translate
- 移除了 RoundRect.grow 和 Rect.shrink API
- RoundRect.outerRect 已重新命名為 Rect.boundingRect
- 移除了 RoundRect.middleRect/tallMiddleRect/wideMiddleRect 和 Rect.isStadium 方法
- 已將 RoundRect.longestSide 重新命名為 RoundRect.maxDimension
- 已將 RoundRect.shortestSide 重新命名為 RoundRect.minDimension
- 已將 RoundRect.center 變更為屬性,而非函式
- 將 RoundRect 建構函式更新為使用 Radius 屬性,而非 x/y 半徑值的個別參數
- 移除了 Size API,假設其為原點 0,0 的矩形
- 在 Radius 中新增銷毀 API
- 將各種 RoundRect 擴充功能函式移轉為屬性
- (I8f5c7、b/168762961)
 
- foundation.Box 已淘汰,請改用 foundation.layout.Box。(Ie5950、b/167680279)
- 將 Stack 重新命名為 Box。我們將淘汰原本已有的 Box,改用 compose.foundation.layout 中的新 Box。新 Box 會在擁有多個子項時,將子項逐一向上堆疊,這個行為模式與舊 Box 不同,舊版的行為類似於 Column (I94893、b/167680279)。
- 淘汰了 Box 裝飾參數。如要為方框加上裝飾/邊框間距,請改用 Modifier (Modifier.background、Modifier.border、Modifier.padding) (Ibae92、b/167680279)
- 更新了多個圖形 API
- 更新了具有限定範圍轉換方法的 DrawScope API,指出轉換作業僅適用於回呼內部,在叫用回呼後就會移除
- 已將 clipPath 說明文件更新為參照路徑,而不是圓角矩形
- 已固定說明文件在 clipPath 中正確的參數
- 已將 DrawScope.drawCanvas 重新命名為 DrawIntoCanvas 和已移除的大小參數
- 將 inset 方法中的 dx/dy 參數重命名為水平和垂直
- 新增插邊超載,為 4 個邊界全都提供相同的插邊值
- 移除了 inset 方法的說明文件,指出插邊將會套用至所有 4 邊
- 更新了 Rect 類別的說明文件
- 更新了關於 Rect 參數的評論以符合 kdoc 樣式
- 移除了 Rect.join 和 Rect.expandToInclude
- 已為 Rect.translate(offset) 和已淘汰的 Rect.shift 建立超載。
- (If086a、b/167737376)
 
- 為 rootAnimationClockFactory、transitionsEnabled 和 textInputServiceFactory 加上 @VisibleForTesting 註解,將其設為內部 API 並隱藏其 kdoc (I554eb,b/168308412)
- 將 SelectContainer 從 Top 中移除,以停用預設選項並避免出現非預期行為。您可以特別使用 SelectContainer 來包裝需要選取的內容。(I8dfe0、b/158459594)
1.0.0-alpha03 版
2020 年 9 月 16 日
發布了 androidx.compose.ui:ui-*:1.0.0-alpha03。1.0.0-alpha03 版包含此連結所列的修訂項目。
API 變更
- 移除向前/向後語意語意。已在 AccessibilityRangeInfo 中新增步驟。(Ia47b0)
- 已從 Owner中移除onInvalidate()-OwnedLayer會處理無效判定。(Ica72b、b/162061312)
- 移除了大小量 API 中採用偏移參數的運算子。這些作業的結果不明,所以這些結果的類型不是預期。例如:大小 - 偏移能否傳回偏移值或差額? - 另外也移除大小類別中已淘汰的方法。(Iec902、b/166514214) 
修正錯誤
- 修正 LazyColumn 項目有時會出現錯誤繪製的情況,在某些情況下這也會導致當機。(Ibcf17、b/163066980、b/165921895)
- 淘汰了 DpConstraints 和使用該項目的 API。(I90cdb、b/167389835)
- 已將 createAndroidComposeRule和AndroidInputDispatcher從androidx.ui.test.android移至androidx.ui.test(Idef08,b/164060572)
- 已將版面配置 API 中使用的 gravity 一致重新命名為 align 或 alignment (I2421a、b/164077038)。
- 已在 ComposeTestRule 中加入 onNode 和其他全域方法,因為目前的全域方法即將淘汰。(Ieae36)
1.0.0-alpha02 版
2020 年 9 月 2 日
發布了 androidx.compose.ui:ui-*:1.0.0-alpha02。1.0.0-alpha02 版包含此連結所列的修訂項目。
API 變更
- 移除回呼,在版面配置節點邊界變更時通知擁有者。(If654e、b/166106882)
- 為向量圖形路徑新增了 filltype 參數支援,以便依據 evenOdd 或 NonZero 路徑填滿規則挖剪形狀。(I43dd2)
- 運作時間與速度現已變成內嵌類別 (I48f4a)
- 時間長度現在是內嵌類別 (I565eb)
- 新增回呼,在版面配置節點邊界變更時通知擁有者。(Ic40b3)
- 針對設有 Offset 和半徑的 Rect 函式建構函式,修正了其建立 Rect 時會遵循左、右、上、下順序,而非左、上、右、下順序的問題。 - 移除了 Rect 中已淘汰的隨附物件方法,改用函式建構函式。 - 新增了在 Rect.kt 中驗證方法的測試 (I08460、b/165822356) 
修正錯誤
- 新增了 MutableRect 這個可以修改的矩形。(I71bd2、b/160140398)
- Matrix4 已由 Matrix 取代。已移除 vectormath 套件的所有其他部分 (Ibd665、b/160140398)。
- 變更了可組合函式的呼叫慣例。這是二進位檔破壞性變更。所有程式庫都必須重新編譯,才能與這個版本的 Compose 編譯器外掛程式搭配使用。 - 這項變更不會對原程式碼層級產生重大影響,因為只有已變更的 API 屬於明確選擇啟用的編譯器 API。(I7afd2、b/158123185) 
- 修正了分派到 PointerInputFilter 時可能發生的當機情形,這項分派行為可能導致 PointerInputFilter 同步遭到移除。(I58f25) 
1.0.0-alpha01 版
2020 年 8 月 26 日
發布了 androidx.compose.ui:ui-*:1.0.0-alpha01。1.0.0-alpha01 版包含此連結所列的修訂項目。
0.1.0-dev 版
0.1.0-dev17 版
2019 年 8 月 5 日
發布了 androidx.compose.ui:ui-*:0.1.0-dev17。0.1.0-dev17 版包含此連結所列的修訂項目。
API 變更
- emitView已淘汰。請盡可能使用- AndroidView,在 Compose 中產生 View。請注意,系統日後將不再支援直接組合 View 和 ViewGroup 的做法,除非這是組合樹狀結構的一部分,且能透過 AndroidView 完成這項作業 (I29b1e、b/163871221)。
- FocusState2已淘汰,並由- FocusState取代 (Ia8b79、b/160822876、b/160923332)
- 我們淘汰了已移除的 AndroidView 超載。(I946b9、b/163802393)
- 自訂輸出項目現在可以宣告將其一或多個 setter 設為可略過,並在該輸出項目外獨立進行重組。(Ibbd13)
- 變更後的向量類別不再是資料類別,因為相同的物件執行個體會用於組合。 - 為 VectorPainter 新增了 mutableStateOf 標記,以便在向量內容變更時依條件重新繪製。 - 將 VectorComponent 執行個體重構為 VectorPainter 的一環,因為這會在不同組合中重複使用。 - 將 GroupComponent 和 PathComponent 更新為可變動的名稱欄位 (Ieae45、b/151378808) 
- 移除了 - onChildPositioned和- OnChildPositionedModifier。開發人員應改為在子版面配置使用- onPositioned和- OnPositionedModifier(I4522e、b/162109766)
- Offset 現在是內嵌類別 (Iaec70) 
- 將 modifier 參數新增至 SelectionContainer (I4aada、b/161487952) 
- 移除了已淘汰的 FocusModifier (I0b4ba、b/160922116、b/160821157、b/162441435、b/160822875、b/160921940) 
- 已將 - mergePolicylambda 新增至- SemanticsPropertyKey。這可用於定義 mergeAllDescendants 語意合併的自訂政策。根據預設政策,如果有父項值,就會直接使用父項值;如果沒有,則使用子項值 (Iaf6c4、b/161979921)。
- 限制條件現已改為內嵌類別 (I88736) 
- 新增了 FocusManager,將常見的焦點邏輯移出 AndroidComposeView (I528ef、b/161487952、b/162206799) 
- 更新了 Alpha 版的 PointerEventPass 名稱。(Ifda6f) 
- IntOffset 現已改名為內嵌類別 (Iac0bf) 
- IntSize 現已改名為內嵌類別 (I2bf42) 
- 將 - PlacementScope.placeAbsolute()重新命名為- PlacementScope.place(),而原先的- PlacementScope.place()則重新命名為- PlacementScope.placeRelative()。因此,- PlacementScope.place()方法不再以由右至左的結構定義自動鏡射位置。如果需要這個方法,請改用- PlacementScope.placeRelative()。(I873ac、b/162916675)。
- AlertDialog 現在為按鈕使用 FlowRow (I00ec1、b/161809319、b/143682374) 
- 將部分測試公用程式設為非公開,因為這些工具不在其所在位置。日後會公開顯示。(I32ab1) 
- 已重構指標輸入代碼的結構。(Ie3f45) 
- 淘汰了 PxBounds,改用 Rect。以 Rect 更新所有 PxBounds 使用情況,並透過註解加入適當的淘汰/取代作業,協助完成遷移 (I37038、b/162627058)。 
- 移除了已淘汰的 KeyEvent2。請改用 KeyEvent。(Ied2d0、b/162097587) 
- KeyEvent 有一個萬國碼 (Unicode) 屬性,可用於取得指定鍵和中繼鍵狀態組合所產生的萬國碼字元 (If3afc) 
- 將 DelayUp 自訂事件和相關類別設為選擇性 API,因為這很可能會變更。(I56d6f) 
- 移除了 2 個不再需要的 PointerEventPass。(I3dd9d) 
- 將參數顏色、陰影和 TextDecoration 新增至 Paragraph.paint。這個函式可以避免不必要的段落擷取作業。(I81689) 
修正錯誤
- 已從 TextField 移除 onFocusChanged 回呼。請改用 Modifier.focusObserver。(I51089、b/161297615)
- 已淘汰 Modifier.drawBorder。請改用 Modifier.border。Border 資料類別已由 BorderStroke 取代 (I4257d,b/158160576)
- 移除了已淘汰的 FrameManager 呼叫。 - 內部的 Compose API 經過變更,可減少追蹤狀態物件 (例如 - mutableStateof()) 的負載量 (I80ba6)
- 移除了 VerticalScroller 和 HorizontalScroller。請改用捲動式資料欄/資料列。已移除 Modifier.drawBackground。使用 Modifier.背景 (I73b0d、b/163019183) 
- 修正了將可儲存狀態的項目用於 for 迴圈時發生的異常終止問題。現已支援在 savedInstanceState() 中使用相同的鍵,並已根據這項新要求調整 UiSavedStateRegistry 的 API (I4ab76、b/160042650、b/156853976、b/159026663、b/154920561) 
- state { ... }可組合項現已淘汰,改為明確呼叫- remember { mutableStateOf(...) }以求一目瞭然。這樣可以減少管理狀態所需的整體 API 介面和概念數量,且符合類別屬性委派作業的- by mutableStateOf()模式。(Ia5727)
- 將 RRect 重新命名為 RoundRect,以更符合 Compose 命名模式。另外也建立了與 RRect 類似的函式建構函式,並淘汰了 RRect 函式建構函式 (I5d325) 
0.1.0-dev16 版
2020 年 8 月 5 日
發布了 androidx.compose.ui:ui-*:0.1.0-dev16。0.1.0-dev16 版包含此連結所列的修訂項目。
API 變更
- 淘汰了 OnChildPositioned,請改用子項的 OnPositioned (I87f95、b/162109766)。
- 淘汰了 setViewContent,應改用 setContent。(I7e497、b/160335130)
- 新增了 AndroidViewBinding API,以根據 ViewBinding 加載及組合版面配置資源。(I081c6)
- KeyEvent2 已由 KeyEvent (I2d770、b/162097585) 取代
- 新增了 Alt 硬體金鑰支援 (I9036b)
- FocusManager 已淘汰。請改用 Modifier.focus()、Modifier.focusObserver() 和 Modifier.focusRequester()。(I74ae4、b/162211322)
- loadVectorResource 支援 trimPath 屬性 (I808fe)
- 將對話方塊移至 ui (I47fa6)
- 移除了 2 個不再需要的 PointerEventPass。(I33ca7)
- 實作 PointerInteropModifier 可讓您接收 MotionEvents 並與 Compose 互動,就像您導入 Android View 一樣。(Ieb08c)
- 移除了已淘汰的標記修飾詞。請改用 layoutId。(Idaa05、b/162023919)
- 更新了支援由右至左書寫的 API。新增了 LayoutDirectionAmbient,可用於讀取及變更版面配置方向。移除了 Modifier.rtl 和 Modifier.ltr。(I080b3)
- 支援減少向量圖形的路徑 (Ie16c9、b/158188351)
- 新增了 Modifier.layout(),方便您建立自訂版面配置調節係數 (I73b69、b/161355194)
- 推出了新的 AndroidView API,並淘汰了現有的 API。(I5bcfd)
- 淘汰了 Modifier.plus,請改用 Modifier.then。「Then」可以更明確地指出先後順序,同時也禁止輸入會破壞鏈結且降低可讀性的 Modifier.padding().background() + anotherModifier(Iedd58、b/161529964)
- 新增 [Abstract]ComposeView View 子類別,以託管在 View 階層中的 Compose 內容。(I46357)
- Row和- Column現在是內嵌函式,可大幅減少使用這些項目的負擔。(I75c10)
- 新增了 SubcomposeLayout。這是一種低階原始物件,如果我們想要使用僅在測量子樹狀結構組合後期可用的某些值,便可利用這個原始物件在測量期間組合子項。例如 WithConstraints 不會使用 SubcomposeLayout 導入 (I25cc8)。
- 新增了 SemanticsNode.positionInRoot,可用於取得 SemanticsNode 相對於 Compose 根階層的位置 (Icdf26、b/161336532)
- MotionEvents 一路從 Android 傳遞到 Compose,然後再傳回 Android 中。(I14be8、b/158034713)
- 移除了 dropdownPopup。(I00430)
- 修正了挖剪式顯示區中的彈出式視窗位置。(Idd7dd)
- 新增無障礙動作以取得 TextLayoutResult (I9d6e6)
- 新增了 RemeasurementModifier。可同步重新評估版面配置。這通常不會用到,因為重新測量/重新版面配置會自動執行,不過在捲動過程中,我們會在 LazyColumnItem 內用到此項目。(I5f331、b/160791058)
- 移除 getLineEllipsisOffset/getLineEllipsisCount。請改用 getLineVisibleEnd/getLineEnd/isLineEllipsized。(I85aa2)
- 新增一些標記/註解做為最佳做法。(I66b20)
- 在 TextLayoutResult 中顯示更多行 API。(I79bd2)
- 用來轉換內建單位的內建向量轉換工具現可透過 Foo.VectorConverter 存取,例如 Dp.VectorConverter、Color.VectorConverter、Float.VectorConverter 等 (I3e273)
修正錯誤
- 解決廣泛的 API 問題 (I077bc)
- 移除未使用的 OffsetBase 介面
- 對齊 Offset 和 IntOffset 類別,以便採用一致的 API 介面
- 將 IntOffset.Origin 重新命名為 IntOffset.Zero,使其與 Offset API 一致
- 已將 nativeCanvas 方法從 Canvas 介面移出,以支援取用端建立自己的 Canvas 執行個體
- 建立了虛設常式 EmptyCanvas 類別,藉此將 DrawScope 重構為非空值參數 (而不是 lateinit),並確保該欄位不可為空值
- 已將 ClipOp 列舉重新命名為 Pascal 案件
- 已將 FilterQuality 列舉重新命名為 Pascal 案件
- 已將 StrokeJOIN 列舉重新命名為 Pascal 案件
- 已將 PointMode 列舉重新命名為 Pascal 案件
- 已將 PaintingStyle 列舉重新命名為 Pascal 案件
- 已將 PathFillType 列舉重新命名為 Pascal 案件
- 已將 StrokeCap 列舉重新命名為 Pascal 案件
- 更新 DrawCache 實作方式,不再使用 lateinit 參數
- 更新 DrawScope,不再讓 fillPaint 和 strokePaint 內部參數使用延遲委派功能
- 更新 Image 可組合項,避免使用 Box 並降低負擔
- 將 Outline 類別更新為包含 @Immutable 註解
- 將 PathNode 更新為包含各個路徑指示的 @Immutable 註解
- 由於撰寫作業已經完成,更新向量分子,移除等式的多餘性檢查
- 淘汰 Rect 隨附建構函式方法,改用函式建構函式
- 已使用 @Immutable 和 @Stable API 更新 Brush 類別和函式建構函式
- 已將 VertexMode 列舉更新為 PascalCase
- 更新 DrawScope selectPaint 方法,有條件地覆寫 Paint 的筆劃參數 (如果這些項目有所變更)
- 更新了 Size 來新增解構 API、將 UnspecifiedSize 重新命名為 Unspecified,以及移除未使用的方法
 
- 更新了撰寫的 BlendMode API 使用量,根據 API 層級,在 Android 架構 BlendModes 和 PorterDuff 模式之間正確對應。引進 BlendMode#isSupported API 做為功能查詢,確認裝置在使用前是否支援 BlendMode。(I0ef42)
- 已為 Lazy 清單的 itemContent 參數新增 LazyItemScope。這可提供修飾符來填滿父項大小上限,解決以下用途問題:項目應填滿可視區域,但因該項目的測量限制為無限,導致一般 Modifier.fillMaxSize() 無法運作 (Ibd3b2、b/162248854)。
- 移除了 SemanticsNodeInteraction.performPartialGesture。請改用SemanticsNodeInteraction.performGesture(Id9b62)。
- LazyColumnItems已重新命名為- LazyColumnFor。- LazyRowItems已重新命名為- LazyRowFor(I84f84)
- foundation.shape.corner套件已分割為- foundation.share(I46491、b/161887429)
- AndroidComposeTestRule已重新命名為- createAndroidComposeRule。(I70aaf)
- 已將更多 API 新增至 TextLayoutResult。(Id7e04)
- 素材 FilledTextField已重新命名為TextField,基礎TextField已重新命名為BaseTextField,以方便尋找及使用 (Ia6242、b/155482676)
- Modifier.draw 背景 已重新命名為 Modifier.background (I13677)
0.1.0-dev15 版
2020 年 7 月 22 日
發布了 androidx.compose.ui:ui-*:0.1.0-dev15。0.1.0-dev15 版包含此連結所列的修訂項目。
依附元件更新
- 如要使用 0.1.0-dev15版的 Compose,您必須依據上方「宣告依附元件」一節所示的新程式碼片段更新依附元件。
API 變更
- 淘汰了 FocusModifier,改用 Modifier.focus、Modifier.focusRequester、Modifier.focusObserver。淘汰了 FocusState 和 FocusDetailsState,改用 FocusState2 (I46919,b/160822875、b/160922136)
- 新增了觀測焦點狀態變更的修飾詞。(I05866、b/160924455、b/160923326)
- 新增了修飾詞以要求變更焦點 (I8dd73、b/161182057、b/160924778)
- 調整工具列選單,以正確顯示複製、剪下、貼上字樣。(Id3955)
- 單一值語意屬性現在使用呼叫樣式。舉例來說,「semantics { hidden = true }」現在會寫為:semantics { hidden() }(Ic1afd、b/145951226、b/145955412)。
- 新增了 Modifier.focus,這會取代 FocusModifier。(Ib852a、b/160924778)
- 為 TextField Selection 新增 FloatingToolbar。(Ie8b07)
- 為金鑰輸入相關 API (I53c0a) 新增實驗性 API 註解
- 已為所有 Focus 相關的 API 新增實驗性 API 註解 (I53b24、b/160903352)
- 新增的 FocusState2 將取代 FocusDetailsState (I0a3ba、b/160822595)
- 新增了 ExperimentFocus,此為 Focus API 的 @OptIn 註解。(I1544b、b/160820961)
- 新增了 IntBounds 單位類別,代表版面配置中的整數像素邊界。PopupPositionProvider 的 API 已更新,以便使用這個類別。(I0d8d0、b/159596546)
- Applier 現在必須使用 clear() 方法來棄置組合 (Ibe697)
- KeyEvent 已淘汰,並由 KeyEvent2 取代 (I68730)
- 為測試搜尋工具新增了一個選用標記 useUnMergedTree。(I2ce48)
- Made LayoutNode 實驗功能 API (I4f2e9)
- 為各種內嵌類別類型新增複製方法,包括: - Offset
- Size
- Radius
- Motion
- TransformOrigin 
- 淘汰了 Size.copy 這個隨附物件方法,改用執行個體複製方法 (Ife290、b/159905651) 
 
- 彈出式視窗、對話方塊和選單現在可以沿用相關 MaterialTheme (Ia3665、b/156527485) 
- TextDirection 已重新命名為 ResolvedTextDirection (I3ff38) 
- 從 Layout() 函式的測量區塊移除了版面配置方向參數。不過,在回呼內可透過測量範圍物件取得版面配置方向 (Ic7d9d) 
- 重構用於 SelectR 來重複使用。(I420e0) 
- 移除了 Clickable。使用 Modifier.clickable (I84bdf) 
- 刪除了 TestTag 和 Semantics。請改用 Modifier.testTag 和 Modifier.semantics (I15ff0、b/158841414) 
- 在這項變更前,如果有輸出運算子,Compose 編譯器外掛程式會以非隨意的方式,攔截對 @Composable 函式所含建構函式的呼叫 (I5205a、b/158123804) 
- Modifier.tag 已重新命名為 Modifier.layoutId,以避免與 Modifier.testTag 混淆。(I995f0) 
- 從 Placeable#get(AlignmentLine) 傳回的對齊線 Int 位置現在不可為空值。如果缺少查詢的對齊線,就會傳回 AlignmentLine.Unspecified (I896c5、b/158134875)。 
- AndroidView 可組合項已新增修飾詞參數。(I48a88、b/158746303) 
- 淘汰了 Semantics()。請改用 Modifier.semantics()。(I72407、b/158841414) 
- 新增 viewModel() 可組合項,依據類似在「活動」或「片段」中的方式來建立 ViewModel,或取得已經建立的 ViewModel (I5fdd1) 
- 以 Int 取代使用 IntPx,並以 IntOffset 取代 IntPxPosition。將 IntPxSize 替換成 IntSize。(Ib7b44) 
- 為了整合用於呈現調整大小資訊的類別數量,請將 Size 類別 (而非 PxSize) 的使用方法進行標準化。這樣就能使用內嵌類別,利用一個長整數封裝 2 個浮點值,呈現以浮點表示的寬度和高度 (Ic0191) 
- 為了整合用於呈現地點資訊的資訊類別數量,請將偏移量類別 (而非 PxPosition) 的用量標準化。這樣就能使用內嵌類別,利用一個經度封裝 2 個浮點型數值,呈現以浮點數表示的 x 和 y 偏移量。(I3ad98) 
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數。Px 類別也已完整刪除 (I3ff33) 
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I086f4) 
- 我們進行了大規模重構工作,其中一部分是將在各種組合中使用 Px 類別來處理像素參數,更換成只使用 Dp 和基本類型 (Id3434) 
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I97a5a) 
- TestTag 現已淘汰。請改用 Modifier.testTag。(If5110、b/157173105) 
- 我們已移除 ParentDataModifier#modifyParentData 的預設執行動作,這與一開始沒有實作介面的功能相同。(I0deaa) 
- 移除了先前已淘汰的 ScaleFit。請改用 ContentScale。(Ifbc5b) 
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I19d02) 
- 在 ui-material 中新增了 DropdownMenu 元件,此為 Material Design 選單實作。(I9bb3d) 
- 移除了已淘汰的 LayoutTag(),請改用 Modifier.tag()。移除了已淘汰的 Modifier.matchParent(),請改用 Modifier.matchParentSize()。(If8044) 
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I57bff) 
- 我們已取消淘汰 Modifier.semantics,並允許使用高階元件 (I4cfdc)。 
- 整合 CanvasScope 實作項目,因此現在 DrawScope 和 ContentDrawScope 重新命名為 CanvasScope 重新命名為 DrawScope。更新了 DrawScope 來實作 Density 介面,並提供 LayoutDirection。刪除 ContentDrawScope 中的 DrawScope 子類別。Painter 和 PainterModifier 已更新為不再自行維護 RTL 屬性,因為 DrawScope 已有此功能,不必手動設定 (I1798e) 
- DoubleTapGestureFilter 現可於不同的樹狀結構中區分 SingleTapGestureFilter。(If92b1) 
- 更新了 Alignment API 並新增了絕對對齊支援 (在 Rtl 環境中不會自動提供鏡像) (I38cd3) 
- 變更了 DrawLayer 修飾符 API:outlineShape 已重新命名為 shape,採用 RectangleShape 做為預設值,而且現在不可設為空值;clipToOutline 已重新命名為 clip;移除了 clipToBounds,原因是其等同於 RectangleShape 的 clip == true (I7ef11,b/155075735) 
- 更新了較高階的 Compose API,讓 Canvas 改為顯示 CanvasScope。如此一來,取用者就不必維護自己的 Paint 物件。如果取用者仍要求 Canvas 存取權,則可以使用 drawCanvas 擴充功能方法,這種方法可提供回呼,透過基礎 Canvas 發出繪圖指令 (I80afd)。 
- WithConstraints 結尾的 lambda API 已變更。我們現在以接收器範圍取代原本的兩個參數,除了 constraints 與 layoutDirection 之外,還提供 Dp 中的 minWidth、maxWidth、minHeight 和 maxHeight 屬性 (I91b9a、b/149979702) 
- 已將 LayoutModifier2 重新命名為 LayoutModifier。(Id29f3) 
- 移除已淘汰的 LayoutModifier 介面 (I2a9d6)。 
- Layout 和 LayoutModifier2 中的內建測量函式現在設有 IntrinsicMeasureScope 接收器,可提供附有隱性傳播版面配置方向的內建函式查詢 API。(Id9945) 
- Layout 和 LayoutModifier 子項能夠以不同的版面配置方向測量。(Ibd731) 
- 新增了 Modifier.zIndex() 來控制同一個上層版面配置的子項繪製順序。DrawLayerModifier 的 elevation 屬性已重新命名為 shadowElevation,不再控制繪製順序。變更了 DrawShadow 的參數順序:elevation 現在的順序為第一個,shape 為第二個並採用 RectangleShape 做為預設值 (I20150、b/152417501)。 
- 移除了擁有者的 onSizeChange 和 onPositionChange。(I5c718) 
- 新增了 Constraints2 副本,該副本僅支援 Int Connstraints 值,不支援 IntPx。系統將會移除 IntPx,並假設所有整數限制都是 Android 等像素。 - 同時新增 IntSize,最終會取代 IntPxSize。(I4b43a)
 
- 已將 Alignment 設為能以任意值實例化。新增了 1D Alignment。(Ia0c05) 
- alignToSiblings 現在可接受 Measured 而非 Placeable。(I5788d) 
- 
- 已將 ScaleFit 重新命名為 ContentScale
- 將 ContentScale 從 ui-graphic 移至 ui-core 模組,然後移至與 Edge API 相同的模組。
- 已將 ReMaxMax 重新命名為 裁剪
- 已將 MinMinDimensions 重新命名為 Fit
- 將 Fit 重新命名為 Inside
- ImageView.ScaleType 對應項
- 新增了說明文件,指出 Crop 和 Alignment.Center 的組合可達到與 ImageView.ScaleType.CENTER_CROP 相同的結果,而 Fit 與 Alignment.Center 搭配使用時,可達到與 ImageView.ScaleType.FIT_CENTER 相同的結果。Inside 與 Alignment.Center 搭配使用時,則可達到與 ImageView.ScaleType.CENTER_INSIDE 相同的結果
 
- Rtl 支援繪製修飾符。(I0aaf9) 
- 推出新的 API,從 XML 加載 Android 資料檢視。詳情請參閱 ViewInCompose 示範。(I42916) 
- 改善 DrawModifier API: - 已設定 Draw() ContentDrawScope 的接收器範圍
- 移除了 Draw() 的所有參數
- DrawScope 的介面與之前的 CanvasScope 介面相同
- ContentDrawScope 含有 DrawContent() 方法 (Ibaced、b/152919067)
 
- 為 LayoutCoordinates 新增了 positionInParent 和 boundsInParent。(Icacdd、b/152735784) 
- DrawLayerModifier 和 drawLayer() 現已預設 clipToBounds 和 clipToOutline 為 false。(I0eb8b、b/152810850) 
- 已將 LayoutResult 重新命名為 MeasureResult。(Id8c68) 
- 新增了用於定義版面配置修飾符的 API LayoutModifier2,並淘汰 LayoutModifier (If32ac) 
- 將修飾符和運算子替換成工廠擴充功能函式 (I225e4) 
- 新增了 TranslationX/Y 屬性,以補償特定圖層的繪圖指令顯示清單。因應動畫或觸控事件來移動內容時,這項功能就能派上用場。(I8641c) 
- 在 Layer API 中新增了 PivotX 和 PivotY 參數,以支援在圖層上的特定位置旋轉及調度資源 (Icf7c3) 
- 新增 OnPositionedModifier 和 OnChildPositionedModifier,以取代 OnPositiond 和 OnChildPositioned 可組合函式。(I2ec8f) 
- 新增了 LayerModifier 這個修飾符,可為版面配置新增 RenderNode。可讓您設定剪輯、不透明度、旋轉、縮放和陰影。這將取代 RepaintBoundary。(I7100d、b/150774014) 
- 將版面配置方向設為從上層版面配置節點往子項傳播。新增了版面配置方向修飾符 (I3d955)。 
- 堆疊元件支援從右至左方向性 (Ic9e00) 
- 在 Compose 版面配置中提供 Rtl 初始支援 (Ia5519) 
- Density 和 DensityScope 已合併至單一介面。現在可以使用 DensityAmbient.current 取代 EnvironmentDensity()。使用 with(density) 取代 withDensity(density) (I11cb1) 
- 變更了 LayoutCoordinates,將 providedAlignmentLines 設為 Set (而非 Map),同時讓 LayoutCoordinates 導入 get() 運算子,而不是擷取一個值。這樣一來,修飾符就能輕鬆修改組合的一或多個值,而不必為每個修飾符建立新的集合 (I0245a) 
- LayoutCoordinates 已不再具備位置屬性。考慮使用 LayoutModifiers、旋轉或資源調度時,排名屬性並不合理。開發人員應改用 parentCoordinates 和 childToLocal() 計算 oneLayoutCoordinate 之間的轉換。 - LayoutCoordinates 使用 IntPxSize 做為大小屬性,而非 PxSize。Layout 會使用整數像素大小設定版面配置,因此所有版面配置大小都應使用整數,而不是浮點值 (I9367b)。 
- 改善限制的 API 介面 (I0fd15) 
- 建立 CanvasScope API,以便納入 Canvas 物件以顯示無狀態、宣告式繪圖 API 介面。變形作業侷限在其本身的接收器範圍內,大小調整資訊的範圍也對應插邊的邊界。不需要讓取用端保有自己的 Paint 狀態物件來設定繪圖作業。 - 新增了 CanvasScopeSample 並更新了試用版應用程式,以納入宣告式圖形示範 (Ifd86d)
 
- 移除了未使用的 MaskFilter API,原因是該 API 的用途有限,且在大多數應用實例中皆未針對硬體加速完成最佳化 (I54f76) 
- RectangleShape 已從 androidx.ui.foundation.shape.* 移至 androidx.ui.graphics.* (Ia74d5、b/154507984) 
- 已將 API 中所用可為空值的 Color 全部改為不可為空值,並使用 Color.Unset 取代空值 (Iabaa7) 
- 為 ImagePainter 推出其他選用矩形參數,以支援繪製基礎 ImageAsset 的子區段 (I0ea9e) 
- 新增了「未設定顏色」,代表不設定方塊的顏色。(If901a) 
- 新增了 Canvas.rotate 和 Canvas.scale 擴充功能,用以執行轉換作業的選用資料座標。這些會預設成目前畫布平移的左上角。 - 也將 Canvas.rotateRad 移至擴充用的一致性方法 (Ibaca6) 
- 建立 PixelMap API 來支援 ImageAsset 查詢像素資訊 (I69ad6)。 
- 將 toFrameworkRect/toFrameworkRectF 重新命名為 toAndroidRect/toAndroidRectF,以符合在 compose 和 Android 架構 API (其會以此為基礎進行建構) 之間的物件轉換命名慣例。也更新了這些 API 的說明文件 (I86337) 
- 新增了 VectorPainter API,取代向量圖形的現有子組合 API。子組合的結果是 VectorPainter 物件,而非 DrawModifier。已淘汰先前的 DrawVector 可組合項,改用 VectorPainter。 - 將 Image(Painter)API 重新命名為 PaintBox(Painter) 已建立 Vector 可組合項,其行為類似 Image 可組合項,但改用 VectorAsset 而非 ImageAsset (I9af9a、b/149030271) 
- 將 Image 重新命名為 ImageAsset,以進一步區分 Image 資料與即將推出並用於參與版面配置及繪製內容的 Image 可組合項。在 android.graphics.Bitmap、Bitmap.asImageAsset() 上使用 _Body:Created 擴充功能方法,可用於建立 ImageAsset 執行個體,協助結合傳統的 Android 應用程式開發與 Compose 架構 (Id5bbd) 
- 新增了 TextDirection.Content (I48f36) 
- 新增了 TextDecoration.plus 運算子 (I0ad1a) 
- 將 - Force從 TextDirectionAlgorithm 列舉值中移除 (Icc944)
- TextDirectionAlgorithm 已重新命名為 TextDirection (I75ce8) 
- 針對 TextField Selection 實作 LongPressAndDrag。(I17919) 
- 新增了 AnnotatedString.getStringAnnotations,用來傳回範圍內的所有註解。(I1fa00) 
- 已將 Locale 和 LocaleList 的套件名稱從 androidx.ui.text 變更為 androidx.ui.intl (I8132c) 
- TextField 的游標有閃爍的動畫 (Id10a7) 
- API 變更:AnnotatedString(builder: Builder) 已重新命名為 annotationdString(builder: Builder)。(Ia6377) 
- API 變更:AnnotatedString.Item 已重新命名為 AnnotatedString.Range。(I2d44d) 
- 將 AnnotatedString.Builder.addAnnotationString 重新命名為 addStringAnnotation。(I5059e) 
- 現在可以使用 onTextInputStarted 回呼提供的 SoftwareKeyboardController 來隱藏/顯示螢幕鍵盤 (I8dc44、b/151860051) 
- 新增了 (Text/ParaGraph/Span) Style 的加號運算子,可委派到 Merge() 函式。(Ia1add) 
- FontWeight.lerp 不再提出貼齊功能。這仍然是資料類別。(I521c2) 
- FontWeight 建構函式為公開狀態,不再是資料類別 (Id6b1f)。 
- 將 getLineStart、getLineEnd、getEllipsisOffset 和 getEllipsisCount 新增至 TextLayoutResult (Ibc801) 
- ui-text 模組已重新命名為 ui-text-core (I57dec) 
- 移除了未使用的 Size 類別,因為 ui-幾何圖形模組有重複的 Size 類別。(I1b602) 
- 新增了 AdapterList 這個捲動清單元件,僅撰寫及配置顯示的項目。目前已知的問題包括,這個元件僅限直向,且無法完全處理子項的所有變更。(Ib351b) 
- 在 Box 中新增邊框間距、框線、形狀和背景參數 (I05027、b/148147281) 
修正錯誤
- 文字欄位中 onFocusChange 回呼已重新命名為 onFocusChanged (Ida4a1)
- VerticalScroller 和 HoriziontalScroller 現已淘汰,使用 ScrollableColumn 和 ScrollableRow,透過資料欄/資料列行為和參數或使用內建功能,或是對元素使用 Modifier.verticalScroll 和 Modifier.horizontalScroll。同樣地,淘汰了 ScrollerPosition,改為使用 ScrollState (I400ce,b/157225838、b/149460415、b/154105299)
- runOnIdleCompose已重新命名為- runOnIdle(I83607)
- 將多個測試 API 重新命名,提供更直覺化的使用體驗。將所有 FindXYZ API 都重新命名為 onNodeXYZ。將所有 doXYZ API 都重新命名為 performanceXYZ。(I7f164)。
- 您現在不必新增撰寫,就能在 ViewGroups 中撰寫 Compose UI。如需範例,請參閱 ViewInteropDemo。(I9ab0b、b/160455080)
- 為 MutableVector 新增了 sortWith 和 removeRange (Icccf7)
- 實作「拖曳選取控點」來變更 TextField 的選取範圍。(I27032)
- 移除了包裝 NativeShader 類別的 Shader 內嵌類別,取代預期的 NativeShader 類別。已包裝的 Shader 內嵌類別在 API 介面上並未新增任何重要項目,而且是內嵌類別,因此請直接使用 NativeShader 類別。(I25e4d)
- 將 PainterModifier 重構為不再根據特定限制和 ContentScale 參數提供資源調度。Paint 的實作方式,是依據其所繪製的 DrawScope 特定大小,自行擴充繪圖內容。 - 修正了 VectorPainter 的快取點陣圖遭調整成其預設大小,而非指定繪製大小的問題。 - 更新了 ImagePainter 來擴充內容,而非仰賴 PainterModifier。(I6ba90) 
- 新增頂層 withFrameNanos 函式,用於動畫計時 (Ie34c5) 
- @Untracked 註解已淘汰。替換為 @ComposableContract(tracked=false) (Id211e) 
- androidx.ui.foundation.TextFieldValue 和 androidx.ui.input.EditorValue 已淘汰。使用該類型的 TextField、FilledTextField 和 CoreTextField 可組合項也已淘汰。請改用 androidx.ui.input.TextFieldValue (I4066d,b/155211005) 
- 修正問題:如果在分派過程中透過子組合來移除 PointerInputFilters,指標輸入分派作業會導致系統當機。不過現在我們已順利解決這項問題。(I1f48b、b/157998762) 
- 修正問題:如果在分派過程中透過子組合來移除 PointerInputFilters,指標輸入分派作業會導致系統當機。不過現在我們已順利解決這項問題。(Iab398、b/157998762) 
- 將 Radius 類別重構為內嵌類別。移除具有預設參數的函式建立方法,並使用預設參數讓半徑 Y 軸與必要 X 軸半徑參數的 y 軸相符。 - 將 DrawScope.drawRoundRect 更新為使用單一 Radius 參數,而非取用沿著 x 和 y 軸半徑的 2 個獨立浮點值 (I46d1b) 
- Recompose 可組合項已經不再是實用的抽象層。多數重組作業應該都是因為 MutableState 指派項目才會執行。除此之外,建議您使用 - invalidate函式來觸發針對目前範圍的重組作業 (Ifc992)。
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (Iede0b) 
- 變更 Compose 編譯器的程式碼產生策略。在變更之前,Compose 編譯器會將呼叫轉換為可組合函式。經此變更之後,我們現在可以轉換可組合函式的主體,並在多數情況下維持呼叫位置不變。 - 也就是說,與 Compose 執行階段進行通訊的大多數邏輯,都是在函式主體的開頭 (而不是在呼叫位置) 執行。 - 這應該是針對所有 Compose 使用情形的原始碼相容性變更。這項變更生效後,大多數 Compose 使用者都無需更新任何程式碼。 - 為了配合這項變更,所有可組合函式的 JVM 簽名皆已變更。接受單一參數的可組合函式已轉換為接受 3 個參數的函式,外加的參數為 Composer (也就是「key」整數),是用於透過呼叫傳播中繼資料的位元遮罩整數。 - Compose 也會將預設引數轉換為可組合的函式。此舉不會引入函式本身的額外合成預設超載,因此這項變更將導致接受定義的函式變少。 - 由這種情況產生的已知預期行為變更: - 部分呼叫會略過先前不會略過的部分
- 系統現可正確訂閱及處理預設引數運算式中的可組合運算式
 - 這項工作包含以下最佳化作業: 1. 參數的比較結果會透過呼叫圖傳播到其他可組合函式。這將導致執行階段的比較項目更少、縮減運算單元資料表的大小,以及略過更多先前未略過的可組合函式。 2. 系統在執行階段不會再比較或儲存在編譯時間判定為「靜態」的參數。這樣可以減少比較項,並縮減運算單元資料表的大小。 3. 函式主體的控制流結構可用於盡可能減少產生的群組數量。這麼做可減少運算單元資料表大小,並降低執行階段 4 的工作負擔。如果未在函式主體內使用調度和接收器參數,則在判斷函式是否可略過時不會將這些參數納入考量。 - 多數破壞性變更都是針對編譯器直接指定的 API,因此不會影響 Compose 的一般使用情形: 1. Composer::startExpr 已移除 2. Composer::endExpr 已移除 3. Composer::call 已淘汰 4. 已移除 - key的非變化版本超載。往後請使用- vararg版。5. Pivotal 註解已淘汰。請改為使用- key。6. ScopeUpdateScope::updateScope 已變更,現在預期接收 Function3,而不是 Function1 7. restartableFunction 和 restartableFunctionN 經更新後可納入其他編譯時間參數 (I60756、b/143464846)
- 移除了已淘汰的 LayoutAlign 修飾符。(I10877) 
- 移除了 RepaintBoundary,改用 DrawLayerModifier (I00aa4) 
- Button、FloatingActionButton 和 Clickable 現在有獨立的 - enabled參數。Button 上的部分參數已重新命名或重新排序 (I54b5a)。
- 將 ButtonStyle 替換成專用函式,並移除了文字 (字串) 超載。如需使用資訊,請參閱更新後的範例。(If63ab、b/146478620、b/146482131) 
- 對環境 API 做出破壞性變更。詳情請參閱記錄檔和 - Ambient<T>說明文件 (I4c7ee、b/143769776)
- 將 TextDirection 的預設行為改由 LayoutDirection 判定。例如,如果 LayoutDirection 為 RTL,預設的 TextDirection 就會是 RTL。先前為 TextDirection.ContentOrLtr/Rtl (I4e803) 
- 修正錯誤:將字型粗細和字型樣式以巢狀結構建立在 AnnotatedString 上時,文字無法正常顯示。(I77a9d) 
- 為 Text() 新增常用參數。如果您目前建立的本機文字樣式旨在傳遞這些參數中的一小部分,例如 Text(style = TextStyle(textAlign = TextAlign.Center)),您現在可以直接提供參數:Text(textAlign = TextAlign.Center) (I82768) 
- ui-android-text 模組已重新命名為 ui-text-android (I68cbe) 
