Compose Material
最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 12 月 11 日 | 1.7.6 | - | - | 1.8.0-alpha07 |
結構
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.material:material:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.material:material:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 說明文件。
1.8 版
1.8.0-alpha07 版
2024 年 12 月 11 日
發布 androidx.compose.material:material-*:1.8.0-alpha07
。1.8.0-alpha07 版包含這些修訂項目。
修正錯誤
- 修正文字欄位大小修飾符有時無法遵循的問題。(I90d4c、b/356905963)。
1.8.0-alpha06 版
2024 年 11 月 13 日
發布 androidx.compose.material:material-*:1.8.0-alpha06
。1.8.0-alpha06 版包含這些修訂項目。
1.8.0-alpha05 版
2024 年 10 月 30 日
發布 androidx.compose.material:material-*:1.8.0-alpha05
。1.8.0-alpha05 版包含這些修訂項目。
修正錯誤
- 最佳化 Scaffold
contentPadding
行為,避免在contentPadding
變更時一律重組主體內容。(I8c8e2、b/373904168)。 - 讓 Material Slider 在按下控制鍵時變更其值。(I1c442)
1.8.0-alpha04 版
2024 年 10 月 16 日
發布 androidx.compose.material:material-*:1.8.0-alpha04
。1.8.0-alpha04 版包含這些修訂版本。
API 變更
- 從
TextFields
中移除readOnly
,以便將其固定為穩定版基礎。(I3aaba)。
修正錯誤
- 在 Android S+ 上新增對展開元件的漣漪效果支援,例如在點選時展開的資訊卡。先前漣漪效果不會填滿新尺寸,但現在會擴展至新的邊界。(If509a、b/183019123)。
1.8.0-alpha02 版
2024 年 9 月 18 日
發布 androidx.compose.material:material-*:1.8.0-alpha02
。1.8.0-alpha02 版包含這些修訂項目。
1.8.0-alpha01 版
2024 年 9 月 4 日
發布 androidx.compose.material:material-*:1.8.0-alpha01
。1.8.0-alpha01 版包含這些修訂版本。
API 變更
- 新增
NavGraphBuilder.bottomSheet
建構工具,以便使用安全的引數建立底部資訊列 ((I28589、I777db、b/351858980))
1.7 版
1.7.6 版
2024 年 12 月 11 日
發布 androidx.compose.material:material-*:1.7.6
。1.7.6 版包含這些修訂項目。
1.7.5 版
2024 年 10 月 30 日
發布 androidx.compose.material:material-*:1.7.5
。1.7.5 版包含這些修訂項目。
1.7.4 版
2024 年 10 月 16 日
發布 androidx.compose.material:material-*:1.7.4
。1.7.4 版包含這些修訂版本。
1.7.2 版
2024 年 9 月 18 日
發布 androidx.compose.material:material-*:1.7.2
。1.7.2 版包含這些修訂項目。
1.7.1 版
2024 年 9 月 10 日
- 不會變更 Android 構件。移除了
-desktop
構件,並新增-jvmStubs
和-linuxx64Stubs
構件。這些目標並非用於使用,而是用來協助 Jetbrains Compose 作業的預留位置。
1.7.0 版
2024 年 9 月 4 日
發布 androidx.compose.material:material-*:1.7.0
。1.7.0 版包含這些修訂項目。
自 1.6.0 版以來的重要變更
- Material 元件已遷移至使用新的漣漪 API,且不再查詢
RippleTheme
。 - 先前接受
MutableInteractionSource
並預設為remember { MutableInteractionSource() }
的 Material 元件,現在會接受可為空值的MutableInteractionSource
,並預設為空值。如果您沒有提升並使用MutableInteractionSource
,則應傳遞空值。這樣一來,部分元件就能在需要時才延遲建立例項,進而提升效能。建議您在自己的元件中進行類似的變更。 BottomDrawer
、ModalBottomSheet
、BackdropScaffold
和標準底部彈出式視窗已升級為穩定版 API。
1.7.0-rc01 版
2024 年 8 月 21 日
發布 androidx.compose.material:material-*:1.7.0-rc01
。1.7.0-rc01 版包含這些修訂項目。
1.7.0-beta07 版
2024 年 8 月 7 日
發布 androidx.compose.material:material-*:1.7.0-beta07
。1.7.0-beta07 版包含這些修訂版本。
1.7.0-beta06 版
2024 年 7 月 24 日
發布 androidx.compose.material:material-*:1.7.0-beta06
。1.7.0-beta06 版包含這些修訂版本。
1.7.0-beta05 版
2024 年 7 月 10 日
發布 androidx.compose.material:material-*:1.7.0-beta05
。1.7.0-beta05 版包含這些修訂版本。
1.7.0-beta04 版
2024 年 6 月 26 日
發布 androidx.compose.material:material-*:1.7.0-beta04
。1.7.0-beta04 版包含這些修訂版本。
1.7.0-beta03 版
2024 年 6 月 12 日
發布 androidx.compose.material:material-*:1.7.0-beta03
。1.7.0-beta03 版包含這些修訂項目。
1.7.0-beta02 版
2024 年 5 月 29 日
發布 androidx.compose.material:material-*:1.7.0-beta02
。1.7.0-beta02 版包含這些修訂項目。
API 變更
- 更新 API 以設定連結樣式:將
TextLinkStyles
移至TextStyle
,並從 Material 中移除TextDefaults
(I5477b)
1.7.0-beta01 版
2024 年 5 月 14 日
發布 androidx.compose.material:material-*:1.7.0-beta01
。1.7.0-beta01 版包含這些修訂版本。
API 變更
- 更新 API,以便在文字中取得 Material 主題連結。具體來說,我們從
TextDefaults
中移除了用於建構主題化LinkAnnotations
的方法,並使用主題化連結剖析 HTML。請改為新增TextLinkStyles
類別,讓您可以將連結樣式做為參數新增至 Text 可組合項。(I31b93)
1.7.0-alpha08 版
2024 年 5 月 1 日
發布 androidx.compose.material:material-*:1.7.0-alpha08
。1.7.0-alpha08 版包含這些修訂項目。
API 變更
- 修正
backgroundColor
未套用至TextFieldDecorationBox
和OutlinedTextFieldDecorationBox
的問題。裝飾方塊現在可接受shape
參數。(I371c2、b/307694651)。 RippleConfiguration#isEnabled
已移除,LocalRippleConfiguration
已設為可為空值。如要停用漣漪效果,請將null
提供給LocalRippleConfiguration
,而不是使用isEnabled = false
提供RippleConfiguration
。(I22725)。- 除了一般樣式、滑鼠游標懸停和聚焦狀態,文字連結還有按下狀態樣式選項。
TextDefaults
方法各自都有pressedStyle
引數來支援此功能。(Ic473f、b/139312671)。
修正錯誤
OutlinedTextField
標籤的頂端邊框間距現在會考量系統字型大小。(Idc781)。
1.7.0-alpha07 版本
2024 年 4 月 17 日
發布 androidx.compose.material:material-*:1.7.0-alpha07
。1.7.0-alpha07 版包含這些修訂項目。
API 變更
- 除了一般樣式、滑鼠游標懸停和聚焦狀態,文字連結也提供按下狀態樣式選項。(I5f864、b/139312671)。
- 新增
TextDefaults
物件,其中包含建構LinkAnnotation
的方法,以及剖析 HTML 標記字串的方法,可將MaterialTheme
套用至連結。(I98532、b/139312671)。
1.7.0-alpha06 版
2024 年 4 月 3 日
發布 androidx.compose.material:material-*:1.7.0-alpha06
。1.7.0-alpha06 版包含這些修訂項目。
公告
androidx.compose.material
不再需要使用這個 Maven 群組中每個構件相同的版本。使用者可以混合搭配 Compose 基礎程式庫的版本 (Ie5fba)
API 變更
- 將更多
ModalDrawer
和BottomDrawer
預設值移至DrawerDefaults
物件。(Ib5b2e)
1.7.0-alpha05 版
March 20, 2024
發布 androidx.compose.material:material-*:1.7.0-alpha05
。1.7.0-alpha05 版包含這些修訂項目。
API 變更
- 已移除
ScaffoldSubcomposeInMeasureFix
標記。(I67363)。
1.7.0-alpha04 版
2024 年 3 月 6 日
發布 androidx.compose.material:material-*:1.7.0-alpha04
。1.7.0-alpha04 版包含這些修訂項目。
新功能
- 新增
androidx.compose.material:material-navigation
構件,在使用 Navigation Compose 時,新增對底部頁面做為目的地的支援。這會取代 Accompanist Navigation Material 程式庫。(d65d57、b/180247978)。
1.7.0-alpha03 版
2024 年 2 月 21 日
發布 androidx.compose.material:material-*:1.7.0-alpha03
。1.7.0-alpha03 版包含以下修訂項目。
API 變更
BottomDrawer
已從實驗版升級為穩定版。BottomDrawerState
現在會將進度公開為函式,讓您可以查詢特定目標之間的進度。BottomDrawerState
現在允許自訂動畫規格,confirmStateChange
也不再是尾隨的 lambda。(I9c029、b/261423850)。BackdropScaffold
已從實驗版升級為穩定版。動畫規格現在是符合規範的tween
規格。BackdropScaffold
的snackbarHost
參數不再是最後一個參數,以免與結尾 lambda 混淆。BackdropScaffoldState
會公開progress(from, to)
API,用於查詢錨點之間的進度。(I73f48、b/261423218)。- 標準底部彈出式介面已從實驗性功能升級為穩定版。已移除已淘汰的建構函式。動畫規格現在是符合指南的轉場規格。(I3c1a8、b/278692145、b/261409034)。
- 強制回應式底部資訊表已從實驗功能升級為穩定版。已移除已淘汰的建構函式。動畫規格現在是符合規範的
tween
規格。(Ic53f4、b/278692145、b/266780235、b/261409034)。
修正錯誤
- 修正
BackdropScaffold
在特定情況下與LookaheadScope
搭配使用時可能會異常終止的問題。(I51396) - 為改善效能,我們已移除
BottomSheetScaffold
中的子組合。修正BottomSheetScaffold
在特定情況下與LookaheadScope
搭配使用時會異常終止的問題。(I2f90c)。 - 移除了
ModalBottomSheetLayout
中的子組合,以改善效能。(I7a025)。
1.7.0-alpha02 版
2024 年 2 月 7 日
發布 androidx.compose.material:material-*:1.7.0-alpha02
。1.7.0-alpha02 版包含以下修訂項目。
1.7.0-alpha01 版
2024 年 1 月 24 日
發布 androidx.compose.material:material-*:1.7.0-alpha01
。1.7.0-alpha01 版包含這些修訂項目。
行為變更
- Material 元件已遷移至使用新的漣漪 API,且不再查詢
RippleTheme
。
API 變更
rememberRipple
和RippleTheme
已從 material-ripple 淘汰,並在 Material 和其他設計系統程式庫中新增 ripple 和RippleConfiguration
API。先前接受
MutableInteractionSource
且預設記住{ MutableInteractionSource() }
的 Material 元件,現在會接受可為空值的MutableInteractionSource
,並預設為空值。如果您沒有提升並使用MutableInteractionSource
,則應傳遞空值。這樣一來,部分元件就能在需要時才延遲建立例項,進而提升效能。建議您在自己的元件中進行類似的變更。
1.6 版本
1.6.8 版
2024 年 6 月 12 日
發布 androidx.compose.material:material-*:1.6.8
。1.6.8 版包含這些修訂版本。
1.6.7 版
2024 年 5 月 1 日
發布 androidx.compose.material:material-*:1.6.7
。1.6.7 版包含這些修訂版本。
1.6.6 版
2024 年 4 月 17 日
發布 androidx.compose.material:material-*:1.6.6
。與上次發布版本沒有差異。
1.6.5 版
2024 年 4 月 3 日
發布 androidx.compose.material:material-*:1.6.5
。1.6.5 版包含這些修訂項目。
1.6.4 版
March 20, 2024
發布 androidx.compose.material:material-*:1.6.4
。1.6.4 版包含這些修訂項目。
1.6.3 版
2024 年 3 月 6 日
發布 androidx.compose.material:material-*:1.6.3
。1.6.3 版包含這些修訂項目。
修正錯誤
- 修正
ExposedDropdownMenu
中的回歸問題,讓其再次可聚焦。(c0e0ed、b/323694447)。
1.6.2 版
2024 年 2 月 21 日
發布 androidx.compose.material:material-*:1.6.2
。1.6.2 版包含以下修訂項目。
1.6.1 版
2024 年 2 月 7 日
發布 androidx.compose.material:material-*:1.6.1
。1.6.1 版包含此連結所列的修訂項目。
1.6.0 版
2024 年 1 月 24 日
發布 androidx.compose.material:material-*:1.6.0
。1.6.0 版包含以下修訂項目。
1.6.0-rc01 版
2024 年 1 月 10 日
發布 androidx.compose.material:material-*:1.6.0-rc01
。1.6.0-rc01 版包含以下修訂項目。
1.6.0-beta03 版
2023 年 12 月 13 日
發布 androidx.compose.material:material-*:1.6.0-beta03
。1.6.0-beta03 版包含以下修訂項目。
1.6.0-beta02 版
2023 年 11 月 29 日
發布 androidx.compose.material:material-*:1.6.0-beta02
。1.6.0-beta02 版包含以下修訂項目。
1.6.0-beta01 版
2023 年 11 月 15 日
發布 androidx.compose.material:material-*:1.6.0-beta01
。1.6.0-beta01 版包含以下修訂項目。
1.6.0-alpha08 版
2023 年 10 月 18 日
發布 androidx.compose.material:material-*:1.6.0-alpha08
。1.6.0-alpha08 版包含以下修訂項目。
API 變更
- 將
materialIcon
函式淘汰,改用採用autoMirror
參數的函式超載。(Ia338d)
修正錯誤 - 針對大型內容自動增加導覽項目的高度。(0c4ecc、b/272336962)。
1.6.0-alpha07 版
2023 年 10 月 4 日
發布 androidx.compose.material:material-*:1.6.0-alpha07
。1.6.0-alpha07 版包含以下修訂項目。
- 依附元件更新
1.6.0-alpha06 版
2023 年 9 月 20 日
發布 androidx.compose.material:material-*:1.6.0-alpha06
。1.6.0-alpha06 版包含以下修訂項目。
行為破壞性變更
- 已從
BottomSheetScaffold
中移除導覽匣相關功能。將BottomSheetScaffold
納入 Drawer 可組合項,即可實現先前的功能。如需範例,請參閱BottomSheetScaffoldWithDrawerSample
。(I1dcc8)
API 變更
- 引入臨時標記,用於控制 Scaffold 應在測量期間還是放置期間測量子項。根據預設,這項功能會在評估中進行評估。如果您在使用新行為時遇到問題,請回報問題。(If6e3b)
1.6.0-alpha05 版
2023 年 9 月 6 日
發布 androidx.compose.material:material-*:1.6.0-alpha05
。1.6.0-alpha05 版包含以下修訂項目。
新功能
- 在從右到左的版面配置中顯示時,新增對自動鏡像圖示的支援。material-icons-core 和 material-icons-extended 模組中的圖示現在提供額外的圖示集,可在圖示允許的情況下支援自動鏡像。新的集合會加上
Icons.AutoMirrored.Filled...
等前置字元,並包含會在 RTL 版面配置中自動鏡像的圖示。如要查看可 (且應) 自動鏡像的圖示清單,請參閱Material 圖示清單。
API 變更
- 在從右到左的版面配置中顯示時,新增對自動鏡像圖示的支援。material-icons-core 和 material-icons-extended 模組中的圖示現在提供額外的圖示集,可在圖示允許的情況下支援自動鏡像。新的集合會加上
Icons.AutoMirrored.Filled...
等前置字元,並包含會在 RTL 版面配置中自動鏡像的圖示。如要查看可 (且應) 自動鏡像的圖示清單,請參閱Material 圖示清單。先前提供的圖示屬性現在已標示為已淘汰,並提供替代區塊建議,協助您進行遷移。如果您沒有任何特殊的 RTL 圖示鏡像處理方式,建議您改用新的圖示組合。舉例來說,Icons.Filled.ArrowBack
應重構為Icons.AutoMirrored.Filled.ArrowBack
。(I4b511)。
1.6.0-alpha04 版本
2023 年 8 月 23 日
發布 androidx.compose.material:material-*:1.6.0-alpha04
。1.6.0-alpha04 版本包含以下修訂版本。
修正錯誤
- 修正問題:在
LookaheadScope
內部 Scaffold 中使用Subcomposition
的部分元件 (例如BottomSheetScaffold
) 會過早嘗試讀取其大小。(If2c5d)。 - 修正
DropdownMenu
的offset
計算方式,讓 x 偏移值只取決於本機版面配置方向,且當選單位於螢幕底部附近時,y 偏移值就不會再反轉。(Iccc74、b/294103942)。 - 已最佳化
BottomSheetScaffold
的版面配置內部,並修正LookaheadLayout
中BottomSheetScaffold
的潛在問題。(Ic0afa)。
1.6.0-alpha03 版本
2023 年 8 月 9 日
發布 androidx.compose.material:material-*:1.6.0-alpha03
。1.6.0-alpha03 版包含以下修訂項目。
API 變更
- Material2 元件現在有個獨立的 API,可傳遞
windowInsets
,以支援 Android 中的邊到邊功能。與 Material 3 元件不同,Material 2 元件預設不支援內嵌,因此必須手動傳遞值。請參考相應的範例。(I655e8)。
1.6.0-alpha02 版本
2023 年 7 月 26 日
發布 androidx.compose.material:material-*:1.6.0-alpha02
。1.6.0-alpha02 版包含以下修訂項目。
API 變更
- 我們會將密度依附元件移至元件層級。這項規定適用於下列元件:
SwipeToDismiss
和以工作表為基礎的元件。請在密度為參數的情況下,使用提供的新超載。(I1846e)。 - 額外註解,用於指定可向可組合函式輸入的內容 (I51109)
- 更新 API 檔案,以標註相容性抑制 (I8e87a、b/287516207)
- 為
FabPosition
新增了新的 Start 對齊方式 (Ib7aea、b/170592777) - Material 2 中的
TextFieldColorsWithIcons
已淘汰,改用TextFieldColors
。覆寫leadingIconColor
或trailingIconColor
時,也請使用interactionSource
覆寫超載。(Id57ed、b/199377790)。
1.6.0-alpha01 版本
2023 年 6 月 21 日
發布 androidx.compose.material:material-*:1.6.0-alpha01
。1.6.0-alpha01 版包含這些修訂項目。
行為變更
- 在 Material 2 字體排版中,
includeFontPadding
預設為false
。預設的行高樣式也已變更為Trim.None
和Alignment.Center
,並在Typography
的TextStyle
中加入明確的lineHeight
(以 sp 為單位)。如要自訂這些值,請參閱 API 說明文件,並查看這篇網誌文章,深入瞭解這些變更。(Icabc3、I3f801、I04c03)
API 變更
- Material 的
Swipeable
API 已淘汰。請參閱 Foundation 的AnchoredDraggable
API,這些 API 經過最佳化處理,可用於簡單和複雜的用途。(I732e0)。
修正錯誤
BottomSheetState
、ModalBottomSheetState
和BottomDrawerState
現在會公開進度屬性,指出在滑動方向中,目前 (已固定) 錨點與最近錨點之間的進度。(I1b317、b/271169225、b/276375124、b/276776071、b/270066861)
1.5 版本
1.5.4 版本
2023 年 10 月 18 日
發布 androidx.compose.material:material-*:1.5.4
。1.5.4 版包含以下修訂項目。
1.5.3 版本
2023 年 10 月 4 日
發布 androidx.compose.material:material-*:1.5.3
。此版本沒有任何變更
1.5.2 版本
2023 年 9 月 27 日
發布 androidx.compose.material:material-*:1.5.2
。1.5.2 版包含以下修訂項目。
1.5.1 版本
2023 年 9 月 6 日
androidx.compose.material:material-*:1.5.1
發布,內容無變更。1.5.1 版包含此連結所列的修訂項目。
1.5.0 版本
2023 年 8 月 9 日
發布 androidx.compose.material:material-*:1.5.0
。1.5.0 版包含此連結所列的修訂項目。
自 1.4.0 版以來的重要異動
API 變更
- 將 Swipeable1 API 的變更項目納入
BottomSheetScaffold
。BottomSheetState
的confirmStateChange
參數已重新命名為confirmValueChange
。progress
現在會以浮點值公開。animateTo
和snapTo
是內部變數。請改用expand()
和collapse()
。direction
和overflow
已遭移除。offset
已由requireOffset()
取代。I323b4 - 將 Drawer 中的
snapTo
函式標示為非實驗 API (Ib9c18、b/261425368)。 - 為圓形進度指標新增軌跡色彩參數,並為圓形和線性進度指標新增筆劃上限參數 (Ie668c、b/216325962、b/222964817)。
ModalBottomSheetState
、ModalBottomSheetState.Saver
和rememberModalBottomSheetState
的confirmStateChange
已重新命名為confirmValueChange
(Ib48d1)。- 新增
Modifier.minimumInteractiveComponentSize
。這可用於保留至少 48.dp 的大小,在元素的測量尺寸較小時減少觸控互動 (I33f58、b/258495559)。 - 將 Swipeable API 的變更項目納入
ModalBottomSheetLayout
。ModalBottomSheetState
的 animateTo 不再接受animationSpec
參數,且已公開的偏移值現可為空值。請使用requireOffset
要求偏移值。(Ia2e79)。 - 新增
@JvmDefaultWithCompatibility
註解 (I8f206) - 將 Swipeable API 的變更項目納入
ModalDrawer. DrawerState
的animateTo
,並已由 open 和 close 方法取代,且偏移值現在可為空值。請使用requireOffset
要求偏移值。(I3de9e) - 更新 Drawer 和 Sheet,以便在手勢可能變成捲動事件時正確延遲按下動作。
- 將
minLines
參數加到 Material 和 Material 3 的 Text、TextField
和OutlinedTextField
中,藉此以行數為單位來設定元件的最小高度 (I4af1d)
修正錯誤
- 修正
pullRefresh
不會耗用速率,導致過度捲動顯示的問題。此外,也變更Modifier.pullRefresh
中onRelease
lambda 的 API 簽名,傳回用來耗用速率的浮點值 (I7db65、b/266874741) BottomSheetState
、ModalBottomSheetState
和BottomDrawerState
現在會公開進度屬性,指出在滑動方向中,目前 (已固定) 錨點與最近錨點之間的進度。(I1b317、b/271169225、b/276375124、b/276776071、b/270066861)- 修正
AlertDialog
關閉動作,當動作堆疊在對話方塊的寬度內時,會顯示在確認動作下方。這項修正可讓實作項目符合 Material Design 規格。(I029de、b/235454277) - 將
gesturesEnabled
設為 false 後,BottomSheetScaffold
就不會再參與巢狀捲動。(I634f3、b/215403277)。 - 修正
BottomSheetScaffold
在提供空白的時間段落內容時會異常終止的問題。(Ib24a5、b/235588730)。 - 修正
PullRefreshIndicator
攔截點擊/指標事件的問題。(2494256、b/271777421)。 - 修正
ModalBottomSheetLayout
在螢幕方向變更時會在邊緣情況下異常終止的問題。工作表內容中的版面配置動畫 (例如Modifier.animateContentSize
) 現已能順利運作。(I2f981、b/266780234)。
1.5.0-rc01 版
2023 年 7 月 26 日
發布 androidx.compose.material:material-*:1.5.0-rc01
。1.5.0-rc01 版包含此連結所列的修訂項目。
1.5.0-beta03 版
2023 年 6 月 28 日
發布 androidx.compose.material:material-*:1.5.0-beta03
。1.5.0-beta03 版包含以下修訂項目。
修正錯誤
BottomSheetState
、ModalBottomSheetState
和BottomDrawerState
現在會公開進度屬性,指出在滑動方向中,目前 (已固定) 錨點與最近錨點之間的進度。(I1b317、b/271169225、b/276375124、b/276776071、b/270066861)
1.5.0-beta02 版
2023 年 6 月 7 日
發布 androidx.compose.material:material-*:1.5.0-beta02
。1.5.0-beta02 版包含以下修訂項目。
1.5.0-beta01 版
2023 年 5 月 24 日
發布 androidx.compose.material:material-*:1.5.0-beta01
。1.5.0-beta01 版包含此連結所列的修訂項目。
API 變更
DrawerState
和BottomDrawerState
的偏移值現在不可為空值。而是回傳Float.NaN
,表示沒有偏移量。(Ie9855)。- 新增選項,可在建構
DropdownMenu
或ExposedDropdownMenu
時傳入ScrollState
,用於控制顯示的選單項目垂直捲動狀態。(Idb009、b/185304441)。 - 新增支援功能,可啟用/停用
ModalBottomSheetLayout
手勢,讓使用者設定這項功能,以便在更多精選的底部資訊卡中使用 (I40af0) - 在
BasicText
中新增色彩參數,以便有效地製作動畫或設定文字顏色。(Iffd88、b/246961787)。 - 將語意屬性
isContainer
重新命名為isTraversalGroup
(I121f6)
修正錯誤
- 修正
AlertDialog
關閉動作,當動作堆疊在對話方塊的寬度內時,會顯示在確認動作下方。這項修正可讓實作項目與 Material Design 規格保持一致。(I029de、b/235454277)
1.5.0-alpha04 版
2023 年 5 月 10 日
發布 androidx.compose.material:material-*:1.5.0-alpha04
。1.5.0-alpha04 版包含以下修訂項目。
API 變更
- 我們會將密度依附元件移至元件層級。這項規定適用於下列元件:
BottomDrawer
、ModalBottomSheetLayout
、BottomSheetScaffold
、Switch
、ModalDrawer
。請在密度為參數的情況下,使用提供的新超載。(I8fbd8)。
1.5.0-alpha03 版
2023 年 4 月 19 日
發布 androidx.compose.material:material-*:1.5.0-alpha03
。1.5.0-alpha03 版包含以下修訂項目。
API 變更
- 更新
BottomDrawer
內部,以便使用新的SwipeableV2
API。因此,BottomDrawerState
現在只會在類別層級定義 API,不會從SwipeableState
繼承方法/屬性。我們使用內部SwipeableV2State
的組合。偏移量現在是可為空值的浮點屬性,您仍可透過 currentValue 和 targetValue 屬性存取目前值和滑動目標值。系統仍支援先前的類別層級方法 (例如 open/expand/close) 和屬性 (例如isOpen/isClosed
)。(Iad40c、b/178529942、b/220676296)。
修正錯誤
- 更新 Switch 元件的內部結構。切換鈕現在會在拖曳時預覽最接近的目標狀態。(Id90d4)
BottomSheetScaffold
中的動畫工作表內容 (例如工作表內容上的Modifier.animateContentSize
) 已完成最佳化,現在可順利運作。(Ia913c、b/270518202、b/254446195)。- 當
gesturesEnabled
設為false
時,BottomSheetScaffold
就不會再參與巢狀捲動。(I634f3、b/215403277)。
1.5.0-alpha02 版
2023 年 4 月 5 日
發布 androidx.compose.material:material-*:1.5.0-alpha02
。1.5.0-alpha02 版包含此連結所列的修訂項目。
修正錯誤
- 修正
BottomSheetScaffold
在提供空白的時間段落內容時會異常終止的問題。(Ib24a5、b/235588730)。 - 修正
PullRefreshIndicator
攔截點擊 / 指標事件的問題 (2494256、b/271777421)
1.5.0-alpha01 版本
2023 年 3 月 22 日
發布 androidx.compose.material:material-*:1.5.0-alpha01
。1.5.0-alpha01 版包含此連結所列的修訂項目。
修正錯誤
- 新增 chipgroup reflow 範例。更新單行方塊群組範例中子方塊之間的水平邊框間距,以符合規格。(I3b155)
- 修正
ModalBottomSheetLayout
在螢幕方向變更時會在邊緣情況下異常終止的問題。工作表內容中的版面配置動畫 (例如Modifier.animateContentSize
) 現已能順利運作。(I2f981、b/266780234)。
1.4 版
1.4.3 版本
2023 年 5 月 3 日
發布 androidx.compose.material:material-*:1.4.3
,但沒有任何變更 (僅升級版本)。
1.4.2 版
2023 年 4 月 19 日
發布 androidx.compose.material:material-*:1.4.2
。1.4.2 版本包含這些修訂版本。
1.4.1 版本
2023 年 4 月 5 日
發布 androidx.compose.material:material-*:1.4.1
。1.4.1 版本包含這些修訂版本。
1.4.0 版本
2023 年 3 月 22 日
發布 androidx.compose.material:material-*:1.4.0
。1.4.0 版包含此連結所列的修訂項目。
自 1.3.0 版以來的重要異動
API 變更
- 新增
Modifier.minimumInteractiveComponentSize
。這可用於保留至少 48.dp 的大小,在元素的測量尺寸較小時減少觸控互動 (I33f58、b/258495559)。 - 將 Swipeable API 的變更項目納入
ModalDrawer
。DrawerState
的animateTo
已替換為開啟和關閉方法,且偏移值現在可為空值。請使用requireOffset
要求偏移值。(I3de9e) - 將
minLines
參數加到 Material 和 Material 3 的 Text、TextField
和OutlinedTextField
中,藉此以行數為單位來設定元件的最小高度 (I4af1d) - 在
BasicText
和BasicTextField
中新增minLines
參數。這樣即可使用行數來設定這些可組合元件的最小高度 (I24294、b/122476634)
1.4.0-rc01 版本
2023 年 3 月 8 日
androidx.compose.material:material-*:1.4.0-rc01
發布,內容無變更。1.4.0-rc01 版包含此連結所列的修訂項目。
1.4.0-beta02 版本
2023 年 2 月 22 日
發布 androidx.compose.material:material-*:1.4.0-beta02
。1.4.0-beta02 版包含以下修訂項目。
API 變更
- 將 Swipeable API 的變更項目納入
BottomSheetScaffold
。BottomSheetState
的confirmStateChange
參數已重新命名為confirmValueChange
。progress
現在會以浮點值公開。animateTo
和snapTo
是內部變數。請改用expand()
和collapse()
。direction
和overflow
已遭移除。offset
已由requireOffset()
取代。(I323b4)。
修正錯誤
- 從可點選和可選取的介面移除語意角色,並更新使用這些角色的元件,以便使用 Modifier.semantics 設定角色 (Ibb4ba)
- 對擴充 Material 圖示進行小幅更新,調整填滿的
desktop_mac
、directions
和kitchen
圖示。(I65f5e)。
1.4.0-beta01 版本
2023 年 2 月 8 日
發布 androidx.compose.material:material-*:1.4.0-beta01
。1.4.0-beta01 版包含此連結所列的修訂項目。
API 變更
- 修正
pullRefresh
不會耗用速率,導致過度捲動顯示的問題。此外,也變更Modifier.pullRefresh
中onRelease
lambda 的 API 簽名,傳回用來耗用速率的浮點值 (I7db65、b/266874741) - 還原屬性 getter
LocalMinimuTouchTargetEnforcement
並標示為已淘汰,然後重新導向至LocalMinimumInteractiveComponentEnforcement
(I60dd5)
1.4.0-alpha05 版
2023 年 1 月 25 日
發布了 androidx.compose.material:material-*:1.4.0-alpha05
。查看 1.4.0-alpha05 版的修訂項目。
修正錯誤
- 修正
ModalBottomSheetLayout's HalfExpanded
狀態未正確計算,且工作表似乎會浮動的問題 (I8c615、b/265610459)。 - 修正
ModalBottomSheetLayout
中的錯誤:在某些情況下,工作表從隱藏狀態切換為可見狀態時會異常終止 (Ia9265、b/265444789)。
1.4.0-alpha04 版本
2023 年 1 月 11 日
發布了 androidx.compose.material:material-*:1.4.0-alpha04
。1.4.0-alpha04 版包含此連結所列的修訂項目。
API 變更
- 在 Surface 上新增
IsContainer
語意屬性。這項屬性會在日後的變更中用到,屆時我們會根據 surfaces 等元素的語意含義來決定周遊順序 (I63379)。 - 將 Drawer 中的
snapTo
函式標示為非實驗 API (Ib9c18、b/261425368)。 - 為圓形進度指標新增軌跡色彩參數,並為圓形和線性進度指標新增筆劃上限參數 (Ie668c、b/216325962、b/222964817)。
ModalBottomSheetState
、ModalBottomSheetState.Saver
和rememberModalBottomSheetState
的confirmStateChange
已重新命名為confirmValueChange
(Ib48d1)。- 更多已淘汰隱藏函式的傳回類型為空值 (Ibf7b0)。
- 新增
Modifier.minimumInteractiveComponentSize
。這可用於保留至少 48.dp 的大小,在元素的測量尺寸較小時減少觸控互動 (I33f58、b/258495559)。 - 將 Swipeable API 的變更項目納入
ModalBottomSheetLayout
。ModalBottomSheetState
的animateTo
不再接受animationSpec
參數,且已公開的offset
現可為空值。請使用requireOffset
要求offset
(Ia2e79)。
修正錯誤
- 現在
ModalBottomSheetLayout
工作表的寬度上限為 640 dp (I71a4f、b/234927577)。 - 修正
rememberPullRefreshState
無法長期更新refreshThreshold
和refreshingOffset
的問題 (Ifed10、b/263159832)。 - 進度指標的進度現在不會超過預期範圍限制。(I8a7eb、b/262262727)。
- 如果
ModalBottomSheetState
尚未收到任何錨點,就會在呼叫snapTo
或animateTo
時更新currentValue
並不顯示動畫,而非擲回例外狀況 (I2c91b)。 - 修正 Material 2
FilterChip
實作方式中的已啟用狀態 (Id326a、b/261329817)。 - 修正在從直向轉為橫向時,
ModalBottomSheetLayout
若是HalfExpanded
就會異常終止的錯誤。請確認您傳入正確的initialValue
,例如檢查設定 (Ie8df7、b/182882364)。 - 修正
ModalBottomSheetLayout
會在工作表內容空白時異常終止的問題。ModalBottomSheetLayout
現在允許空白的工作表內容。如果工作表沒有內容,則只會出現 Hidden 狀態 (Ic2288、b/200980998、b/216693030)。
已知問題
- 從
androidx.compose.foundation:1.4.0-alpha03
更新為androidx.compose.foundation:1.4.0-alpha04
時,您可能會遇到java.lang.NoSuchFieldError
錯誤,這個網頁是最初回報問題的地方。我們已提交修正程式,預計下次 Compose 更新時就會發布。目前暫時性的解決方法是將androidx.compose.material
和androidx.compose.material3
程式庫更新為最新版本 (1.1.0-alpha04),或將androidx.compose.foundation
降級為 1.4.0-alpha03。
1.4.0-alpha03 版本
2022 年 12 月 7 日
發布 androidx.compose.material:material-*:1.4.0-alpha03
。1.4.0-alpha03 版包含此連結所列的修訂項目。
API 變更
- 新增
@JvmDefaultWithCompatibility
註解 (I8f206) - 將
Swipeable
API 的變更項目納入ModalDrawer
。DrawerState
的animateTo
已替換為open
和close
方法,且偏移值現在可為空值。請使用requireOffset
要求偏移值。(I3de9e) - 新增用於查詢祖系捲動資訊的 Modifier API。(I2ba9d、b/203141462)
- 如果手勢可能產生捲動事件,用在
Clickable
中可正確延遲按下的互動動作。 - 修正了在
Scrollable ViewGroup
中使用Clickables
時無法正確延遲漣漪效果的問題。 - 更新 Drawer 和 Sheet,以便在手勢可能變成捲動事件時正確延遲按下動作。
修正錯誤
- 修正如果重新整理狀態未變更為 True,
PullRefreshIndicator
會在呼叫onRefresh
後卡住的問題。(Ie2416、b/248274004)
依附元件更新
- Compose UI 和 Compose Material 現已依附於 Lifecycle 2.5.1。(I05ab0、b/258038814)
1.4.0-alpha02 版
2022 年 11 月 9 日
發布 androidx.compose.material:material-*:1.4.0-alpha02
。查看 1.4.0-alpha02 版的修訂項目。
API 變更
awaitFirstDown
和waitForUpOrCancellation
現在接受PointerEventPass
,靈活性更高 (I7579a、b/212091796)- 將
minLines
參數加到 Material 和 Material 3 的 Text、TextField
和OutlinedTextField
中,藉此以行數為單位來設定元件的最小高度 (I4af1d) - 已將
minLines
參數新增至BasicTex
t 和BasicTextField
。這樣即可使用行數來設定這些可組合元件的最小高度 (I24294、b/122476634)
1.4.0-alpha01 版
2022 年 10 月 24 日
發布 androidx.compose.material:material-*:1.4.0-alpha01
。查看 1.4.0-alpha01 版的修訂項目。
API 變更
- 新增了適用於手勢偵測工具的新方法:
awaitEachGesture()
。運作方式與forEachGesture()
類似,但手勢的迴圈完全在AwaitPointerEventScope
內運作,因此事件不會在疊代之間遺失。 - 由於
forEachGesture()
會導致事件在手勢間遺失,因此已將其淘汰並改用awaitEachGesture()
(Iffc3f、b/251260206)
1.3 版
1.3.1 版本
2022 年 11 月 9 日
發布 androidx.compose.material:material-*:1.3.1
。1.3.1 版包含此連結所列的修訂項目。
1.3.0 版
2022 年 10 月 24 日
發布 androidx.compose.material:material-*:1.3.0
。1.3.0 版包含此連結所列的修訂項目。
自 1.2.0 版以來的重要變更
行為破壞性變更
- 對話方塊和彈出式視窗支援的高度上限已降至 8dp。
API 變更
1.3.0-rc01 版
2022 年 10 月 5 日
發布 androidx.compose.material:material-*:1.3.0-rc01
。查看 1.3.0-rc01 版的修訂項。
1.3.0-beta03 版
2022 年 9 月 21 日
發布 androidx.compose.material:material-*:1.3.0-beta03
。查看 1.3.0-beta03 版的修訂項。
API 變更
- 在 Compose 中新增下拉即可重新整理元件 (I29168)
1.3.0-beta02 版
2022 年 9 月 7 日
發布 androidx.compose.material:material-*:1.3.0-beta02
。查看 1.3.0-beta02 版的修訂項。
自 1.3.0-beta01 以來沒有變更
1.3.0-beta01 版
2022 年 8 月 24 日
發布了 androidx.compose.material:material-*:1.3.0-beta01
。查看 1.3.0-beta01 版的修訂項。
行為破壞性變更
對話方塊和彈出式視窗支援的高度上限已降至 8dp。
Compose 對話方塊和彈出式視窗支援的高度上限已從 30dp 降至 8dp。這項變更會影響 Material 及 UI 自訂對話方塊和彈出式視窗。這項變更是為了減少 Android S 以下版本的無障礙服務錯誤,並確保這些視窗中的無障礙服務能與對話方塊或彈出式視窗的內容互動。
只有在您建立自訂對話方塊或彈出式視窗實作項目、且高度設定為 8 dp 以上時,才會受到這項變更的影響。請考慮降低對話方塊或彈出式視窗的高度。如果您需要選擇不採用這項新行為,可考慮以所需高度設定,自行建立對話方塊或彈出式視窗。不建議這麼做,因為無障礙功能可能會受到不當的影響,而且必須由開發人員確保對話方塊的底部或彈出式視窗能進行互動,並且可供無障礙服務讀取。
1.3.0-alpha03 版
2022 年 8 月 10 日
發布 androidx.compose.material:material-*:1.3.0-alpha03
。1.3.0-alpha03 版包含此連結所列的修訂項目。
1.3.0-alpha02 版
2022 年 7 月 27 日
發布 androidx.compose.material:material-*:1.3.0-alpha02
。查看 1.3.0-alpha02 版的修訂項。
外部貢獻
- 修正 Scaffold
FloatingActionButton
的AnimatedVisibility
問題 (I3a0ae、b/224005027)
1.3.0-alpha01 版
2022 年 6 月 29 日
發布 androidx.compose.material:material-*:1.3.0-alpha01
。查看 1.3.0-alpha01 版的修訂項目。
API 變更
- 將參數名稱從值變更為
RangeSlider
中的值 (I3b79a)
修正錯誤
- 更新標記範例以提供更多實質的內容說明。(I10b9d)
1.2 版
1.2.1 版本
2022 年 8 月 10 日
發布 androidx.compose.material:material-*:1.2.1
。查看 1.2.1 版的修訂項。
1.2.0 版
2022 年 7 月 27 日
發布 androidx.compose.material:material-*:1.2.0
。查看 1.2.0 版的修訂項。
1.2.0-rc03 版
2022 年 6 月 29 日
發布 androidx.compose.material:material-*:1.2.0-rc03
。查看 1.2.0-rc03 版的修訂項目。
- 自 1.2.0-rc02 以來沒有變更。
1.2.0-rc02 版
2022 年 6 月 22 日
發布 androidx.compose.material:material-*:1.2.0-rc02
。查看 1.2.0-rc02 版的修訂項目。
1.2.0-rc01 版
2022 年 6 月 15 日
發布 androidx.compose.material:material-*:1.2.0-rc01
。查看 1.2.0-rc01 版的修訂項目。
API 變更
- Compose 程式庫中的介面現已使用 jdk8 預設介面方法建立 (I5bcf1)
修正錯誤
- 使用主要圖示分頁更新標記,以附加標記至標籤,而不是圖示。(I90993)
1.2.0-beta03 版
2022 年 6 月 1 日
發布 androidx.compose.material:material-*:1.2.0-beta03
。查看 1.2.0-beta03 版的修訂項。
修正錯誤
- 修正了
BottomSheetScaffold
在應用程式列頂部上方的陰影上繪製的錯誤。BottomSheetScaffold
現在也會在放置 Snackbar 時將工作表的狀態納入考量:處於收合狀態時,會將 Snackbar 置於工作表和懸浮動作按鈕 (FAB) 上方;處於展開狀態時,Snackbar 會固定在工作表底部。(Ia80b5、b/187771422)
1.2.0-beta02 版
2022 年 5 月 18 日
發布 androidx.compose.material:material-*:1.2.0-beta02
。1.2.0-beta02 版包含此連結所列的修訂項目。
1.2.0-beta01 版
2022 年 5 月 11 日
發布 androidx.compose.material:material-*:1.2.0-beta01
。查看 1.2.0-beta01 版的修訂項目。
新功能
- 這是 1.2 版的第一個 Beta 版!
API 變更
- 重新命名
TextFieldDefaults.BorderStroke
可組合項,該可組合項用於繪製OutlinedTextField
至TextFieldDefaults.BorderBox
的框線 (I5f295)
1.2.0-alpha08 版
2022 年 4 月 20 日
發布 androidx.compose.material:material-*:1.2.0-alpha08
。查看 1.2.0-alpha08 版的修訂項。
API 變更
- 已從
PointerInputChange
淘汰部分使用功能 (向下或定位)。可使用consume()
徹底使用變更。可使用isConsumed
判斷其他使用者是否曾經使用過該變更。 PointerInputChange::copy()
現在會一律建立淺層複本。這表示只要使用一份複本,系統就會使用PointerInputChange
的複本。如要建立未繫結的PointerInputChange
,請改用建構函式。(Ie6be4、b/225669674)
1.2.0-alpha07 版
2022 年 4 月 6 日
發布 androidx.compose.material:material-*:1.2.0-alpha07
。查看 1.2.0-alpha07 版的修訂項。
1.2.0-alpha06 版
2022 年 3 月 23 日
發布 androidx.compose.material:material-*:1.2.0-alpha06
。查看 1.2.0-alpha06 版的修訂項目。
API 變更
- 更新可點選 Card API,以追蹤 Surface API 的相關變更 (I56bcb)
- Material 2 Surface API 更新,針對可選取及可切換的介面新增額外的超載函式。(Ifcca5)
1.2.0-alpha05 版
2022 年 3 月 9 日
發布 androidx.compose.material:material-*:1.2.0-alpha05
。查看 1.2.0-alpha05 版的修訂項目。
API 變更
LazyVerticalGrid
和LazyHorizontalGrid
現已轉為穩定版。(I307c0)。LazyVerticalGrid/LazyHorizontalGrid
和所有相關 API 已移至 .grid 子套件。請將匯入項目從 androidx.compose.foundation.lazy 更新為 androidx.compose.foundation.lazy.grid。(I2d446、b/219942574)- 還原
WindowInsetsControllerCompat
之前完全依賴 View 的變動,現在管理某些視窗標記改回需要 Window。淘汰ViewCompat.getWindowInsetsController
並改為WindowCompat.getInsetsController
,確保使用正確的 Window (例如 View 是在對話方塊內)。(I660ae、b/219572936) - 文字:
includeFontPadding
現在預設為關閉。系統會處理includeFontPadding=false
造成的裁剪問題,長指令碼應不致於遭到裁剪 (I31c84、b/171394808) - 新增了用於定義跨軸大小的
LazyVerticalGrid
API (I17723)
1.2.0-alpha04 版
2022 年 2 月 23 日
發布 androidx.compose.material:material-*:1.2.0-alpha04
。查看 1.2.0-alpha04 版的修訂項。
API 變更
Add support for filter chips
(I39a6e、b/192585545)- 新增
TextFieldDecorationBox
和OutlinedTextFieldDecorationBox
。搭配使用這些元件和BasicTextField
將有助於您根據 Material Design 文字欄位建構自訂文字欄位,但提供更多自訂選項。 - 開放調整文字欄位中的水平和垂直邊框間距 (I8c9f1、203764564、b/191543915、b/189971673、b/183136600、b/179882597、b/168003617)
新增了
ComposableTarget
、ComposableTargetMarker
和ComposableOpenTarget
,在針對非設計對象的 Applier 呼叫可組合函式時,可報告編譯時間。在多數情況下,Compose 編譯器外掛程式能夠推論出註解,因此直接使用這些註解的情形應該相當罕見。無法推論的案例包括建立及使用自訂 Applier、抽象的可組合函式 (例如介面方法)、欄位,或是屬可組合 lambda 的全域變數 (本機變數和參數為推論得出),或在使用
ComposeNode
或相關的可組合函式時。對於自訂 Applier,呼叫
ComposeNode
或ReusableComposeNode
的可組合函式需要為函式和任何可組合的 lambda 參數類型新增CompoableTarget
註解。不過,與其直接使用ComposableTarget
,建議您建立以ComposableTargetMarker
加上註解的註解,再使用已標示的註解。使用ComposableTargetMarker
加上標示的可組合註解,等同於使用屬性類別完整名稱做為套用器參數的ComposbleTarget
。如需ComposableTargetMarker
的使用範例,請參閱anroidx.compose.ui.UiComposable
。(I38f11)
1.2.0-alpha03 版
2022 年 2 月 9 日
發布 androidx.compose.material:material-*:1.2.0-alpha03
。1.2.0-alpha03 版包含以下修訂項目。
修正錯誤
- 新增方塊群組樣本 (I97080、b/192585545)
1.2.0-alpha02 版
2022 年 1 月 26 日
發布 androidx.compose.material:material-*:1.2.0-alpha02
。1.2.0-alpha02 版包含此連結所列的修訂項目。
API 變更
- 將
NonRestartableComposable
新增至屬於現有方法超載且無複雜邏輯的方法。如此一來,對於呼叫內部函式中重複的所有參數,可減少編譯器產生的記憶檢查 (等於)。(I90490) - 支援動作方塊 (I07100、b/192585545)
1.2.0-alpha01 版
2022 年 1 月 12 日
發布 androidx.compose.material:material-*:1.2.0-alpha01
。1.2.0-alpha01 版包含以下修訂項目。
依附元件更新
- 現在依附於 Kotlin
1.6.10
。
外部貢獻
ModalBottomSheetState
現在有isSkipHalfExpanded
旗標。您可以稍後透過建構函式設定,或是稍後將ModalBottomSheetState
的isSkipHalfExpanded
屬性設為true
,藉此進行更新。更新isSkipHalfExpanded
的值會使工作表重新組成。(I18b86、b/186669820)
1.1 版
1.1.1 版
2022 年 2 月 23 日
發布 androidx.compose.material:material-*: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.material:material-*:1.1.0
。查看 1.1.0 版的修訂項。
自 1.0.0 版以來的重要變更
- 穩定支援 Android 12 的過度捲動效果
- 改善觸控目標縮放功能
- 請注意,對於 Compose 1.0 版,Material 元件會展開版面配置空間,以符合 Material 無障礙功能準則對於觸控目標尺寸的規定。舉例來說,即使您將按鈕的尺寸設為小於最小尺寸 48x48 dp,系統仍會將按鈕的觸控目標擴大為這個尺寸。這樣一來,Compose Material 的行為就會與 Material Design 元件相同,在混用 Views 和 Compose 時便可確保行為一致。利用 Compose Material 元件建立使用者介面時,這項變更還能確保達到觸控目標無障礙功能的最低要求。
- 穩定支援導覽邊欄
- 將先前推出的一些實驗性 API 升級為穩定版
- 支援更新版本的 Kotlin
1.1.0-rc03 版
2022 年 1 月 26 日
發布 androidx.compose.material:material-*:1.1.0-rc03
。1.1.0-rc03 版包含以下修訂項目。
行為變更
請注意,就 Compose 1.0 版而言,Material 元件會展開版面配置空間,以符合 Material 觸控目標大小的 Material 無障礙功能準則。舉例來說,即使您將按鈕的尺寸設為小於最小尺寸 48x48 dp,系統仍會將按鈕的觸控目標擴大為這個尺寸。這樣一來,Compose Material 的行為就會與 Material Design 元件相同,在混用 Views 和 Compose 時便可確保行為一致。利用 Compose Material 元件建立使用者介面時,這項變更還能確保達到觸控目標無障礙功能的最低要求。
修正錯誤
- 為版面配置檢查器檢查最低觸控目標修飾詞時,新增更完善的偵錯資訊。(aosp/1955036)
1.1.0-rc01 版
2021 年 12 月 15 日
發布 androidx.compose.material:material-*:1.1.0-rc01
。查看 1.1.0-rc01 版的修訂項。
修正錯誤
- 修正適用於
Checkbox
的角落半徑 (I38b03、b/175198975、b/202309440)
1.1.0-beta04 版
2021 年 12 月 1 日
發布 androidx.compose.material:material-*:1.1.0-beta04
。查看 1.1.0-beta04 版的修訂項。
新功能
- 更新為可與 Kotlin
1.6.0
相容
1.1.0-beta03 版
2021 年 11 月 17 日
發布 androidx.compose.material:material-*:1.1.0-beta03
。1.1.0-beta03 版包含此連結所列的修訂項目。
1.1.0-beta02 版
2021 年 11 月 3 日
發布 androidx.compose.material:material-*:1.1.0-beta02
。查看 1.1.0-beta02 版的修訂項。
修正錯誤
- 現在,漣漪效果與其他指標只有在 Modifier.scrollable() 容器內時才會延遲,而不是當機就會發生 (Ibefe0、b/203141462)。
1.1.0-beta01 版
2021 年 10 月 27 日
發布 androidx.compose.material:material-*:1.1.0-beta01
。1.1.0-beta01 版包含此連結所列的修訂項目。
新功能
- 漣漪效果現在支援懸停和焦點狀態,因此懸停/聚焦一個組件 (例如按鈕) 會顯示正確的狀態重疊。
1.1.0-alpha06 版
2021 年 10 月 13 日
發布 androidx.compose.material:material-*:1.1.0-alpha06
。查看 1.1.0-alpha06 版的修訂項。
API 變更
- 已新增 Layout 的無子項超載,藉此提高效率 (Ib0d9a)
- 根據內部
TextField
和DropdownMenu
的ExposedDropdownMenuBox
實作ExposedDropdownMenu
(If60b2) - 已將
dismissOnOutsideClick
新增至PopupProperties
,並取代已淘汰的dismissOnClickOutside
。新屬性可接收點擊位置與錨點邊界,讓您能夠更精細地控制是否要叫用 onDismissRequest。舉例來說,如果想防止錨點因輕觸到而關閉,這就能派上用場。updateAndroidWindowManagerFlags
已新增至PopupProperties
,讓您能以低階的方式控制從彈出式視窗傳送給 Android WindowManager 的標記。lambda 的參數將是從產生 WindowManager 標記的 PopupProperties 值計算得出的標記:例如 focusable。lambda 的結果將是最終標記,並會傳遞給 Android WindowManager。根據預設,updateAndroidWindowManagerFlags 不會變更以參數計算的標記。此 API 僅可於彈出式視窗有非常具體的行為規定時使用,因此請謹慎使用。(I6e9f9)
1.1.0-alpha05 版
2021 年 9 月 29 日
發布 androidx.compose.material:material-*:1.1.0-alpha05
。查看 1.1.0-alpha05 版的修訂項。
API 變更
- 針對沒有可存取觸控目標的 Material 元件,新增最小觸控目標大小。這樣做會在元件周圍新增額外間距,以確保元件的觸控目標夠大,如果現有 UI 假定這些元件的大小等於其視覺大小,而不計入觸控目標大小,則這項作業可能會變更現有 UI。您可以使用實驗性的
LocalMinimumTouchTargetEnforcement
本機組合跨階層停用這項行為,但這只是在更新現有 UI 以計入新的最小尺寸期間的暫時性解決方法。(I9b966、b/149691127、b/171509422) - 新增了實驗性 TextFieldColorsWithIcons 介面,並擴充 TextFieldColors 以將 InteractionSource 提供給 leadingColor 和 trailingColor。這樣您就可以根據焦點狀態,修改 TextField 的外觀。(I66923、b/198402662)
1.1.0-alpha04 版
2021 年 9 月 15 日
發布 androidx.compose.material:material-*:1.1.0-alpha04
。查看 1.1.0-alpha04 版的修訂項。
API 變更
- 淘汰
performGesture
和GestureScope
,並替換為performTouchInput
和TouchInjectionScope
。(Ia5f3f、b/190493367) - 將
touchBoundsInRoot
加入含有最低觸控目標尺寸的SemanticsNode
,讓開發人員能確保觸控目標符合無障礙功能的最低要求 (I2e14b、b/197751214)
修正錯誤
- 在剪輯時,允許觸控目標邊界超出剪輯區域,以符合最小觸控目標要求。(I43e10、b/171509422)
- 更新
Divider
可組合項,以將Dp.Hairline
做為 thickness 參數,這樣不論顯示密度為何,均可支援繪製單一像素分隔線。(I16ffb、b/196840810)
1.1.0-alpha03 版
2021 年 9 月 1 日
發布 androidx.compose.material:material-*:1.1.0-alpha03
。1.1.0-alpha03 版包含此連結所列的修訂項目。
新功能
- 更新 Compose
1.1.0-alpha03
,使其依附於 Kotlin1.5.30
。(I74545)
API 變更
1.1.0-alpha02 版
2021 年 8 月 18 日
發布 androidx.compose.material:material-*:1.1.0-alpha02
。1.1.0-alpha02 版包含以下修訂項目。
外部貢獻
- 修正 SwipeableState 在滑動偏移值落在錨定標記捨入誤差內時的行為。(I03d39、b/191993377)
1.1.0-alpha01 版
2021 年 8 月 4 日
發布 androidx.compose.material:material-*:1.1.0-alpha01
。查看 1.1.0-alpha01 版的修訂項。
API 變更
- 已更新利用來源和目的地矩形的
DrawScope#drawImage
方法,以便使用選擇性的 FilterQuality 參數。相當適合像素風格藝術在放大時進行像素化處理之用。已更新 BitmapPainter + Image 可組合項,成為也能使用選擇性的 FilterQuality 參數 (Ie4fb0、b/180311607) - 已將 BadgeBox 重新命名為 BadgedBox,並變更了相關參數,讓其可以接受 Badge 可組合項。新增了 Badge 元件,這是 BadgedBox 的一般徽章內容 (I639c6)
- 新增了 NavigationRail 元件,請參閱說明文件和範例資訊 (I8de77)
修正錯誤
- 新增了底部對齊的 NavigationRail 範例和目錄應用程式示範。(I3cffc)
- 對話方塊現在會遵循平台大小行為。將 usePlatformDefaultWidth 設為 false,以覆寫這個行為。(Iffaed、b/192682388)
- 已將目錄導覽示範新增至目錄應用程式 (I04960)
- 已將徽章示範應用程式新增至目錄應用程式 (If285d)
1.0 版
1.0.5 版
2021 年 11 月 3 日
發布 androidx.compose.material:material-*:1.0.5
。1.0.5 版包含此連結所列的修訂項目。
修正錯誤
- 修正追蹤 derivedStateOf 例項時的異常終止問題 (aosp/1792247)。
1.0.4 版
2021 年 10 月 13 日
發布 androidx.compose.material:material-*:1.0.4
。1.0.4 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin
1.5.31
1.0.3 版
2021 年 9 月 29 日
發布 androidx.compose.material:material-*:1.0.3
。1.0.3 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin
1.5.30
1.0.2 版
2021 年 9 月 1 日
發布 androidx.compose.material:material-*: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.material:material-*:1.0.1
。1.0.1 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin
1.5.21
。
1.0.0 版
2021 年 7 月 28 日
發布 androidx.compose.material:material-*: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 和 AGP7.1
的下一個版本會修正這個問題 (b/194289155)
1.0.0-rc02 版
2021 年 7 月 14 日
發布 androidx.compose.material:material-*:1.0.0-rc02
。查看 1.0.0-rc02 版的修訂項。
修正錯誤
- 對話方塊現在會遵循平台大小行為。將
usePlatformDefaultWidth
設為 false,即可覆寫這個行為。(Iffaed、b/192682388)
1.0.0-rc01 版
2021 年 7 月 1 日
發布 androidx.compose.material:material-*:1.0.0-rc01
。1.0.0-rc01 版包含以下修訂項目。
API 變更
- 新增了
BadgeBox
元件。如需相關使用資訊,請參閱說明文件與範例 (I5e284) useDefaultMaxWidth
中的PopupProperties
已重新命名為usePlatformDefaultWidth
。(I05710)- 對話方塊現在可使用整個螢幕寬度。(I83929、b/190810877)
- 新增了實驗性範圍滑桿實作 (I2f4b3)
修正錯誤
- 為了與 Material Design 規格保持一致,當標籤做為預留位置使用時,具有無效輸入內容的 OutlinedTextField 不再使用錯誤的標籤顏色。如果在文字欄位中沒有任何輸入文字,且未處於焦點,則後者為 True。隨著這項變更,
TextFieldColors.labelColor()
函式中的error:Boolean
參數意義也有所變更:現在即使輸入內容無效,只要標籤是當做預留位置使用,系統就會傳回false
(I45f78)。
1.0.0-beta09 版
2021 年 6 月 16 日
發布 androidx.compose.material:material-*:1.0.0-beta09
。1.0.0-beta09 版包含此連結所列的修訂項目。
API 變更
- 在 OutlinesTextField 中新增 Shape 參數,可自訂框線的形狀 (I8f39e、b/181322957)
- TextOverflow 已變更為內嵌類別。(I433af)
修正錯誤
- BottomDrawer、BackdropScaffold 和 ModalBottomSheetLayout 中的 Scrim 將消失,然後傳遞 Color.Unspecified (I2d899、b/182063309)
新增設定檔規則
這個版本將設定檔規則新增至下列撰寫模組 (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 構件中。當建構包含這些構件的 APK 時,這些規則將合併在一起,合併後的規則會用於建構該 APK 專用的精簡二進制 ART 設定檔。當 APK 安裝在裝置上時,ART 便可以利用這個設定檔預先編譯特定應用程式子集,藉此提高應用程式效能,特別是首次執行的效能。請注意,這項設定完全不影響可進行偵錯的應用程式。
1.0.0-beta08 版
2021 年 6 月 2 日
發布 androidx.compose.material:material-*:1.0.0-beta08
。1.0.0-beta08 版包含以下修訂項目。
新功能
行為中斷 API 變更
- BEHAVIOUR-BREAKING:Card 現在會使用點擊次數,讓透過
Card(Modifier.clickable)
新增的點擊次數免人工管理。請使用可接受 onClick 的新實驗性 Card 超載。(Ia8744、b/183775620)- 新增了可處理點擊次數和其他可點選功能的 Card 超載:指示、interactionSource、已啟用/已停用。原先無法搭配
Modifier.clickable
使用一般無法點選的 Card,因為在這類情況下,Card 不會裁剪到漣漪效果指示。
- 新增了可處理點擊次數和其他可點選功能的 Card 超載:指示、interactionSource、已啟用/已停用。原先無法搭配
- BEHAVIOUR-BREAKING:Surface 現在會使用點擊次數,讓透過
Surface(Modifier.clickable)
新增的點擊次數免人工管理。請使用可接受 onClick 的新實驗性 Surface 超載。(I73e6c、b/183775620)- 新增了可處理點擊次數和其他可點選功能的新 Surface 超載:指示、interactionSource、已啟用/已停用。原先無法搭配
Modifier.clickable
使用一般無法點選的 Surface,因為在這類情況下,Surface 不會裁剪到漣漪效果指示。
- 新增了可處理點擊次數和其他可點選功能的新 Surface 超載:指示、interactionSource、已啟用/已停用。原先無法搭配
API 變更
FabPosition
已從 enum 轉換為內嵌類別,以支援日後的擴充 (I030fb)- 將列舉用例重構為內嵌類別,以避免完整的 when 陳述式在新增列舉值後出現問題。(I2b5eb)
- 新增可點擊/可切換項目的輕觸逾時設定,以免在捲動/拖曳時呈現漣漪效果 (Ia2704、b/168524931)
- ContentDescription 和 Text 語意屬性不再只是單一的值,而是清單。如此即可直接合併,無需串連。同時也提供更優質的測試 API,以便善用這些變更 (Ica6bf、b/184825850)
- 已將
Modifier.focusModifier()
淘汰,改為Modifier.focusTarget()
(I6c860) FocusState
列舉已改為FocusState
介面 (Iccc1a、b/187055290)- 檢視畫面支援的漣漪效果實作相當穩定,因此現已移除
LocalRippleNativeRendering
(I7fab3、b/188569367)
修正錯誤
- 變更
Modifier.onGloballyPositioned()
,系統會回報此修飾符在修飾符鏈結中的座標,而非套用所有修飾符後的版面配置座標。也就是說,修飾符的排序現在會影響系統回報的座標。(Ieb67d、b/177926591) - 為現有 Compose Material 目錄新增 README (If9191)
1.0.0-beta07 版
2021 年 5 月 18 日
發布 androidx.compose.material:material-*:1.0.0-beta07
。1.0.0-beta07 版包含此連結所列的修訂項目。
API 變更
- 您不再需要使用 Navigation Compose 中的擴充功能方法支援路徑 (I22beb、b/172823546)。
1.0.0-beta06 版
2021 年 5 月 5 日
發布 androidx.compose.material:material-*:1.0.0-beta06
。查看 1.0.0-beta06 版的修訂項。
API 變更
- 漣漪效果已遷移至 Android 裝置內部以使用
RippleDrawable
。也就是說,RenderThread 會產生漣漪效果動畫,因此即使 UI 執行緒處於載入狀態 (例如切換不同畫面時),也能流暢地播放動畫。這不會變更漣漪效果的 API 介面,但可能會因為這項變更而導致行為發生變化。為協助進行遷移,已新增LocalRippleNativeRendering
為這個 CompositionLocal 提供false
值,以便切換回先前的 CompositionLocalProvider 內部漣漪效果實作。這個 API 為暫時提供且日後將會移除,因此如果因為遇到問題而導致您要使用這個 API,請回報錯誤。(I902f8、b/168777351、b/183019123) - 新增了 CollectionInfo Accessibility API 和 CollectionItemInfo Accessibility API,以便為無障礙服務標記集合及其項目 (Id54ef、b/180479017)
- 新增了 Accessibility API (
error
),以便標示含有無效輸入內容的節點 (I12997、b/180584804、b/182142737)
修正錯誤
- 從 https://github.com/google/accompanist/pull/365 更新 Compose Material 目錄插邊實作。(I25dc3)
- 含有權重 (fill = false) 的 Row 和 Column 子項,不再能讓父項填滿主軸的完整可用空間。(Ied94d、b/186012444、b/184355105)
1.0.0-beta05 版
2021 年 4 月 21 日
發布 androidx.compose.material:material-*:1.0.0-beta05
。1.0.0-beta05 版包含此連結所列的修訂項目。
修正錯誤
- 將元件圖塊圖片、主題挑選器以及更具體的選單網址加入現有的 Compose Material 目錄。(I9b58e)
1.0.0-beta04 版
2021 年 4 月 7 日
發布 androidx.compose.material:material-*:1.0.0-beta04
。1.0.0-beta04 版包含此連結所列的修訂項目。
API 變更
- API 變更:
DrawerState
狀態不再擴充至實驗性 SwipeableState。- API 變更:
BottomDrawerState
現已標示為實驗功能,以與 Experimental BottomDrawer 元件相符 (I81114、b/181656094)
- API 變更:
- 將
SoftwareKeyboardController
中的hideSoftwareKeyboard
和showSoftwareKeyboard
分別重新命名為hide()
和show()
。- 為 LocalSoftwareKeyboardController 提供完整的 CompositionLocal 介面,以便設定該物件 (在測試中特別實用) (I579a6)
- 新增了 LiveRegion 無障礙服務 API。如果節點標示為即時區域,無障礙服務會自動通知使用者相關變更 (Idcf6f、b/172590946)
修正錯誤
- 將 Compose Material 目錄新增至現有模組。目前缺少:元件圖塊圖片、主題挑選器 (將在後續更改中新增)(Ie7a94)
1.0.0-beta03 版
2021 年 3 月 24 日
發布 androidx.compose.material:material-*:1.0.0-beta03
。1.0.0-beta03 版包含此連結所列的修訂項目。
API 變更
- 淘汰
DefaultMonotonicFrameClock
。現在呼叫無MonotonicFrameClock
的withFrameNanos
或Recomposer.runRecomposeAndApplyChanges
會擲回IllegalStateException
(I4eb0d) - 新增了 API
LeadingIconTab
,可支援在分頁中顯示圖示和內嵌文字。(I23267)
外部貢獻
- [By Jossi Wolf]
BottomDrawer
現在會納入導覽匣插槽的內容。如果上層沒有高度限制,BottomDrawer
不會擲回IllegalStateException
。如果底部導覽匣小於其父項的 50%,則會開啟為展開狀態。已更新BottomDrawerState
和ModalBottomSheetLayoutState
周邊的文件。如果處於開啟或展開狀態,則BottomDrawerState#isOpen
會傳回 True。(I87241)
1.0.0-beta02 版
2021 年 3 月 10 日
發布 androidx.compose.material:material-*:1.0.0-beta02
。查看 1.0.0-beta02 版的修訂項。
API 變更
- 新增新的
LocalSoftwareKeyboardController
組合本機 API,以取代 TextField 中的舊版SoftwareKeyboardController
介面 (I5951e、b/168778053)
修正錯誤
- 強制限制實驗性 API 的公開使用行為 (I6aa29、b/174531520)
- 將 TopAppBar 和 BottomAppBar 的預設水平對齊方式變更為 Start,與列一致 (Ib2dc7)
- 為 Compose Material 目錄新增模組和預留位置 UI,目前以巢狀結構內建於現有的整合測試試用版中。(Idfcb3)
androidx.compose.ui:ui
已不再依附 AppCompat 或 Fragment。如果您在應用程式中使用 ComposeView,同時也使用 Fragment 和/或 AppCompat,請確保您使用的是 AppCompat 1.3 以上版/Fragment 1.3 以上版,這樣才能正確設定 ComposeView 必備的生命週期和已儲存狀態擁有者。(I1d6fa、b/161814404)
1.0.0-beta01 版
2021 年 2 月 24 日
發布 androidx.compose.material:material-*:1.0.0-beta01
。1.0.0-beta01 版包含此連結所列的修訂項目。
這是 Compose 1.0.0 Beta 版的第一個版本。
API 變更
- 已重新命名大小修飾符。將 Modifier.width/height/size 重新命名為 requiredWidth/requiredHeight/requiredSize。Modifier.PreferredWidth/PreferredHeight/recommendedSize 已重新命名為 width/height/size。(I5b414)
- imageResource 和 vectorResource 現已分別成為 ImageBitmap 和 ImageVector 隨附的擴充功能函式。load{Image,Vector,Font}Resource 函式已遭刪除。(I89130)
- 用於依照內建函式調整大小的修飾符不再處於實驗階段 (I15744)
- 已移除 dp 判斷提示 (I798d2)
- SoftwareKeyboardController 回呼已從所有文字欄位中移除,而且很快就會替換為新的 API。(Iae869、b/168778053)
- Switch、Checkbox 和 RadioButton 動作 lambda 現已失效。系統已更 Checkbox-in-clickable-row 範例以使用此功能。(If601b、b/171819073)
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)
- 滑桿現已支援啟用/停用狀態 (I6d56b、b/179793072)
- 為 CoreTextField 等低階文字元件的輸入工作階段建立新的。TextInputSession。(I8817f、b/177662148)
- 移除了 AnimationEndReason.Interrupted。如果動畫中斷,系統會擲回 CancellationException (I2cbbc、b/179695417)。
- 移除
@ExperimentalRippleApi
,並將RippleAlpha
變更為具備屬性的類別,而非介面 (I6df7c)。 - 新增了 TextFieldColors 介面,代表不同狀態的 TextField 和 OutlinedTextField 中所使用的不同顏色。對於預設的實作,請參閱 TextFieldDefaults.textFieldColors 和 TextFieldDefaults.outlinedTextFieldColors。
- 將 TextField 和 OutdashTextField 中的 isErrorValue 參數重新命名為 isError。(I831f9、b/171305338、b/168004067)
- 新增 selectionGroup 修飾符,可為 Tab 或 RadioButton 集合加上無障礙用途標示 (Ie5c29)
新增 LazyListState.animateScrollToItem
這個方法會快速捲動至清單中的特定項目。(I4bfd7)
ScrollableState.smoothScrollBy()
已重新命名為animateScrollBy()
;LazyListState.snapToItemIndex()
已重新命名為scrollToItem()
;ScrollState.smoothScrollTo()
已重新命名為animateScrollTo()
(I35ded)任何標有
@ReadOnlyComposable
的合成元素現已經過編譯時間驗證,以確保這些呼叫只會呼叫其他@ReadOnlyComposables
(I58961)移除了 TargetAnimation API。(If47d1、b/177457083)
Modifier.verticalScroll()/horizontalScroll() 的捲動位置現在起以 Ints 表示 (I81298)
smoothScrollBy 和 ScrollBy 方法的套件已變更為
androidx.compose.foundation.gestures.*
(I3f7c1、b/175294473)FlingConfig 已重新命名為 FlingBehavior,現在起可自訂懸浮動畫,而非預先定義的 Decay。(I02b86、b/175294473)
已重新命名大小修飾詞。將 Modifier.width/height/size 重新命名為 requiredWidth/requiredHeight/requiredSize。Modifier.PreferredWidth/PreferredHeight/recommendedSize 已重新命名為 width/height/size。(I5b414)
defaultMinSizeConstraint 已重新命名為 defaultMinSize。(I4eaae)。
螢幕方向已移至基礎套件。VelocirtTracker 已從 ui.gesture 移至 ui.input.pointer (Iff4a8、b/175294473)
drawerState.open() 和 drawerState.close() 現已為暫停函式。可使用 rememberCoroutineScope() 取得組合的範圍以便呼叫 (I16f60、b/175294473)
Provider 已重新命名為 CompositionLocalProvider
- Composition 建構函式不再接受索引鍵參數,且已淘汰。
- currentCompositeKeyHash 已變成可組合的頂層屬性,而非可組合的頂層函式。
- CompositionData 和 CompositionGroup 已移至 androidx.compose.runtime.tooling 命名空間
- ComposableLambda 已成為介面而非具體類別,並且不再有類型參數。
- ComposableLambdaN 已成為介面而非具體類別,並且不再有類型參數。
- snapshotFlow 函式已移至 androidx.compose.runtime 命名空間。
- SnapshotMutationPolicy 的合併方法不再為實驗性。
- 移除
@TestOnly
頂層 clearRoots 函式,因為不再需要使用。 - 已移除 keySourceInfoOf 和 resetSourceInfo 函式,因為不再需要使用。
- 已移除 Composer.collectKeySourceInformation,因為不再需要使用。
- 已移除 isJoinedKey、joinedKeyLeft 和 joinedKeyRight 方法。因為不再需要使用。
- 重新整理多個頂層 API,分別歸類到不同的檔案中。由於 Kotlin 的檔案類別語意的關係,此舉會破壞二進位檔案相容性,但不影響原始碼相容性,因此對大多數使用者而言應不成問題
- (I99b7d、b/177245490)
Modifier.scrollable 經過重新設計。今後其使用 Scrollable 介面,而非 ScrollableController 類別 (I4f5a5、b/174485541、b/175294473)
Modifier.draggable 現在接受 DraggableState,而非簡單的 lambda。您可以透過
rememberDraggableState { delta -> }
建立狀態,取得與之前相同的行為 (Ica70f、b/175294473)ZoomableController.smoothScaleBy 和 ZoomableController.stop Animation 現已暫停函式。(I7f970、b/177457083)。
已刪除一些先前淘汰的 API (Ice5da、b/178633932)
已進行下列 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)
BasicTextField 現在接受使用 Brush 而不是 Color,藉此以獲得更符合需求的自訂功能 (I83a36)
imageResource 和 vectorResource 現已分別成為 ImageBitmap 和 ImageVector 隨附的擴充功能函式。load{Image,Vector,Font}Resource 函式已遭刪除。(I89130)
已將 Indication#createIndication() 更改為 Indication#rememberUpdatedIndication(InteractionState),並從 IndicationInstance#drawIndication() 中移除了 InteractionState 參數。IndicationInstance 應該只負責繪製視覺效果,而不應透過啟動動畫/寫入狀態來回應 InteractionState 變化。這些動畫和狀態寫入作業應改為在
rememberUpdatedIndication()
內執行。Modifier.indication
中的indication
參數也已變更為必要參數。(Ic1764、b/152525426)
修正錯誤
- 新增 LocalSoftwareKeyboardController 組合本機 API,取代 TextField 的 SoftwareKeyboardController 舊介面 (I658b6、b/168778053)。
1.0.0-alpha12 版
2021 年 2 月 10 日
發布 androidx.compose.material:material-*:1.0.0-alpha12
。1.0.0-alpha12 版包含此連結所列的修訂項目。
API 變更
- Modifier.pointerInput 目前規定 remember 鍵必須指出指標輸入偵測處理常式何時該重新啟動,以設定新的依附元件。(I849cd)
- BottomDrawerLayout 和 ListItem 已標示為 @experimentMaterialApi (Id766e)
- 已新增 PaddingValues.Absolute 且可於接受 PaddingValue 的 API 中使用。(Ia5f30)
- onImeActionPerformed 已淘汰,請改用 KeyboardAction (If0bbd、b/179071523)
- 為更符合 ImageBitmap 和 ImageVector 的命名慣例,ImagePainter 已重新命名為與 VectorPainter 並行的 BitmapPainter。(Iba381、b/174565889)
- Animatable.snapTo 和 Animatable.stop 現在為暫停函式 (If4288)
- ComponentActivity.setContent 已移至 androidx.activity:activity-compose 模組中的 androidx.activity.compose.setContent。(Icf416)
- Destructuring 和 copy() 方法在幾個類別中極少使用,現已將其從中移除。(I26702、b/178659281)。
- 在 ModalBottomSheetState 內部製作 halfExpand() 和 expand()(Ic914e)
- 已將 Indication#createInstance 變更為 @Composable,並將 LocalIndication 更改為含有 Indication,而非 () -> Indication。(I5eeea、b/157150564)
- 暫時將 AlertDialog 和 DropdownMenu 移至 Android。已將 PopupProperties 參數新增至 DropdownMenu,以進一步設定基礎 Popup。(I9c443)
- 已淘汰 loadFontResource。請改用 fontResource。imageResource、loadImageResource、vectorResource 和 loadVectorResource 也已淘汰,請改用 painterResource。(I6b809)
- 已從 DropdownMenu 中移除
toggle
和toggleModifier
參數,並將dropdownModifier
、dropdownOffset
和dropdownContent
重新命名為modifier
、offset
和content
。現在 DropdownMenu 的行為會與Popup
一致,其中的上層布局可用於設定選單位置。在大多數情況下,您可以將toggle
移至DropdownMenu
的同層,並將兩者包裝在Box
中。如要進一步瞭解這個 API 的用法,請參閱說明文件中更新後的範例。(I884fb) - toIntPx() 已重新命名為 roundToPx() (I9b7e4、b/173502290)
- IntBounds 已重新命名為 IntRect,且該 API 已改善 (I1f6ff)
- 新增了展開及收合語意動作。在 ModalBottomSheetState 中新增了 expand 和 halfExpand (Ib5064)
- Modifier.dragGestureFilter 已淘汰,請改用
Modifier.pointerInput { detectDragGestures (...)}
。或者,也可使用 Modifier.draggable 進行單一軸線拖曳 (I0ba93、b/175294473) - 已將 Ambient 重新命名,以配合 Ambient -> CompositionLocal 的更名。Ambient 原本名為 AmbientFoo,現在已將 CompositionLocal 命名為 LocalFoo。(I2d55d)
- 選取項目已移至 Foundation。(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) - 新增了 ProgressBarRangeInfo.Indeterminate 以標示針對無障礙功能的進度列不明 (I6fe05)
已淘汰 @ComposableContract,並改用三個更具體的註解。
@ComposableContract(restartable = false)
已變更為@NonRestartableComposable
@ComposableContract(readonly = true)
已變更為@ReadOnlyComposable
@ComposableContract(preventCapture = true)
已變更為@DisallowComposableCalls
- 已移除
@ComposableContract(tracked = true)
- (I60a9d)
淘汰了
emptyContent()
和(@Composable () -> Unit).orEmpty()
公用程式,原因是這些公用程式對效能已無正面影響或價值 (I0484d)已將 rememberSavedInstanceState() 重新命名為 rememberSaveable() 並移至 androidx.compose.runtime.saveable 套件。(I1366e、b/177338004)
Saver、listSaver()、mapSaver()、autoSaver 已從 androidx.compose.runtime.savedinstancestate 移至 androidx.compose.runtime.saveable (I77fe6)
為了支援 rtl 方向的形狀自動鏡像,已將 RounderCornerShape、CutCornerShape 和 CornerBasedShape 上的參數從 left/right 重新命名為 start/end。導入 AbsoluteRounderCornerShape 和 AbsoluteCutCornerShape,處理不需要自動鏡像功能的情況 (I61040、b/152756983)
已將 Tab 的
text
和icon
參數以及 BottomNavigationItem 的label
參數變更為可為空值,這樣一來,無論是否提供這些參數,都能順利傳達元件的行為,因為這會影響元件的大小和版面配置。如果您目前是透過傳送emptyContent()
代表沒有文字/圖示/標籤,請改用null
。(I57ed4)已將 contentColorFor color 參數重新命名為 backgroundColor (I5bb67)
已淘汰 TabDefault,並換成 TabRowDefaults。(I0f189)
推出了 ColorMatrix API,可用於修改來源內容的 RGB 值,也推出了 Refactored ColorFilter API,可做為介面並用於比對 PathEffect 的實作。(Ica1e8)。
AnimatedValue/Float 現已淘汰,請改用 Animatable (I71345、b/177457083)
新增 SemanticsProperties.PaneTitle API (I20d5a)
在 Tab 和 BottomNavigationItem 上新增了已啟用的參數,避免這些參數可供點按。將 BottomNavigationItem 變更為 RowScope.BottomNavigationItem 以在其 API 中更有效地表達版面配置需求。(Id683d)
淘汰了 tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 及 pressIndicaitonGestureFilter。請改用 Modifier.clickable 或 Modifier.pointerInput 搭配 DetectionTapTouchs 函式。(I6baf9、b/175294473)
將版面配置方向參數加到 形狀的 createOutline 中。允許建立版面配置方向感知形狀。(I57c20、b/152756983)
已移除
Recomposer.current()
。[Abstract]ComposeView 現已預設為延遲建立、以視窗為範圍的 Recomposers,並由視窗的 ViewTreeLifecycleOwner 所驅動。主機的生命週期停止時,Recomposition 和以withFrameNanos 為基礎的動畫滴答會暫停。(I38e11)
修正錯誤
- 圖示現在會隨著大小調整而擴大,並取決於套用的大小修飾符。舉例來說,
Icon(.., modifier = Modifier.size(50.dp)
將以 50x50dp 的空間繪製圖片 (Ib2ba9、b/178796190)。
1.0.0-alpha11 版
2021 年 1 月 28 日
發布 androidx.compose.material:material-*:1.0.0-alpha11
。1.0.0-alpha11 版包含此連結所列的修訂項目。
API 變更
- 升級部分 Material API,使其不再是
@Experimental
(I5d20e) - 新增 Image 和 Icon 的內容說明參數,用於為無障礙服務提供說明 (I2ac4c)
- 將 Material 有狀態參數介面變更為使用 @Composable 函式來傳回
State<T>
。新增Animatable.asState()
,便於輕鬆地將 Animatable 轉換為 State。同時將 animateElevation 變更為 Animatable 的暫停擴充功能。(If613c)。 - Snackbar、SnackbarHost、SnackbarHostState 已不再是
@ExperimentalMaterialAPI
(Id1fb5) - 將 Typography、Shapes 和 TabPosition 更改為不再是資料類別。為 Typography 和 Shapes 新增複製功能以替換生成的。(I40037)
- 已刪除一些先前淘汰的 Material API (Ifaa25)
修正錯誤
- 淘汰了 onCommit、onDispose 和 onActive,改用 SideEffect 和 DisposableEffect API (If760e)
- 淘汰了以 TransitionDefinition 為基礎的 Transition (I0ac57)
- 現在支援 updateTransition 中的初始狀態 (Ifd51d)
- WithConstraints 已重新設計為 BoxWithConstraints,並移至 foundation.layout。(I9420b、b/173387208)
淘汰非暫停 scrollBy、移除非暫停 scrollTo
我們建議使用暫停函式來控制捲動,並等待捲動完成。在此轉換過程中,我們正在淘汰和/或移除這些函式的非暫停版。(Ie9ced)
淘汰非暫停的 smoothScrollBy 我們現在建議使用暫停函式來控制捲動,並等待捲動完成。在此轉換過程中,我們正在淘汰這些函式的非暫停版。(I12880)
推出了
ComposeContentTestRule
,可用於擴充ComposeTestRule
並定義setContent
,後者已從ComposeTestRule
中移除。新增可傳回ComposeTestRule
的工廠方法createEmptyComposeRule()
,且不會代為啟動活動。如要在測試期間啟動活動,請使用此方法,例如使用ActivityScenario.launch
(I9d782、b/174472899)無法再以透過 AmbientIndication 提供新 Indication 的方式來自訂 Button 和 FloatingActionButton 所用的漣漪效果;也就是說,這本來就不是自訂這些元件的方式,但這項變更使得這些元件與其他 Material 元件保持一致。要自定義跨應用程式的漣漪效果,請參閱 RippleTheme。(I546c5)
animateAsState 現已改為 animateFooAsState,其中 Foo 是增加動畫效果的變數類型。例如 Float、Dp、Offset 等 (Ie7e25)
BasicTextField 收到名為
decorationBox
的新參數。可以在文字欄位中新增圖示、預留位置、標籤等裝飾,也可以增加命中目標區域。(I16996)修正導致素材文字欄位無法小於 280.dp (I78373) 的錯誤
canDrag 參數已從 Modifier.draggable 移除 (Ic4bec、b/175294473)
請移除不需要的 displaySize 值。一般建議使用 onRoot() 的尺寸,或至少使用視窗尺寸 (I62db4)
介面現在可包含多個版面配置子項 (I66a92、b/144488459)
現已淘汰 invalidate 和 ContentReference(),並改用 CurrentRecomposeScope 和 RememberCompositionReference (I583a8)
將 PopupPositionProvider 變更為使用視窗相關座標,而非全域座標。將父項 GlobalBounds 重新命名為 anchorBounds,並將 windowGlobalBounds 變更為
windowSize: IntSize
(I2994a)Long 毫秒會取代 Duration 和 Uptime,同時此步驟也能移除這些類別上指標輸入的依附元件。(Ia33b2、b/175142755、b/177420019)
接受 FlingConfig 的 AnimatedFloat.fling 已經移除。請改用暫停 Animatable.animateDecay。(I4659b、b/177457083)
您現在可以在組合項外建立可點選、可切換和可選取的項目 (I0a130、b/172938345、b/175294473)
加/減速已變更為功能介面 (Ib14e5)
淘汰了 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)已移除實驗性的 monotonicFrameAnimationClockOf 方法 (Ib753f、b/170708374)
淘汰全域座標方法,並建構新的視窗式座標方法。(Iee284)
新增了 Modifier.toolingGraphicsLayer,這會在檢查功能開啟時加入圖形圖層修飾符 (I315df)。
FocusRequester.createRefs 可能會有變動,因此目前標示為實驗性 (I2d898、b/177000821)。
SemanticsPropertyReceiver.hidden 已重新命名為 invisibleToUser 並標示為 @ExperimentalComposeUiApi。AccessibilityRangeInfo 已重新命名為 ProgressBarRangeInfo。stateDescriptionRange 已重新命名為 progressBarRangeInfo。AccessibilityScrollState 已重新命名為 ScrollAxisRange。horizontalAccessibilityScrollState 已重新命名為 horizontalScrollAxisRange。verticalAccessibilityScrollState 已重新命名為 verticalScrollAxisRange (Id3148)
運用 TestCoroutineDispatcher 進行測試 (I532b6)
更新向量圖形 API,以符合對向量圖形根套用的色彩剖析。(Id9d53、b/177210509)
1.0.0-alpha10 版
2021 年 1 月 13 日
發布 androidx.compose.material:material-*:1.0.0-alpha10
。1.0.0-alpha10 版包含此連結所列的修訂項目。
API 變更
- 已將 Velocity 修改成為具有元件部分和數學運算。(Ib0447)
- 將
@ExperimentalTesting
重新命名為@ExperimentalTestApi
,以便與類似的實驗 API 註解保持一致 (Ia4502、b/171464963) - 已將 Position 重新命名為 DpOffset,並移除了 getDistance() (Ib2dfd)
- 已將 Color.useOrElse() 重新命名為 Color.takeOrElse() (Ifdcf5)
- 為基礎 Strings.kt 新增 Toggle (I4a5b7、b/172366489)
- FlowRow 和 FlowColumn 已淘汰,請改用自訂版面配置。(I09027)
- Modifier.focus() 和 Modifier.focusRequester() 現已淘汰。請改用 Modifier.focusModifier() 和 Modifier.focusReference()。(I75a48、b/175160751、b/175160532、b/175077829)
- 將 nativeClass 移至 UI 模組並設為內部專用。已在同等的實作中更新 nativeClass 的使用情形,改為使用「is MyClass」。(I4f734)
修正錯誤
- 新增了對停用和唯讀文字欄位的支援 (I35279、b/171040474、b/166478534)
animate()
現已替換為animateAsState()
,後者會傳回State<T>
而非T
。這樣系統會將無效範圍縮小至讀取 State 值的位置,因此可以提升效能 (Ib179e)。- 新增 Semantics 角色 API,並將 Role 新增為可點選、選取和切換的 SemanticsModifier 參數。Modifier.progressSemantics 已變更,讓 Slider 也能夠使用 (I216cd)
1.0.0-alpha09 版
2020 年 12 月 16 日
發布 androidx.compose.material:material-*:1.0.0-alpha09
。1.0.0-alpha09 版包含此連結所列的修訂項目。
API 變更
- 新增了 API,可手動觸發定量動畫,並拖曳至 Modifier.sWipeable (Iaa17a、b/162408885)
- 已重新命名 *Constants 物件 (例如 ButtonConstants),並以「Defaults」取代結尾,例如 ButtonDefaults。同時移除這些新物件屬性中非必要的
default
前置字元 (Ibb915、b/159982740) Compose 支援能執行可組合叫用的屬性 getter。系統對這項支援仍維持不變,但是已變更用於將屬性 getter 宣告為 @Composable 的語法。
現已淘汰的語法是透過將屬性本身加上註解來進行宣告:
@Composable val someProperty: Int get() = ...
現行正確的語法是透過將屬性的 getter 加上註解來進行宣告:
val someProperty: Int @Composable get() = ...
這兩種語法將可同時運作一段時間,但系統最終會將先前淘汰的語法視為編譯錯誤。(Id9197)
新增了包含 Ripple API 的
androidx.compose.material:material-ripple
程式庫,可用於建構互動式元件,且無需使用 Material 程式庫的其餘部分。已淘汰 rememberRippleIndication 並替換為 rememberRipple。(Ibdf11)
修正錯誤
- 現在,偏移修飾符中的 lambda 會傳回 IntOffset,而非 Float (Ic9ee5、b/174137212、b/174146755)
提供繪圖環境大小資訊時,重構 ShaderBrush 以延遲建立著色器例項。這適合用於定義在組合時構成可組合項完整繪圖邊界的漸層,而不必實作自訂的 DrawModifier 實作方式。
已淘汰漸層函式建構函式 API,並採用 Gradient 物件的工廠方法 (I511fc、b/173066799)
已淘汰 Modifier.focusObserver。請改用 Modifier.onFocusChanged 或 Modifier.onFocusEvent (I30f17、b/168511863、b/168511484)
淘汰了 LazyColumnFor、LazyRowFor、LazyColumnForIndexed 和 LazyRowForIndexed。請改用 LazyColumn 和 LazyRow (I5b48c)
將 Dp.VectorConverter、Position.VectorConverter 等移到了 animation-core,並淘汰了舊的 VectorConveters (If0c4b)
AutoFill API 現為實驗性 API,必須啟用 (I0a1ec)
新增解構宣告,可建立 FocusRequester 例項 (I35d84、b/174817008)。
已分別將 accessibilityLabel 和 accessibilityValue 重新命名為 contentDescription 和 stateDescription。(I250f2)
用於創建 InfiniteRepeatableSpec 的新的infiniteRepeatable 函式 (I668e5)
DropdownMenus 的位置行為是根據 Material 規格而有些微差異。(I34c72、b/168594123)
已為 TextFields 新增 InteractionState 的支援。(I61d91)
新增了 Modifier.clearAndSetSemantics 以清除子系的語意,並設定新的語意。(I277ca)
已將 ContentDrawScope 移至 ui-graphics 模組,以便與 DrawScope 搭配使用。(Iee043、b/173832789)。
1.0.0-alpha08 版
2020 年 12 月 2 日
發布 androidx.compose.material:material:1.0.0-alpha08
、androidx.compose.material:material-icons-core:1.0.0-alpha08
和 androidx.compose.material:material-icons-extended:1.0.0-alpha08
。1.0.0-alpha08 版包含以下修訂項目。
API 變更
- MaterialTheme 現可為選取控點及選取背景設定正確的顏色。非 Material 應用程式可以手動使用 AmbientTextSelectionColors 自訂用於選取項目的顏色 (I1e6f4、b/139320372、b/139320907)
- 新增了針對可組合 lambda 參數命名方式和位置的 Lint 檢查,以檢查是否與 Compose 準則一致。另外也根據 Lint 檢查和指引,將部分使用
children
做為結尾 lambda 名稱的 API 遷移至content
(Iec48e) - 已將 VectorAsset 重新命名為 ImageVector。根據 API 委員會的規範,已將 VectorAsset 移至 Builder 並重新命名,成為 ImageVector 的內部類別。新增了 VectorAssetBuilder 的 typealias,以便連結至 ImageVector.Builder,使其彼此相容。(Icfdc8)
- 已將 ImageAsset 和相關方法重新命名為 ImageBitmap。(Ia2d99)
- 已將 Foundation 語意屬性移至 ui (I6f05c)
- 淘汰了
fun RippleIndication()
,並替換為rememberRippleIndication()
,以與其他 API 保持一致。(Id8e2c) - 已將 singeLine 參數新增至 BasicTextField、TextField 和 OutdashTextField。如要將文字欄位設為可水平捲動的單一行,請將這個參數設為 true (I57004、b/168187755)
修正錯誤
- 新增語意動作 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)
- 已從 SubcomposeLayout 宣告中移除
<T>
,現在不必指定類型即可使用該項目 (Ib60c8)。 - 新增了 Modifier.scale/rotate API,以便 drawLayer 使用。
Modifier.drawOpacity
已重新命名為Modifier.alpha
。- 已將
Modifier.drawShadow
重新命名為Modifier.shadow
(I264ca、b/173208140)
- Box 的校正參數已重新命名為 contentAlignment。(I2c957)
- offsetPx 修飾符已重新命名為 offset,且現已改用 lambda 參數,而非 State (Ic3021、b/173594846)
- 推出 SweepGradientShader 和 SweepGradientBrush API。(Ia22c1)。
- 針對可組合函式中的 Modifier 參數,新增 Lint 檢查功能。這項 Lint 檢查會查驗參數的命名、傳回類型、預設值和順序,確認是否符合 Compose 準則。(If493b)
- 已更新 TextFieldValue API
- 將 TextFieldValue 組合設為唯讀
- 已移除因選取範圍無效而擲回的例外狀況 (I4a675、b/172239032)
- 新增了
Modifier.drawLayer()
超載。這會在新的 GraphicsLayerScope 使用一個 lambda 區塊,可讓您定義圖層參數,以便在狀態變更時略過重組和版面重新配置程序。DrawLayerModifier 現已處於內部準備狀態,可將其邏輯遷移至 LayoutModifier 的placeable.placeWithLayer()
方法中 (I15e9f、b/173030831) - 淘汰了在名稱後綴使用
Ambient
的 Ambient,並比照其他 Ambient 和 Compose API 指南規範,替換成在名稱前綴使用 Ambient 的新屬性。(I33440) - 新增了 lint 檢查功能,以檢查 Modifier 工廠是否在內部使用
androidx.compose.ui.composed {}
,而非標示為@Composable
。(I3c4bc) - Semantics 引數 MergeAllDescendants 已重新命名為 MergeDescendants。(Ib6250)
- 測試中的時間控制項 (TestAnimationClock 及其用例) 處於實驗階段 (I6ef86、b/171378521)
- 移除舊的 ui-test 模組及其虛設常式 (I3a7cb)
- TextUnit.Inherit 已重新命名為 TextUnit.Unspecified,以便與其他單位保持一致。(Ifce19)
- 更新了 Alignment 介面,並使其可正常運作。(I46a07、b/172311734)
- 對於 LayoutIdParentData,id 已重命名為 layoutId。Measurable.id 已重命名為 Measurable.layoutId。(Iadbcb、b/172449643)
1.0.0-alpha07 版
2020 年 11 月 11 日
發布 androidx.compose.material:material:1.0.0-alpha07
、androidx.compose.material:material-icons-core:1.0.0-alpha07
和 androidx.compose.material:material-icons-extended:1.0.0-alpha07
。查看 1.0.0-alpha07 版的修訂項。
API 變更
- 已淘汰 Emphasis,並替換為 AmbientContentAlpha。AmbientContentAlpha 是比較簡單的抽象層,代表階層中的首選內容 Alpha 值,類似於 AmbientContentColor 表示首選內容顏色的方式。根據預設,Text 和 Icon 現在會使用 AmbientContentAlpha 目前的值,且您可以手動執行
color.copy(alpha = AmbientContentAlpha.current)
,藉此在元件中取得相同效果。您可以直接透過 AmbientContentAlpha 提供一個值,並使用 ContentAlpha 中的新預設級別來取代舊的 EmphasisLevels,而不要使用 ProvideEmphasis。(Idf03e、b/159017896) - 新增 androidx.compose.material.AmbientContentColor 以取代 androidx.compose.foundation.AmbientContentColor (I84f7b、b/172067770)
- 新增 androidx.compose.material.Text 以取代 androidx.compose.foundation.Text 做為可指定的高階文字元件。使用不屬於文字色彩 / 文字樣式的基本文字元件時,請使用 BasicText。(Ie6ae0)
- 已將 maxLine 新增至 TextField (Ib2a5b)
- 已更新 TextField 以接受 KeyboardOption (Ida7f3)
- 現在在計算高度重疊時,Surface 會使用絕對 (總計) 高度,因此以巢狀結構內嵌於另一個 Surface 的 Surface 會使用合併後的高度繪製重疊。(I7bd2b、b/171031040)
修正錯誤
captureToBitmap
已移至captureToImage
(I86385)- 已淘汰基礎 AmbientTextStyle、ProvideTextStyle 和 AmbientContentColor,請改用 Material 程式庫中可提供的新版本。對於非 Material 應用程式,您應建立自己的設計系統專屬主題設定環境,並在自己的元件中使用 (I74acc、b/172067770)
- 已淘汰 foundation.Text,並替換為 material.Text。如要瞭解不使用主題值的無預設立場基本文字 API,請參閱 androidx.compose.foundation.BasicText (If64cb)
- 將 KeyboardOptions 重新命名為 ImeOptions (I82f36)
- 已將 KeyboardType 和 ImeAction 移至 KeyboardOptions (I910ce)
- 已淘汰 BaseTextField。請改用 BasicTextField。(I896eb)
- 已移除 ExperimentSubcomposeLayoutApi 註解。現在可以在不新增 @OptIn 的情況下使用 SubcomposeLayout (I708ad)
- FirstBaseline 和 LastBaseline 移至 androidx.compose.ui.layout 套件 (Ied2e7)
- 已更新 Icon API 以採用 Color.Unspecified 做為可能的色調顏色,在沒有 ColorFilter 的情況下能以指定素材或繪圖工具繪圖。先前嘗試略過繪製含有 Color.Unspecified 的色調,導致系統使用透明色繪製色調,結果完全沒有顯示任何色彩。(I049e2、b/171624632)
- 將 PiPAddFrom 重新命名為 pacFrom。新增 paddingFromBaseline 修飾符,方便您指定版面配置邊界到文字基準線的距離 (I0440a, b/170633813)
- 將 LaunchedTask 重新命名為 LaunchedImpact,以便與 SideImpact 和 Disposableimpact API 保持一致。為鼓勵採用最佳做法,系統不允許使用不含主題參數的 LaunchedEffect (Ifd3d4)
- 已將 MeasureResult 從 MeasureScope 移出。(Ibf96d、b/171184002)
- 將數個版面配置相關符號從 androidx.compose.ui 移至 androidx.compose.layout.ui (I0fa98、b/170475424)。
1.0.0-alpha06 版
2020 年 10 月 28 日
發布 androidx.compose.material:material:1.0.0-alpha06
、androidx.compose.material:material-icons-core:1.0.0-alpha06
和 androidx.compose.material:material-icons-extended:1.0.0-alpha06
。查看 1.0.0-alpha06 版的修訂項。
API 變更
- androidx.compose.foundation.Icon 已移至 androidx.compose.material.Icon。如果不想使用 Material 程式庫,也可以將 Image 元件/Modifier.paint() 與 Painter 搭配使用 (I9f622)
- 新增 FloatingActionButtonElevation 來代表 FAB 在不同狀態中使用的高度。如需預設導入方式,請參閱 FloatingActionButtonExceptions.defaultElevation() (I2d4f5)
- 新增 SwitchColors 介面來呈現 Switch 在不同狀態下使用的顏色。請參閱 SwitchConstants.defaultColors 來自訂這些顏色。(I93805)
- 新增 ButtonElevation 和 ButtonColors 介面,以代表不同狀態中按鈕之間的高度和色彩。查看 ButtonCounts 的預設函式,以自訂這些參數。(Ic5b7b)
- 新增 RadioButtonColors 介面來表示不同狀態下 RadioButton 使用的顏色。請參閱 RadioButtonConstants.defaultColors() 以自訂不同狀態下使用的顏色。(I74130)
- 新增 CheckboxColors 介面來表示不同狀態下核取方塊使用的顏色。查閱 CheckboxConstants.defaultColors() 自訂不同狀態下使用的顏色。(I7dbdb)
修正錯誤
- Material 元件不再將高度設定為 zIndex。這表示在同一個父項中,具有較大陰影大小的子項不會自動繪製在具有較小陰影大小的子項之上。如果仍有這類行為,請在必要時手動設定 Modifier.zIndex() (I70417、b/170623932)
- 淘汰 VectorPainter 並改用 rememberVectorPainter,以更能指出可組合項 API 於內部利用「記憶」使得資料在組合之間持續存在。(Ifda43)
- 在 ComposeTestRule 中啟用轉場功能,並從 ComposeTestRule 中移除啟用閃爍游標的選項。(If0de3)
- 已對 CoreTextField 新增單行鍵盤選項 (I72e6d)
- 已將 Radius API 重新命名為 CornerRadius,以便完善表達於 Compose 中的使用方式。更新說明文件,指出負圓角半徑的限制取值範圍已設為零 (I130c7、b/168762961)
- 將 DrawScope 和 ContentDrawScope 重構為介面,而不是抽象類別
- 已建立 DrawScope 的 CanvasDrawScope 實作項目
- 重構導入 DrawScope 以使用 CanvasScope
- 建立 DrawContext 以納入 DrawScope 的依附元件
- 已在 DrawScope (I56f5e) 中移除已淘汰的方法
- Box 是內嵌函式。(Ibce0c、b/155056091)
1.0.0-alpha05 版
2020 年 10 月 14 日
發布 androidx.compose.material:material:1.0.0-alpha05
、androidx.compose.material:material-icons-core:1.0.0-alpha05
和 androidx.compose.material:material-icons-extended:1.0.0-alpha05
。查看 1.0.0-alpha05 版的修訂項。
API 變更
- 彈出式視窗和對話方塊現在會沿用父項視窗的 FLAG_SECURE。 另外也新增了可明確設定這個標記的選項 (I64966、b/143778148、b/143778149)
- Modifier.sWipeable 目前預設有 56.dp 的狀態閾值 (Iab825、b/168610267)
- 所有 Scaffold 狀態標示為 @Stable。ScaffoldState 中的 drawerGesturesEnabled 移至 Scaffold 本身 (I36645、b/168297016)。
- 從 Scaffold lambda 參數移除可為空值類型,您可以使用 emptyContent() 表示特定參數沒有內容。(I2b318、b/157633857、b/158551084)
淘汰了 contentColor() 和 currentTextStyle() API,並分別以 AmbientContentColor 和 AmbientTextStyle 環境取代。與搭配使用其他環境時一樣,您可以對環境屬性使用
.current
,藉此存取目前的值。這項變更的用意是要維持一致性,避免採用多種方式來完成同一件事。此外,部分環境屬性已重新命名,以便清楚描述其用途,如下所示:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
新增 AmbientElevationOverlay,允許自訂 / 停用套用至深色主題在 Surfaces 中的預設高度疊加層。(I5b74d)
修正錯誤
- 在內嵌類別標記值的標準化過程中,將 Color.Unset 重新命名為 Color.Unspecified,以便與其他內嵌類別保持一致 (I97611、b/169797763)
- 加入 TextOverflow.None。溢位為 None 時,Text 不會再處理溢位,而是向 LayoutNode 回報實際尺寸 (I175c9、b/158830170)。
- launchInComposition 已重新命名為 LaunchedTask,以符合 Compose API 準則 (I99a8e)
- 將 OnPositionedModifier 重新命名為 OnGloballyPositionedModifier,並將 onPositioned() 重新命名為 onGloballyPositioned()(I587e8、b/169083903)
1.0.0-alpha04 版
2020 年 10 月 1 日
發布 androidx.compose.material:material:1.0.0-alpha04
、androidx.compose.material:material-icons-core:1.0.0-alpha04
和 androidx.compose.material:material-icons-extended:1.0.0-alpha04
。1.0.0-alpha04 版包含以下修訂項目。
API 變更
- 在有狀態的 Material 元件中顯示 InteractionState 參數,以允許提升狀態及讀取 / 控制狀態 (Iaca5f、b/168025711、b/167164434)
- 變更 RadioButton 和 TriStateCheckbox 的
*color
參數,以便完整自訂各狀態所用的顏色,並視需要變更切換狀態時的色彩動畫效果。詳情請參閱 CheckboxConstants 和 RadioButtonConstants 中的新 animateDefault* 色彩函式。(I1c532) - 已將 RememberBackdropState 重新命名為 RememberBackdropScaffoldState,並新增動畫時鐘的額外參數。已將 BackdropScaffold 參數的 BackbackScaffoldState 重新命名為 scaffoldState。已將 BackdropExceptions 重新命名為 BackdropScaffold 常數。(Ib644d)
- 新增了實驗性 BottomSheetScaffold 元件。(Ie02f0、b/148996320)。
- 新增了實驗性 ModalBottomSheetLayout 元件。(Ic209e、b/148996320)
- 已將 ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation 重新命名為 defaultElevation,且現在會傳回 Dp 值,而不是 AnimatedValue (I5f3ed)
修正錯誤
- 更新了多個圖形 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)
- 我們已阻止靜態匯入版面配置範圍的內容 (例如 RowScope 中的 alignWithSiblings),請改用明確範圍替代項:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
(I216be、b/166760797)
1.0.0-alpha03 版
2020 年 9 月 16 日
發布 androidx.compose.material:material:1.0.0-alpha03
、androidx.compose.material:material-icons-core:1.0.0-alpha03
和 androidx.compose.material:material-icons-extended:1.0.0-alpha03
。查看 1.0.0-alpha03 版的修訂項。
API 變更
- 已將
BottomNavigationItem
的onSelect
參數重新命名為onClick
(I91925、b/161809324) - 將 InteractionState 參數新增至 BottomNavigationItem 和 Tab,以允許提升此狀態,並調整元件在不同狀態下的顯示方式。(Ia3e9e、b/168025711)
- 從按鈕中移除
disabledBackgroundColor
和disabledContentColor
參數。請改以 ButtonCounts 中使用新的預設色彩函式。如果您已明確設定 contentColor/backgroundColor,請改用這些預設函式,並自訂部分/所有參數,以避免覆寫啟用/停用狀態的顏色。(If9b52) - 文字欄位的背景顏色不再間接套用透明度 Alpha 版。而是直接套用在 backgroundColor 參數中提供的任何顏色。(Iecee9、b/167951441)
- InnerPadding 已重新命名為 PaddingValues。(I195f1、b/167389171)
Modifier.swipeable
中的resistanceFactorAtMin
和resistanceFactorAtMax
參數已替換為單一阻力參數。已在SwipeableConstants
中新增defaultResistanceConfig
方法。(I54238)- 針對 Button 和 FloatingActionButton,新增以動畫狀態顯示的高度支援。高度會以預設狀態和按下狀態之間進行動畫處理。如要自訂不同狀態的高度,請使用
ButtonConstants.defaultAnimatedElevation()
和FloatingActionButtonConstants.defaultAnimatedElevation()
,而非在所有情況下設定一個固定 Dp 值。(I37925) - 標籤變成 TextField 和 OutlinesTextField 中的選用參數 (I267f6、b/162234081)
修正錯誤
onNode
或waitForIdle
等全域測試函式現已淘汰,請改用依據 ComposerTestRule 定義的新對應函式 (I7f45a)- 已淘汰 DpConstraints 和使用該項目的 API。(I90cdb、b/167389835)
- 已將 widthIn 的參數 minWidth 和 maxWidth 重新命名為 min 和 max。同樣地,preferredWidthIn、heightIn、preferredHeightIn 也採用了類似的重新命名。(I0e5e1、b/167389544)
- 移除向前/向後語意語意。已在 AccessibilityRangeInfo 中新增步驟。(Ia47b0)。
- 已將版面配置 API 中使用的 gravity 一致重新命名為 align 或 alignment。(I2421a、b/164077038)。
- 已在 ComposeTestRule 中加入 onNode 和其他全域方法,因為目前的全域方法即將淘汰。(Ieae36)
- 已將
createAndroidComposeRule
和AndroidInputDispatcher
從androidx.ui.test.android
移至androidx.ui.test
(Idef08,b/164060572)
1.0.0-alpha02 版
2020 年 9 月 2 日
發布了 androidx.compose.material:material:1.0.0-alpha02
、androidx.compose.material:material-icons-core:1.0.0-alpha02
和 androidx.compose.material:material-icons-extended:1.0.0-alpha02
。1.0.0-alpha02 版本包含以下修訂項目。
API 變更
- 新增了實驗性 BackdropScaffold 元件。(Iad908)
修正錯誤
- Matrix4 已由 Matrix 取代。已移除 vectormath 套件的所有其他部分 (Ibd665、b/160140398)。
1.0.0-alpha01 版
2020 年 8 月 26 日
發布 androidx.compose.material:material:1.0.0-alpha01
、androidx.compose.material:material-icons-core:1.0.0-alpha01
和 androidx.compose.material:material-icons-extended:1.0.0-alpha01
。1.0.0-alpha01 版本包含以下修訂項目。
已知問題
= 無法使用 Backspace 鍵移除 Material TextField
中的第一個字元 (b/165956313)
0.1.0-dev 版
0.1.0-dev17 版
2020 年 8 月 19 日
發布了 androidx.compose.material:material:0.1.0-dev17
、androidx.compose.material:material-icons-core:0.1.0-dev17
和 androidx.compose.material:material-icons-extended:0.1.0-dev17
。查看 0.1.0-dev17 版的修訂項。
API 變更
- 已移除先前淘汰的 RadioGroup 和 RadioGroupItems。請改用 Row 和 RadioBotton (I381b7、b/163806637)
- 已從 TextField 移除 onFocusChanged 回呼。請改用 Modifier.focusObserver。(I51089、b/161297615)
- 已淘汰 Modifier.drawBorder。請改用 Modifier.border。Border 資料類別已由 BorderStroke 取代 (I4257d,b/158160576)
- 重新命名滑動狀態中的某些屬性:滑動目標 ->目標值、滑動進度 -> 進度、滑動方向 -> 方向。新增了 RememberSWipeableState 函式,用於建立滑動式狀態。(I2fc9c、b/163129614、b/163132293)
- 新增了可定位和適當的佇列的 Snackbar 支援功能。透過
SnackbarHostState.showSnackbar
暫停函式存取該函式。再者:- 已新增 SnackbarHost 元件。這些元件會根據狀態代管 Snackbar,並負責執行 Snackbar 之間的轉換。
- 已新增 SnackbarHostState,以便控制 Snackbar、Snackbar 主機,以及將其與 ScaffoldState 分離。您也可以透過
scaffoldState.snackbarHostState
存取這個狀態。 - 已新增 Snackbar 超載,以便支援 snackbarHostState 和 Snackbar 本身之間的一般介面。(I79aaa)
- 將 enabled 參數新增至 IconButton,並重新排列 IconToggleButton 中的參數 (I0a941、b/161809385、b/161807956)
- 已移除採用以字串為基礎的 API 的 ListItem 版,請改用 Slot 版。(Ib8f57、b/161804681)
- 已移除淘汰的 FilledTextField 元件,請改用 TextField,取得 Filled 文字欄位的 Material Design 實作方式 (I5e889)。
- AlertDialog 現可使用按鈕的流程列 (I00ec1、b/161809319、b/143682374)
- 已在 Modifier.swipeable 中新增參數,用來變更滑出邊界時的阻力程度。已移除 [最小/最大]值參數。(I93d98)
- 已將 backgroundColor 參數新增至 LinearProgressIndicator,並從 CircularProgressIndicator 移除內部邊框間距。新增了 ProgressIndicatorConstants.DefaultProgressAnimationSpec,可在各值之間以動畫表示進度時,當做預設的 AnimationSpec 使用 (If38b5、b/161809914、b/161804677)
- 將選用的參數 velocityThreshold 新增至 Modifier.sWipeable。(I698ba)
- UnderBarSize、fabSize 和其他項目,ScaffoldState 已不再提供。在您想得知其大小的元件上改用 Modifier.onPosition。contentColor 和 Modifier 參數已新增至 Scaffold (Ic6f7b、b/161811485、b/157174382)
- 重新命名並重新排序 Tab 中的某些參數,以與其他 API 保持一致 (Ia2d12、b/161807532)
- 將 TabRow 分割為 TabRow 和捲動式 TabRow,從 TabRow 移除 isScrollable。此外,在 ScrollableTabRow 中可以看到 edgePadding,藉此控制分頁前後的空格。(I583e8、b/161809544)
- 系統已移除
TabRow
物件,並替換成 Tab 常數。TabRow.TabPosition 已移至頂層 (TabPosition),而 indicatorContainer 已重新命名為indicator
。請參閱範例和說明文件,進一步瞭解如何使用更新版 API 和預設值。(I54d45、b/161809544) - 已修改 Modifier.swipeable 的 thresholds 參數;應用程式現在會採用 T 類型的一對狀態,並以 ThresholdConfig 的格式傳回這對狀態之間的閾值。參數 dismissThresholds 已新增至 SWipeToClose,也就是 lambda (dismissDirection) -> ThresholdConfig。(Ie1080)
- 滑桿提供更多顏色來自訂細節 (I73e64、b/161810475)
- Card 的顏色參數已重新命名為 backgroundColor (I01fc1、b/161809546)
- Snackbar 現在可自訂背景和內容顏色 (I238f2、b/161804381)
- 已在 Drawer 中新增 modifier、backgroundColor、contentColor 和 scrimColor 自訂參數 (I23655、b/161804378)
state { ... }
可組合項現已淘汰,改為明確呼叫remember { mutableStateOf(...) }
以求一目瞭然。 這樣可以減少管理狀態所需的整體 API 介面和概念數量,且符合類別屬性委派作業的by mutableStateOf()
模式。(Ia5727)- 按鈕的邊框間距名稱已重新命名為 contentPadd (Id252e、b/161809394)
- 新增實驗性材料元件 SwipeToDismi。(I129e5)
修正錯誤
- 已移除
onChildPositioned
和OnChildPositionedModifier
。開發人員應改為在子版面配置使用onPositioned
和OnPositionedModifier
(I4522e、b/162109766)。 - 已將 MergePolicy lambda 新增至 SemanticsPropertyKey。這可讓您定義 mergeAllDescendants 語意合併的自訂政策。根據預設政策,如果有父項值,就會直接使用父項值;如果沒有,則使用子項值 (Iaf6c4、b/161979921)。
- IntSize 現已成為內嵌類別 (I2bf42)
- 將
PlacementScope.placeAbsolute()
重新命名為PlacementScope.place()
,而原先的PlacementScope.place()
則重新命名為PlacementScope.placeRelative()
。因此,PlacementScope.place()
方法不再以由右至左的結構定義自動鏡射位置。如果需要這個方法,請改用PlacementScope.placeRelative()
。(I873ac、b/162916675)。 - 淘汰了 PxBounds,改用 Rect。以 Rect 更新所有 PxBounds 使用情況,並透過註解加入適當的淘汰/取代作業,協助完成遷移 (I37038、b/162627058)。
- 將 RRect 重新命名為 RoundRect,以更符合 Compose 命名模式 建立了與 RRect 類似的函式建構函式,並淘汰了 RRect 函式建構函式 (I5d325)
0.1.0-dev16 版
2020 年 8 月 5 日
發布 androidx.compose.material:material:0.1.0-dev16
、androidx.compose.material:material-icons-core:0.1.0-dev16
和 androidx.compose.material:material-icons-extended:0.1.0-dev16
。查看 0.1.0-dev16 版的修訂項。
API 變更
- Colors 現在是最終類別,而不是介面。您應為自訂主題物件建立新的環境,並透過新環境使用元件來存取主題物件,類似於 MaterialTheme 的內部運作方式,而不是擴充及提供自訂實作。(Ibae84)
- 將 ColorPalette 重新命名為 Colors,完美對應至 Material 色彩系統,並消除 ColorPalette 設為「一般性」主題設定物件,而非 Material 色彩系統具體實作的錯亂情形。此外,將 lightColorPalette 和 darkColorPalette 分別重新命名為 lightColor 和 darkColors。(I9e976、b/161812111)
- 分別將 BottomNavigationItem 的
text
參數重新命名為label
,onSelected
重新命名為onSelect
,activeColor
重新命名為selectedContentColor
,inactiveColor
重新命名為unselectedContentColor
,並根據相關規範更新參數順序。(Icb605、b/161809324) Modifier.stateDraggable
已完全重新修復,並重新命名為 Modifier.sWipeable。導入了新的滑動式狀態類別,並重構 DrawerState 和 BottomDrawerState。[Modal/bottom]DrawerLayout 不再使用 onStateChange 參數 (I72332、b/148023068)。- foundation.shape.corner 套件已扁平化為 foundation.share (I46491、b/161887429)
- 新增 ExperimentalMaterialApi 註解。將 RippleTheme 標示為實驗功能 (Ic5fa0、b/161784800)
- Material FilledTextField 已重新命名為 TextField,且基礎 TextField 已重新命名為 BaseTextField,讓您可以輕鬆尋找並使用所需的最簡單 API (Ia6242、b/155482676)
修正錯誤
- 已淘汰 OnChildPositioned。請改用子項的 OnPositioned (I87f95、b/162109766)。
- 解決廣泛的 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 的筆劃參數 (如果這些項目有所變更)
- 更新大小以新增解構的 API,將 UnspecifiedSize 重新命名為 Unspecified 並移除未使用的方法
- 將對話方塊移至使用者介面 (I47fa6)
- 已移除
SemanticsNodeInteraction.performPartialGesture
。請改用SemanticsNodeInteraction.performGesture
(Id9b62) - 已將
SemanticsNodeInteraction.getBoundsInRoot()
重新命名為SemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf、b/161336532) - 更新了支援版面配置由右至左的 API。新增了 LayoutDirectionAmbient,可用於讀取及變更版面配置方向。移除了 Modifier.rtl 和 Modifier.ltr。(I080b3)
- 已將 Modifier.deternimateProgress 重新命名為 Modifier.progressSemantics (I9c0b4)
- 使用新增到 Material.io/icons (I4b1d3) 中的最新圖示,更新 material-icon-extended
- 要求為 transitionDefinition 明確指定 T 類型。(I1aded)
- 淘汰了 Modifier.plus,請改用 Modifier.then。「Then」可以更明確地指出先後順序,同時也禁止輸入會破壞鏈結且降低可讀性的
Modifier.padding().background() + anotherModifier
(Iedd58、b/161529964) - 已重新命名 AndroidComposeTestRule,以便建立 AndroidComposeRule。(I70aaf)
- 新增 isFocused() 和 isNotFocused() SemanticsMatcher。(I0b760)
- 已移除不應從測試中使用的
BaseGestureScope.globalBounds
。請改用指向您與之互動的節點所屬的本機座標。(Ie9b08) - 修正剪切顯示上的彈出位置問題。(Idd7dd)
- 將 Modifier.drawBackground 重新命名為 Modifier.background (I13677)
0.1.0-dev15 版
2020 年 7 月 22 日
發布了 androidx.compose.material:material:0.1.0-dev15
、androidx.compose.material:material-icons-core:0.1.0-dev15
和 androidx.compose.material:material-icons-extended:0.1.0-dev15
。0.1.0-dev15 版本包含以下修訂項目。
依附元件更新
- 如要使用
0.1.0-dev15
版的 Compose,您必須依據上方「宣告依附元件」一節所示的新程式碼片段更新依附元件。
API 變更
@Model
註解現已淘汰。請使用 State 和 mutableStateOf 做為替代項目。經過審慎討論後,我們決定達成這個淘汰決定。理由
原因包括但不限於:
- 減少我們需要教授的 API 介面面積和概念
- 更能配合其他相似的工具包 (Swift UI、React、Flutter)
- 這是可逆轉的決定。我們日後隨時可以將
@Model
復原。 - 移除極端情況下的用途,並且不需回答如何將
@Model
設定為系統需要處理的工作相關的難題。 @Model
資料類別、equals、hashcode 等等。- 如何讓一些屬性「觀察到」而其他屬性不會觀察到?
- 如何指定用於觀察的結構性與參照性相等?
- 降低系統中的「魔術指令」。可降低使用者假定系統比實際上更聰明 (例如,知道如何區別清單) 的可能性
- 可讓您以更簡單直覺的方式觀察結果。
- 提高從變數到類別屬性的可重構性
- 開闢手動進行狀態專屬最佳化作業的可能性
- 更緊密地貼近生態系統的其餘部分,並減少對不可變或我們「擁抱可變狀態」的歧義
遷移注意事項
幾乎所有
@Model
的使用情形,都會透過以下兩種方法之一進行轉換。以下範例中的@Model
類別包含兩個屬性 (僅做為範例參考) 並用於可組合項。@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
替代方法 1:使用
State<OriginalClass>
並建立副本。使用 Kotlin 的資料類別即可輕鬆執行這個做法。基本上就是將所有先前的
var
屬性變成資料類別的val
屬性,再使用state
取代remember
,然後將狀態值指派給使用資料類別copy(...)
便利方法複製的原始屬性副本。請務必留意,只有在該類別的變更是在建立
State
執行個體的相同範圍內完成時,這個做法才有效。如果類別內部產生的變更在使用範圍以外,且您需要使用該觀察結果,那麼下一個做法就符合您的需求。data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
替代方法 2:使用 mutableStateOf 和屬性委派
若是使用 Kotlin 的屬性委派項目和
mutableStateOf
API,在組合以外建立 MutableState 執行個體,就能輕鬆執行這個做法。基本上就是原始類別的所有var
屬性取代為var
屬性,並使用mutableStateOf
做為屬性委派項目。這樣做的好處是,類別的使用方式將完全不變更,只有類別內部的實作需要。不過,這個行為模式與原始範例不完全相同,因為現在每個屬性都是個別接受觀察/訂閱,因此重構完成後顯示的重組可能範圍更小 (這是好現象)。class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8、b/152050010、b/146362815、b/146342522、b/143413369、b/135715219、b/143263925、b/139653744)
文字欄位中 onFocusChange 回呼已重新命名為 onFocusChanged (Ida4a1)。
已在 statusDraggable 中新增門檻參數,以指定錨點之間的門檻。用於設定底部導覽匣的 56dp 門檻。此外,BottomDrawerLayout 現已使用獨立的 BottomDrawerState 列舉 (I533fa)。
移除先前淘汰的 Modifier.ripple。Clickable 現在使用波紋做為預設指標 (如果您在應用程式中設定了 MaterialTheme {}),因此在大多數情況下,您只需使用 Clickable,即可免費取得分享指示。如要自訂漣漪效果的顏色/大小/邊界參數,可以手動建立 RippleIndication,並將其做為指示參數傳遞給 Clickable (I663b2、b/155375067)
移除已淘汰的 FilledTextField 可組合項覆寫設定 (I7f8f8)
將 Button 物件 (包含 Button 函式使用的預設值) 重新命名為 ButtonConstants (I7c5f7、b/159687878)
Button 的內容版位現在的行為就像 Row 一樣 (如需包含文字的圖示,請參閱 Button 範例,瞭解如何撰寫) (I0ff10、b/158677863)
已淘汰 RadioGroup 和 RadioGroupItem。將 Box 與 Modifier.selectable、Row 和 Column 搭配使用,從您的設計選出一組適宜的 radioButton (I7f5cf、b/149528535)
新增了素材外框文字欄位 (I1a518)
已淘汰 androidx.ui.foundation.TextFieldValue 和 androidx.ui.input.EditorValue。使用該類型的 TextField、FilledTextField 和 CoreTextField 可組合項也已淘汰。請改用 androidx.ui.input.TextFieldValue (I4066d,b/155211005)
TabRow.TabPosition 不含 Dp 中的位置,而非 IntPx (I34a07、b/158577776)
以 Int 取代使用 IntPx,並以 IntOffset 取代 IntPxPosition。將 IntPxSize 替換成 IntSize。(Ib7b44)
為了整合用於呈現調整大小資訊的類別數量,請將 Size 類別 (而非 PxSize) 的使用方法進行標準化。這樣就能使用內嵌類別,利用一個長整數封裝 2 個浮點值,呈現以浮點表示的寬度和高度 (Ic0191)。
已淘汰 Modifier.ripple。Clickable 現在使用波紋做為預設指標 (如果您在應用程式中設定了 MaterialTheme {}),因此在大多數情況下,您只需使用 Clickable,即可免費取得分享指示。如要自訂漣漪效果的顏色/大小/邊界參數,您可以手動建立 RippleIndication,並將其做為指示參數傳遞給 Clickable (I101cd、b/155375067)
Scaffold API 經過重新設計:有一些參數更改了名稱,還新增了新的參數來強化自訂功能。新增了 Fab、TopBar 和 BottomBar 查詢大小的 getter (I0e7ce)
在 ui-material 中新增了 DropdownMenu 元件,此為 Material Design 選單實作。(I9bb3d)
允許使用 SoftwareKeyboardController 手動顯示/隱藏軟體鍵盤 (Ifb9d6、b/155427736)
Modifier.indication 已新增至基礎套件。您可在自訂互動元素上顯示按下/拖曳/其他指示 (I8425f、b/155287131)
整合 CanvasScope 實作項目,因此現在只有 DrawScope 和 ContentDrawScope 將 CanvasScope 重新命名為 DrawScope。已更新 DrawScope 以實作 Density 介面,並在 ContentDrawScope 中提供 LayoutDirection Deleted DrawScope 子類別。Painter 和 PainterModifier 經更新後不會再自行維護 RTL 屬性,原因是 DrawScope 已提供這項資訊,不必自行提供 (I1798e)
將 Emphasis.emphasize() 重新命名為 Emphasis.applyEmphasis() (Iceebe)
已停用的按鈕現在的外觀符合 Material Design 規格 (I47dcb、b/155076924)
FilledTextField 會取得輸入法 (IME) 動作、視覺化轉換和鍵盤類型支援 (I1f9cf、b/155075201)
將 strokeWidth 參數新增至 CircularProgressIndicator 以自訂筆劃粗細。如要變更 LinearProgressIndicator 的筆劃大小 (高度),您可以使用 Modifier.PreferredHeight() 或其他大小修飾符。(Icea16、b/154919081)
將 strokeWidth 參數新增至 CircularProgressIndicator 以自訂筆劃粗細。如要變更 LinearProgressIndicator 的筆劃大小 (高度),您可以使用 Modifier.PreferredHeight() 或其他大小修飾符。(Icea16、b/154919081)
新增了 Slot API,用於 FilledTextField 中的結尾和開頭圖示,並處理錯誤狀態 (Ic12e0)
FAB 和 Extended FA 的預設顏色已變更為 MaterialTheme.colors.secondary。(I3b9b9、b/154118816)
已將 API 中所用可為空值的 Color 全部改為不可為空值,並使用 Color.Unset 取代空值 (Iabaa7)
已將 EdgeInsets 重新命名為 InnerPadd。而將 Material Buttons 的 innerPadding 參數重新命名為 paddding。(I66165)
滑桿現為無狀態,就像其他控制項一樣,使用者必須自行傳送及更新狀態。(Ia00aa)
已移除 StaticDrawer。如有需要,請改用具備規格規格的 Box (I244a7)
新增了 Filled Text Field (Ic75cd) 的 Material Design 實作項目
將修飾符參數新增到 ListItem 並重新排序參數,以宣傳結尾的 lambda 內文 (I66e21)
將 defaultFontFamily 建構函式參數新增到 Typography,以便為所提供且沒有任何字型系列組合的 TextStyles 指定要使用的預設字型系列。(I89d07)
從 API 介面暫時移除 Material Data Tables。(Iaea61)
重新命名的可分割元件中的參數 (Ic4373)
子項 (Ia6d19)
移除 MaterialTheme.emphasisLevels,請改用 EmphasisAmbient.current 擷取強調型層級 (Ib5e40)
形狀主題系統已根據 Material Design 規格進行更新。您現在可以提供大多數元件所使用的小型、中型和大型形狀 (Ifb4d1)
已將 MaterialTheme.colors()、MaterialTheme.typography() 等 MaterialTheme API 變更為屬性 (而非函式)。請從現有的呼叫中移除括號,無需變更行為。(I3565a)
重構 FloatingActionButton API 以接受可組合的 lambda 而非原始物件。如需使用資訊,請參閱更新後的範例。(I00622)
將
enabled
參數加到 Checkbox, Switch 和 Toggleable (I41c16)Ripple 現已改名為 Modifier。Clickable 尚未轉換的建議用途是
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200、b/151331852、b/150060763)Surface 和 Card 已從 androidx.ui.material.surface 移至 androidx.ui.material (I88a6d、b/150863888)
Button、FloatingActionButton 和 Clickable 現已有不同的
enabled
參數。Button 上的部分參數已重新命名或重新排序 (I54b5a)。將 Image 重新命名為 ImageAsset,以便區分 Image 資料與即將用於版面配置和繪圖內容的 Image 可組合項。在 android.graphics.Bitmap、Bitmap.asImageAsset() 上使用 _Body:Created 擴充功能方法,可用於建立 ImageAsset 例項,協助結合傳統的 Android 應用程式開發與 Compose 架構 (Id5bbd)
刪除了帶有 String 參數的 Snackbar API,以便使用可組合 lambda 的超載。如要查看使用資訊,請參閱更新後的範例 (I55f80)
重構 Tab API 以接受
text
和icon
lambdas (Ia057e)新增了 BottomNavigation 元件,詳情請參閱說明文件與使用方法範例 (I731a0)
新增了 Icon、IconButton 和 IconToggleButton,移除 AppBarIcon。您現在可以用 IconButton 直接取代 AppBarIcon 的現有使用情況,而且現在應具有正確的觸控目標。請參閱相關使用資訊的範例,並查看能直接搭配這些元件使用的 Material 圖示。(I96849)
以不同函式取代 ButtonStyle,並移除文字 (字串) 超載。如需使用資訊,請參閱更新後的範例。(If63ab、b/146478620、b/146482131)
將
Border
輔助鍵重新命名為DrawBorder
(I8ffcc)LayoutCoordinates 已不再具備位置屬性。考慮使用 LayoutModifiers、旋轉或資源調度時,排名屬性並不合理。開發人員應改用 parentCoordinates 和 childToLocal() 計算 oneLayoutCoordinate 之間的轉換。
LayoutCoordinates 使用 IntPxSize 做為大小屬性,而非 PxSize。Layout 會使用整數像素大小設定版面配置,因此所有版面配置大小都應使用整數,而不是浮點值 (I9367b)
對環境 API 做出破壞性變更。詳情請參閱記錄檔和
Ambient<T>
說明文件 (I4c7ee、b/143769776)已新增 Scaffold Material 元件。Scaffold 實作 (I7731b)
已取代 DrawBorder 並改用 Border Modifier (Id335a)
修正錯誤
- 淘汰了 FocusModifier,改用 Modifier.focus、Modifier.focusRequester、Modifier.focusObserver。已淘汰 FocusState 和 FocusDetailsState,並改用 FocusState2 (I46919、b/160822875、b/160922136)
- 現已淘汰 VerticalScroller 和 HoriziontalScroller。使用 ScrollableColumn 和 ScrollableRow,透過資料欄/資料列行為和參數或使用內建功能,或是對元素使用 Modifier.verticalScroll 和 Modifier.horizontalScroll。同樣地,ScrollerPosition 也已淘汰,並改用 ScrollState (I400ce、b/157225838、b/149460415、b/154105299)
- 已將 Modifier.draggable 和 Modifier.scrollable API 重新作業。因為 DragDirection 被移除以有利於 Orientation。可捲動狀態已被簡化。ScrollableState 已重新命名為 ScrollableController (Iab63c、b/149460415)
- 將
runOnIdleCompose
重新命名為runOnIdle
(I83607) - 單一值的語意屬性現在採用呼叫樣式。舉例來說,「semantics { hidden = true }」目前寫入為「semantics { hidden() }」(Ic1afd、b/145951226、b/145955412)
- 許多測試 API 已重新命名,提供更直覺化的使用體驗。將所有 FindXYZ API 都重新命名為 onNodeXYZ。將所有 doXYZ API 都重新命名為 performanceXYZ。(I7f164)。
- 改變了 Transition API,用於回傳 TransitionState,而不是將 TransitionState 傳遞至子項。這項改變讓 API 與 animate() API 更加一致 (I24e38)。
- 已新增 IntBounds 單位類別,代表版面配置中的整數像素邊界。PopupPositionProvider 的 API 已更新,以便使用這個類別。(I0d8d0、b/159596546)
- 為測試搜尋工具新增了一個選用標記 useUnMergedTree。(I2ce48)
- 已移除過時的大小測試 API。(Iba0a0)
- 移除包裝 NativeShader 類別的 Shader 內嵌類別,取代預期的 NativeShader 類別。已包裝的 Shader 內嵌類別在 API 介面上並未新增任何重要項目,而且是內嵌類別,因此請直接使用 NativeShader 類別。(I25e4d)
- 彈出式視窗、方塊和選單現在可以沿用相關 MaterialTheme (Ia3665、b/156527485)
- 您現在可以使用 Material 下拉式選單 (Ide699)。
- 從 Layout() 函式的評估區塊移除版面配置方向參數。不過,在回呼內可透過測量範圍物件取得版面配置方向 (Ic7d9d)
- 在頂層 API 中使用 AnimationSpec (而非 AnimationBuilder) 來釐清靜態動畫規格的概念 - 改善 DSL 轉換:在建立如 tween、spring 等 AnimationSpec 時,不再需要使用 lambda。而是直接採用建構函式參數。- 改善使用 AnimationSpec 開啟建構函式 (而非仰賴建構工具) 的整體操作簡易性 - 將 KeyFrame 和 Tween 的時間與延遲時間變更為 Int。這可免除不必要的類型層級轉換和方法超載 (支援 Long 和 Int)。(Ica0b4)
- 當
enabled
設為 false 時,切換按鈕會顯示為停用狀態 (If4624、b/155941869、b/159331694) - Modifier.tag 已重新命名為 Modifier.layoutId,以避免與 Modifier.testTag 混淆。(I995f0)
- 從 Placeable#get(AlignmentLine) 傳回的對齊線 Int 位置現在不可為空值。如果缺少查詢的對齊線,就會傳回 AlignmentLine.Unspecified (I896c5、b/158134875)
將 Radius 類別重構為內嵌類別。移除具有預設參數的函式建立方法,並使用預設參數讓半徑 Y 軸與必要 X 軸半徑參數的 y 軸相符。
更新 DrawScope.drawRoundRect 以使用單一 Radius 參數,而非 2 軸的 X 和 y 軸半徑值 (I46d1b)
為了將呈現定位資訊所用的類別數量合併,應將 Offset 類別的用法標準化,而不要使用 PxPosition。這樣就能使用內嵌類別,利用一個經度封裝 2 個浮點型數值,呈現以浮點數表示的 x 和 y 偏移量。(I3ad98)
我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數。刪除了整個 Px 類別 (I3ff33)
已淘汰 Toggleable 元件,請改用 Modifier.toggleable (I35220、b/157642842)
我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I086f4)
我們進行了大規模重構工作,其中一部分是將在各種組合中使用 Px 類別來處理像素參數,更換成只使用 Dp 和基本類型 (Id3434)
我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I97a5a)
修正無法針對 DropdonMenuItems 叫用 onClick 的問題 (I3998b, b/157673259)
已淘汰 MutuallyExclusiveSetItem。請改用 Modifier.selectable。(I02b47、b/157642842)
TestTag 現已淘汰,請改用 Modifier.testTag。(If5110、b/157173105)
TextField 的游標有閃爍的動畫 (Id10a7)
我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I19d02)
VerticalScroller 提供立即可用的欄。HorizontalScroller 現在提供立即可用的列。(Ieca5d、b/157020670)
我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (Iede0b)
我們已取消淘汰 Modifier.semantics,並允許使用高階元件 (I4cfdc)。
變更了 DrawLayer 修飾詞 API:outlineShape 已重新命名為 shape,採用 RectangleShape 做為預設值,而且現在不可設為空值;clipToOutline 已重新命名為 clip;移除了 clipToBounds,原因是其等同於 RectangleShape 的 clip == true (I7ef11,b/155075735)
更新了較高階的 Compose API,讓 Canvas 改為顯示 CanvasScope。如此一來,取用者就不必維護自己的 Paint 物件。如果取用者仍要求 Canvas 存取權,則可以使用 drawCanvas 擴充功能方法,這種方法可提供回呼,透過基礎 Canvas 發出繪圖指令 (I80afd)。
已淘汰 AlignmentLineOffset 可組合項,請改用 relativePaddingFrom() 修飾符。CenterAlignmentLine 可組合項也已移除 (I60107)
已變更 WithConstraints 結尾的 lambda API。如今,它有一個接收器範圍,而非 2 個參數,除了 constraints 與 layoutDirection 之外,還提供 minWidth、maxWidth、minHeight 和 maxHeight 屬性 (以 dp 為單位) (I91b9a、b/149979702)
新增了 defaultMinSizeConstraints 版面配置修飾符,該修飾符只有在未指定傳入的對應限制時,才能將大小限制設為已包裝的版面配置範圍 (最小限制為 0,最大限制則為無限)。(I311ea、b/150460257)
已移除 FocusManagerAmbient。使用 FocusModifier.requestFocus 取得專注力。(Ic4826)
建立 CanvasScope API,以便納入 Canvas 物件以顯示無狀態、宣告式繪圖 API 介面。變形作業侷限在其本身的接收器範圍內,大小調整資訊的範圍也對應插邊的邊界。不需要讓取用端保有自己的 Paint 狀態物件來設定繪圖作業。
新增 CanvasScopeSample 並更新試用版應用程式,加入宣告式圖形示範 (Ifd86d)
在 TextField 中新增游標色彩自訂 (I6e33f)
現在起,與 TextField 搭配使用的 TextFieldValue 可以在發生以下情況時產生活動:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce、b/155075724)已將 LayoutModifier2 重新命名為 LayoutModifier。(Id29f3)
移除已淘汰的 LayoutModifier 介面 (I2a9d6)
已使用 FocusNode 取代 CoreTextField/TextField focusIdentifier 參數,以便與聚焦子系統整合。(I7ea48)
Layout 和 LayoutModifier2 中的內建測量函式現在設有 IntrinsicMeasureScope 接收器,可提供附有隱性傳播版面配置方向的內建函式查詢 API。(Id9945)
新增了 Modifier.zIndex() 來控制同一個上層版面配置的子項繪製順序。DrawLayerModifier 的 elevation 屬性已重新命名為 shadowElevation,不再控制繪製順序。變更了 DrawShadow 的參數順序:elevation 現在的順序為第一個,shape 為第二個並採用 RectangleShape 做為預設值 (I20150、b/152417501)。
RectangleShape 已從 androidx.ui.foundation.shape.* 移至 androidx.ui.graphics.* (Ia74d5、b/154507984)
TextField API 更新 - 已將 onFocus 和 onBlur 回呼合併至帶有參數的單一 onFocusChange(Boolean) 回呼 (I66cd3)
分別在類別和欄中新增了 verticalGravity 和horizontalGravity 參數。(I7dc5a)
已更新 wrapContentWidth 和 wrapContentHeight 必須使用垂直或水平對齊,而非使用任何對齊。引力調整器已更新為接受垂直或水平對齊。更新 Row、Column 和 Stack,藉此支援自訂的持續對齊方式 (Ib0728)。
建立 PixelMap API 來支援 ImageAsset 查詢像素資訊。(I69ad6)
移除 ProvideContentColor,改為直接透過
Providers
使用 ContentColorAmbient (Iee942)ui-text-compose 模組重新命名為 ui-text。ui-text 現在包含 CoreText 和 CoreTextField 元件 (Ib7d47)
ui-text 模組已重新命名為 ui-text-core (I57dec)
將 ui-framework/CoreText、CoreTextField 可組合項移至 ui-text-pose 下。建議您在專案中納入 ui-text-compose (I32042)。
改善 DrawModifier API:
- 已設定 Draw() ContentDrawScope 的接收器範圍
- 移除了 Draw() 的所有參數
- DrawScope 的介面與之前的 CanvasScope 介面相同
- ContentDrawScope 含有 DrawContent() 方法 (Ibaced、b/152919067)
runOnIdleCompose
和runOnUiThread
現已成為全域函式,而非 ComposeTestRule 中的方法 (Icbe8f)。[Mutable]State 屬性委派運算子已移至擴充功能,以支援 Kotlin 1.4 屬性委派最佳化。呼叫端必須新增匯入作業才能繼續使用
by state { ... }
或by mutableStateOf(...)
(I5312c)。為 LayoutCoordinates 新增了 positionInParent 和 boundsInParent。(Icacdd、b/152735784)
ColoredRect 已淘汰,請改用 Box(Modifier.PreferredSize(width, height).drawBackground(color))。(I499fa、b/152753731)
已將 LayoutResult 重新命名為 MeasureResult (Id8c68)
新增了用於定義版面配置修飾符的 API LayoutModifier2,並淘汰 LayoutModifier (If32ac)
已使用 Factory 擴充功能函式取代 Modifier 及運算子 (I225e4)
可拖曳的功能已移至修飾符 (Id9b16、b/151959544)
已淘汰 ParentData 可組合項。您應建立可實作 ParentDataModifier 介面的修飾符;如果只想為版面配置子項加上標記,方便在測量區塊中加以識別,則請使用 LayoutTag 修飾符 (I51368、b/150953183)。
已淘汰 Center 可組合項,應改用 LayoutSize.Fill + LayoutAnchor.Center 修飾詞,或將其替換為已套用適當修飾詞的 Box 或 Stack 可組合項 (Idf5e0)
新增了 VectorPainter API 以替向量圖形取代現有的子撰寫 API。子組合的結果是 VectorPainter 物件,而非 DrawModifier。已淘汰先前的 DrawVector 可組合項,改用 VectorPainter。
將 Image(Painter) API 重新命名為 PaintBox(Painter)已建立 Vector 可組合項,其行為類似 Image 可組合項,但改用 VectorAsset 而非 ImageAsset (I9af9a、b/149030271)
將 LayoutFlex 重新命名為 LayoutWeight。將 tight 參數重新命名為 fill。(If4738)
已移除 Re PaintBoundary 以有利於 DrawLayerModifier (I00aa4)
DrawVector 已從一般的可組合函式改為會傳回 Modifier drawVector(),將向量繪製成版面配置的背景 (I7b8e0)。
Opacity 可組合函式已更換為 drawOpacity 修飾詞 (I5fb62)。
將可組合函式 Clip 替換為修飾符 drawClip()。當只需要將圖層邊界裁剪為矩形時,DrawdClupToBounds 是相當實用的修飾符 (If28eb)
DrawShadow 可組合函式已更換為 DrawShadow() 修飾符。陰影現已繪製成 LayerModifier 的一部分。(I0317a)
新增了 LayerModifier 這個修飾符,可為版面配置新增 RenderNode。可讓您設定剪輯、不透明度、旋轉、縮放和陰影。這將取代 RepaintBoundary。(I7100d、b/150774014)
androidx.compose.ViewComposer 已移至 androidx.ui.node.UiComposer。此外,我們移除了 androidx.compose.Emittable,它對 ComponentNode 來說是多餘的。androidx.compose.ViewAdapters 已移除。系統已不再支援這些項目。Compose.composeInto 已淘汰,請改用
setContent
或setViewContent
。Compose.disposeComposition 已淘汰,請改為對setContent
傳回的Composition
使用dispose
方法。 androidx.compose.Compose.subcomposeInto 已移至 androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt 已重新命名為 ComponentNode#insertAt ComponentNode#emitRemoveAt 已重新命名為 ComponentNode#removeitModeAt ComponentNode#emitMode 已重新命名為 ComponentNode#move (Idef00)已建立 Image 可組合項,不但可在畫面上繪製指定的 ImageAsset,也能調整大小/版面配置。這個可組合項也支援繪製一切任意 Painter 例項,能依照內建函式的尺寸,並支援指定的固定尺寸或最小尺寸 (Ibcc8f)
已淘汰 Wrap 可組合項。可以用 LayoutAnchor 修飾符或 Stack 可組合項取代 (Ib237f)
WithConstraints 取得 LayoutDirection 參數 (I6d6f7)
將版面配置方向設為從上層版面配置節點往子項傳播。新增了版面配置方向修飾符 (I3d955)。
堆疊元件支援從右至左方向性 (Ic9e00)
已移除 DrawGraph 可撰寫的元件。請改用 DrawBackground 修飾符 (I7ceb2)。
LayoutPadding 修飾符中支援從右到左的方向 (I9e8da)
新增了 AdapterList 這個捲動清單元件,僅組合及配置可見項目。目前已知的問題包括,這個元件僅限直向,且無法完全處理子項的所有變更。(Ib351b)
已將
ComposeFlags.COMPOSER_PARAM
標記更新為true
,這會變更 Compose 外掛程式的程式碼產生策略。大致上來說,這會導致系統產生附加合成參數的 @Composable 函式,這個參數會傳遞至後續的 @Composable 呼叫中,藉此讓執行階段妥善管理執行作業。這是二進位檔的重大破壞性變更,但應在所有 Compose 的合法使用情況中,保留來源層級的相容性。(I7971c)。新增了 Canvas 元件。這個可組合項會占用某個大小 (由使用者所提供),可供使用 CanvasScope 進行繪圖 (I0d622)
Density 和 DensityScope 已合併至單一介面。現在可以使用 DensityAmbient.current 取代 ambientDensity()。使用 with(density) 取代 withDensity(density) (I11cb1)
變更了 LayoutCoordinates,將 providedAlignmentLines 設為 Set (而非 Map),同時讓 LayoutCoordinates 導入 get() 運算子,而不是擷取一個值。這樣一來,修飾符就能輕鬆修改組合的一或多個值,而不必為每個修飾符建立新的集合 (I0245a)。
Scroller 現在表現出原生的 Android 快速滑過動作行為。(I922af、b/147493715)
改善限制的 API 介面 (I0fd15)