透過集合功能整理內容 你可以依據偏好儲存及分類內容。

Compose Material

運用現成可用的質感設計元件建構 Jetpack Compose UI。這是更高層級的 Compose 進入點,旨在確保提供的元件與 www.material.io 上所述元件相符。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2022 年 10 月 24 日 1.3.0 - - 1.4.0-alpha01

結構

Compose 是由 androidx 中的 7 個 Maven 群組 ID 所組成。每個群組都包含一個指定功能子集,且各有一組專屬的版本資訊。

下表提供各群組的說明和每組版本資訊的連結。

群組說明
compose.animation在其 Jetpack Compose 應用程式中建構動畫,提供豐富的使用者體驗。
compose.compiler透過 Kotlin 編譯器外掛程式轉換 @Composable 函式,並啟用最佳化功能。
compose.foundation透過現成可用的建構區塊編寫 Jetpack Compose 應用程式,並擴充基礎以建構您自己的設計系統元件。
compose.material運用現成可用的質感設計元件建構 Jetpack Compose UI。這是更高層級的 Compose 進入點,用意是確保提供的元件與 www.material.io 上所述元件相符。
compose.material3運用新一代的質感設計 3 元件建構 Jetpack Compose UI。質感設計 3 提供新的主題設定和元件,以及動態色彩等 Material You 個人化功能,可與全新的 Android 12 視覺風格和系統 UI 呼應。
compose.runtimeCompose 的程式設計模型和狀態管理的基礎建構區塊,以及 Compose Compiler 外掛程式指定的核心執行階段。
compose.ui與裝置互動所需的 Compose UI 基礎元件,包括版面配置、繪圖及輸入。

宣告依附元件

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

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

Groovy

dependencies {
    implementation "androidx.compose.material:material:1.3.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.2"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.material:material:1.3.1")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.2"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。

意見回饋

您的意見可協助我們改善 Jetpack。發現新的問題或有改善這個程式庫的想法時,請告訴我們。建立新的問題之前,請先查看這個程式庫中的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

1.4 版本

1.4.0-alpha01 版本

2022 年 10 月 24 日

發布 androidx.compose.material:material-*:1.4.0-alpha011.4.0-alpha01 版本包含以下修訂項目。

API 變更

  • 新增適用於手勢偵測工具的新方法:awaitEachGesture()。其運作方式與 forEachGesture() 類似,但手勢的迴圈完全在 AwaitPointerEventScope 內運作,因此事件不會在疊代之間遺失。
  • 由於 forEachGesture() 會導致事件在手勢間遺失,因此已將其淘汰並改用 awaitEachGesture() (Iffc3fb/251260206)。

1.3 版本

1.3.0 版本

2022 年 10 月 24 日

發布 androidx.compose.material:material-*:1.3.01.3.0 版本包含以下修訂項目。

自 1.2.0 版以來的重要異動

行為破壞性變更

  • 對話方塊和彈出式視窗支援的高度上限已降至 8dp。

API 變更

  • 在 Compose 中新增下拉即可重新整理元件 (I29168)。
  • 將參數名稱從值變更為 RangeSlider 中的值 (I3b79a)。

1.3.0-rc01 版本

2022 年 10 月 5 日

發布 androidx.compose.material:material-*:1.3.0-rc011.3.0-rc01 版本包含以下修訂項目

1.3.0-beta03 版本

2022 年 9 月 21 日

發布 androidx.compose.material:material-*:1.3.0-beta031.3.0-beta03 版本包含以下修訂項目。

API 變更

  • 在 Compose 中新增下拉即可重新整理元件 (I29168)

1.3.0-beta02 版本

2022 年 9 月 7 日

發布 androidx.compose.material:material-*:1.3.0-beta021.3.0-beta02 版本包含以下修訂項目。

自 1.3.0-beta01 以來沒有變更

1.3.0-beta01 版本

2022 年 8 月 24 日

發布 androidx.compose.material:material-*:1.3.0-beta011.3.0-beta01 版本包含以下修訂項目。

行為破壞性變更

對話方塊和彈出式視窗支援的高度上限已降至 8dp。

Compose 對話方塊和彈出式視窗支援的高度上限已從 30dp 降至 8dp。這項變更會影響質感設計元件及 UI 自訂對話方塊和彈出式視窗。這項變更的目的在於減少 S 以下 Android 版本的無障礙錯誤,並確保這些視窗中的無障礙服務能夠與對話方塊或彈出式視窗內的內容互動。

只有在您建立自訂對話方塊或彈出式視窗實作項目、且高度設定為 8 dp 以上時,才會受到這項變更的影響。請考慮降低對話方塊或彈出式視窗的高度。如果您需要選擇不採用這項新行為,可考慮以所需高度設定,自行建立對話方塊或彈出式視窗。不建議這麼做,因為無障礙功能可能會受到不當的影響,而且必須由開發人員確保對話方塊的底部或彈出式視窗能進行互動,並且可供無障礙服務讀取。

1.3.0-alpha03 版本

2022 年 8 月 10 日

發布 androidx.compose.material:material-*:1.3.0-alpha031.3.0-alpha03 版本包含以下修訂項目。

1.3.0-alpha02 版本

2022 年 7 月 27 日

發布 androidx.compose.material:material-*:1.3.0-alpha021.3.0-alpha02 版本包含以下修訂項目

外部貢獻

  • 修正 Scaffold FloatingActionButtonAnimatedVisibility 問題 (I3a0aeb/224005027)

1.3.0-alpha01 版本

2022 年 6 月 29 日

發布 androidx.compose.material:material-*:1.3.0-alpha011.3.0-alpha01 版本包含以下修訂項目。

API 變更

  • 將參數名稱從值變更為 RangeSlider 中的值 (I3b79a)

修正錯誤

  • 更新標記範例以提供更多實質的內容說明。(I10b9d)

1.2 版本

1.2.1 版本

2022 年 8 月 10 日

發布 androidx.compose.material:material-*:1.2.11.2.1 版本包含以下修訂項目。

1.2.0 版本

2022 年 7 月 27 日

發布了 androidx.compose.material:material-*:1.2.01.2.0 版本包含以下修訂項目。

1.2.0-rc03 版本

2022 年 6 月 29 日

發布 androidx.compose.material:material-*:1.2.0-rc031.2.0-rc03 版本包含以下修訂項目。

  • 自 1.2.0-rc02 以來沒有變更。

1.2.0-rc02 版本

2022 年 6 月 22 日

發布 androidx.compose.material:material-*:1.2.0-rc021.2.0-rc02 版本包含以下修訂項目

1.2.0-rc01 版本

2022 年 6 月 15 日

發布了 androidx.compose.material:material-*:1.2.0-rc011.2.0-rc01 版本包含以下修訂項目。

API 變更

  • 撰寫程式庫中的介面現已使用 jdk8 預設介面方法建立 (I5bcf1)

修正錯誤

  • 使用主要圖示分頁更新標記,以附加標記至標籤,而不是圖示。(I90993)

1.2.0-beta03 版本

2022 年 6 月 1 日

發布了 androidx.compose.material:material-*:1.2.0-beta031.2.0-beta03 版本包含以下修訂項目。

修正錯誤

  • 修正了 BottomSheetScaffold 在應用程式列頂部上方的陰影上繪製的錯誤。BottomSheetScaffold 現在也會在放置 Snackbar 時將工作表的狀態納入考量:處於收合狀態時,會將 Snackbar 置於工作表和懸浮動作按鈕 (FAB) 上方;處於展開狀態時,Snackbar 會固定在工作表底部 (Ia80b5b/187771422)。

1.2.0-beta02 版本

2022 年 5 月 18 日

發布了 androidx.compose.material:material-*:1.2.0-beta021.2.0-beta02 版本包含以下修訂項目。

1.2.0-beta01 版本

2022 年 5 月 11 日

發布了 androidx.compose.material:material-*:1.2.0-beta011.2.0-beta01 版本包含以下修訂項目。

新功能

  • 這是 1.2 版本的第一個 Beta 版!

API 變更

  • 已重新命名 TextFieldDefaults.BorderStroke 可組合項,該可組合項用於繪製 OutlinedTextFieldTextFieldDefaults.BorderBox 的框線 (I5f295)。

1.2.0-alpha08 版本

2022 年 4 月 20 日

發布 androidx.compose.material:material-*:1.2.0-alpha081.2.0-alpha08 版本包含以下修訂項目。

API 變更

  • 已從 PointerInputChange 淘汰部分使用功能 (向下或定位)。可使用 consume() 徹底使用變更。可使用 isConsumed 判斷其他使用者是否曾經使用過該變更。
  • PointerInputChange::copy() 現在會一律建立淺層複本。這表示只要使用一份複本,系統就會使用 PointerInputChange 的複本。如要建立未繫結的 PointerInputChange,請改用建構函式 (Ie6be4b/225669674)。

1.2.0-alpha07 版本

2022 年 4 月 6 日

發布 androidx.compose.material:material-*:1.2.0-alpha071.2.0-alpha07 版本包含以下修訂項目。

1.2.0-alpha06 版本

2022 年 3 月 23 日

發布 androidx.compose.material:material-*:1.2.0-alpha061.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-alpha051.2.0-alpha05 版本包含以下修訂項目。

API 變更

  • LazyVerticalGridLazyHorizontalGrid 現已轉為穩定版 (I307c0)。
  • 已將 LazyVerticalGrid/LazyHorizontalGrid 和所有相關的 API 移至 .grid 子套件。請將匯入項目從 androidx.compose.foundation.lazy 更新為 androidx.compose.foundation.lazy.grid (I2d446b/219942574)。
  • 還原 WindowInsetsControllerCompat 之前完全依賴 View 的變動,現在管理某些視窗標記改回需要 Window。淘汰 ViewCompat.getWindowInsetsController 並改為 WindowCompat.getInsetsController,確保使用正確的 Window (例如 View 是在對話方塊內) (I660aeb/219572936)。
  • 文字:includeFontPadding 現在預設為關閉。系統會處理 includeFontPadding=false 造成的裁剪問題,長指令碼應不致於遭到裁剪 (I31c84b/171394808)。
  • 新增用於定義跨軸大小的 LazyVerticalGrid API (I17723)

1.2.0-alpha04 版本

2022 年 2 月 23 日

發布 androidx.compose.material:material-*:1.2.0-alpha041.2.0-alpha04 版本包含以下修訂項目。

API 變更

  • Add support for filter chips (I39a6eb/192585545)
  • 新增 TextFieldDecorationBoxOutlinedTextFieldDecorationBox。搭配使用這些元件和 BasicTextField 將有助於您根據質感設計文字欄位建構自訂文字欄位,但提供更多自訂選項。
  • 開放調整文字欄位中的水平和垂直間距 (I8c9f1203764564b/191543915b/189971673b/183136600b/179882597b/168003617)。
  • 新增 ComposableTargetComposableTargetMarkerComposableOpenTarget,在針對非設計對象的 Applier 呼叫可組合函式時,可報告編譯時間。

    在多數情況下,Compose 編譯器外掛程式能夠推論出註解,因此直接使用這些註解的情形應該相當罕見。無法推論的案例包括建立及使用自訂 Applier、抽象的可組合函式 (例如介面方法)、欄位,或屬於可組合 lambda 的全域變數 (本機變數和參數為推論得出),或是使用 ComposeNode 或相關可組合函式時的情況。

    對於自訂 Applier,呼叫 ComposeNodeReusableComposeNode 的可組合函式需要為函式和任何可組合的 lambda 參數類型新增 CompoableTarget 註解。不過,與其直接使用 ComposableTarget,建議您建立以 ComposableTargetMarker 加上註解的註解,再使用已標示的註解。以 ComposableTargetMarker 加上標示的可組合註解,即等同於使用屬性類別完整名稱做為 Applier 參數的 ComposbleTarget。如需 ComposableTargetMarker 的使用範例,請參閱 anroidx.compose.ui.UiComposable (I38f11)

1.2.0-alpha03 版本

2022 年 2 月 9 日

發布 androidx.compose.material:material-*:1.2.0-alpha031.2.0-alpha03 版本包含以下修訂項目。

修正錯誤

1.2.0-alpha02 版本

2022 年 1 月 26 日

發布了 androidx.compose.material:material-*:1.2.0-alpha021.2.0-alpha02 版本包含以下修訂項目。

API 變更

  • NonRestartableComposable 新增至屬於現有方法超載且無複雜邏輯的方法。如此一來,對於呼叫內部函式中重複的所有參數,可減少編譯器產生的記憶檢查 (等於)。(I90490)
  • 支援動作方塊 (I07100b/192585545)

1.2.0-alpha01 版本

2022 年 1 月 12 日

發布了 androidx.compose.material:material-*:1.2.0-alpha011.2.0-alpha01 版本包含以下修訂項目。

依附元件更新

  • 現在依附於 Kotlin 1.6.10

外部貢獻

  • ModalBottomSheetState 現在有 isSkipHalfExpanded 旗標。您可以稍後透過建構函式設定,或是稍後將 ModalBottomSheetStateisSkipHalfExpanded 屬性設為 true,藉此進行更新。更新 isSkipHalfExpanded 的值會使工作表重新組成。(I18b86b/186669820)

1.1 版本

1.1.1 版本

2022 年 2 月 23 日

發布 androidx.compose.material:material-*:1.1.11.1.1 版本包含以下修訂項目。

修正錯誤

1.1.0 版本

2022 年 2 月 9 日

發布了 androidx.compose.material:material-*:1.1.01.1.0 版本包含以下修訂項目。

自 1.0.0 版本以來的重要異動

  • 穩定支援 Android 12 的過度捲動效果
  • 改善觸控目標縮放功能
  • 請注意,對於 Compose 1.0 版,Material 元件會展開版面配置空間,以符合 Material 無障礙功能準則對於觸控目標尺寸的規定。舉例來說,即使您將觸控目標按鈕的尺寸設定為小於最小尺寸 48x48dp,系統仍會將按鈕的尺寸擴大為 48x48dp。這樣一來,Compose Material 的行為就會跟質感設計元件相同,在混用 Views 和 Compose 時便可確保行為一致。利用 Compose Material 元件建立使用者介面時,這項異動還能確保達到觸控目標無障礙功能的最低要求。
  • 穩定支援導覽邊欄
  • 將先前推出的一些實驗性 API 升級為穩定版
  • 支援更新版本的 Kotlin

1.1.0-rc03 版本

2022 年 1 月 26 日

發布 androidx.compose.material:material-*:1.1.0-rc031.1.0-rc03 版本包含以下修訂項目。

行為異動

請注意,就 Compose 1.0 版本而言,Material 元件會展開版面配置空間,以符合 Material 觸控目標大小的 Material 無障礙功能準則。舉例來說,即使您將觸控目標按鈕的尺寸設定為小於最小尺寸 48x48dp,系統仍會將按鈕的尺寸擴大為 48x48dp。這樣一來,Compose Material 的行為就會跟質感設計元件相同,在混用 Views 和 Compose 時便可確保行為一致。利用 Compose Material 元件建立使用者介面時,這項異動還能確保達到觸控目標無障礙功能的最低要求。

修正錯誤

  • 為版面配置檢查器檢查最低觸控目標修飾詞時,新增更完善的偵錯資訊 (aosp/1955036)。

1.1.0-rc01 版本

2021 年 12 月 15 日

發布 androidx.compose.material:material-*:1.1.0-rc011.1.0-rc01 版本包含以下修訂項目。

修正錯誤

1.1.0-beta04 版本

2021 年 12 月 1 日

發布了 androidx.compose.material:material-*:1.1.0-beta041.1.0-beta04 版本包含以下修訂項目。

新功能

  • 更新為可與 Kotlin 1.6.0 相容

1.1.0-beta03 版本

2021 年 11 月 17 日

發布了 androidx.compose.material:material-*:1.1.0-beta031.1.0-beta03 版本包含以下修訂項目。

1.1.0-beta02 版本

2021 年 11 月 3 日

發布了 androidx.compose.material:material-*:1.1.0-beta021.1.0-beta02 版本包含以下修訂項目。

修正錯誤

  • 現在起,漣漪效果與其他指示只有在位於 Modifier.scrollable() 容器內時才會延後,而不再是遇到關閉事件就延後 (Ibefe0b/203141462)。

1.1.0-beta01 版本

2021 年 10 月 27 日

發布了 androidx.compose.material:material-*:1.1.0-beta011.1.0-beta01 版本包含以下修訂項目。

新功能

  • 漣漪效果現在支援懸停和焦點狀態,因此懸停/聚焦一個組件 (例如按鈕) 會顯示正確的狀態重疊。

1.1.0-alpha06 版本

2021 年 10 月 13 日

發布 androidx.compose.material:material-*:1.1.0-alpha061.1.0-alpha06 版本包含以下修訂項目。

API 變更

  • 已新增 Layout 的無子項超載,藉此提高效率 (Ib0d9a)
  • 根據內部 TextFieldDropdownMenuExposedDropdownMenuBox 實作 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-alpha051.1.0-alpha05 版本包含以下修訂項目。

API 變更

  • 針對沒有可存取觸控目標的 Material 元件,新增最小觸控目標大小。這樣做會在元件周圍新增額外間距,以確保元件的觸控目標夠大,如果現有 UI 假定這些元件的大小等於其視覺大小,而不計入觸控目標大小,則這項作業可能會變更現有 UI。您可以使用實驗性的 LocalMinimumTouchTargetEnforcement 本機組合跨階層停用這項行為,但這只是在更新現有 UI 以計入新的最小尺寸期間的暫時性解決方法 (I9b966b/149691127b/171509422)。
  • 已新增實驗性 TextFieldColorsWithIcons 介面,並擴充 TextFieldColors 以將 InteractionSource 提供給 leadingColor 和 trailingColor。這樣您就可以根據焦點狀態,修改 TextField 的外觀 (I66923b/198402662)。

1.1.0-alpha04 版本

2021 年 9 月 15 日

發布 androidx.compose.material:material-*:1.1.0-alpha041.1.0-alpha04 版本包含以下修訂項目。

API 變更

  • 已淘汰 performGestureGestureScope,並已由 performTouchInputTouchInjectionScope 取代 (Ia5f3fb/190493367)。
  • 已將 touchBoundsInRoot 加入至含有最低觸控目標尺寸的 SemanticsNode,讓開發人員能夠確保觸控目標符合無障礙功能的最低要求 (I2e14bb/197751214)。

修正錯誤

  • 在剪輯時,允許觸控目標邊界超出剪輯區域,以符合最小觸控目標要求 (I43e10b/171509422)。
  • 更新 Divider 可組合項,以將 Dp.Hairline 做為 thickness 參數,這樣不論顯示密度為何,均可支援繪製單一像素分隔線 (I16ffbb/196840810)。

1.1.0-alpha03 版本

2021 年 9 月 1 日

發布 androidx.compose.material:material-*:1.1.0-alpha031.1.0-alpha03 版本包含以下修訂項目。

新功能

  • 已更新 Compose 1.1.0-alpha03,使其依附於 Kotlin 1.5.30 (I74545)。

API 變更

  • 已新增測試方法,以取得裁剪邊界 (I6b28e)
  • 已對 ViewConfiguration 新增最小觸控目標尺寸,將其用於語意及輸入指標,確保可使用無障礙功能。(Ie861c)

1.1.0-alpha02 版本

2021 年 8 月 18 日

發布 androidx.compose.material:material-*:1.1.0-alpha021.1.0-alpha02 版本包含以下修訂項目。

外部貢獻

  • 修正 SwipeableState 在滑動偏移量落在錨定標記捨入誤差內時的行為 (I03d39b/191993377)。

1.1.0-alpha01 版本

2021 年 8 月 4 日

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

API 變更

  • 已更新利用來源和目的地矩形的 DrawScope#drawImage 方法,以便使用選擇性的 FilterQuality 參數。相當適合像素風格藝術在放大時進行像素化處理之用。已更新 BitmapPainter + Image 可組合項,成為也能使用選擇性的 FilterQuality 參數 (Ie4fb0b/180311607)。
  • 已將 BadgeBox 重新命名為 BadgedBox,並變更了相關參數,讓其可以接受 Badge 可組合項。已新增 Badge 元件,這是 BadgedBox 的一般徽章內容 (I639c6)。
  • 已新增 NavigationRail 元件,請參閱說明文件和範例資訊 (I8de77)。

修正錯誤

  • 已新增底部對齊的 NavigationRail 範例和目錄應用程式示範 (I3cffc)。
  • 對話方塊現在會遵循平台大小行為。將 usePlatformDefaultWidth 設為 false,以覆寫這個行為 (Iffaedb/192682388)。
  • 已將目錄導覽示範新增至目錄應用程式 (I04960)。
  • 已將徽章示範應用程式新增至目錄應用程式 (If285d)。

1.0 版本

1.0.5 版本

2021 年 11 月 3 日

發布 androidx.compose.material:material-*:1.0.51.0.5 版本包含以下修訂項目。

修正錯誤

  • 已修正追蹤 derivedStateOf 例項時的當機問題 (aosp/1792247)。

1.0.4 版本

2021 年 10 月 13 日

發布了 androidx.compose.material:material-*:1.0.41.0.4 版本包含以下修訂項目。

依附元件更新

  • 已更新為依附 Kotlin 1.5.31

1.0.3 版本

2021 年 9 月 29 日

發布了 androidx.compose.material:material-*:1.0.31.0.3 版本包含以下修訂項目。

依附元件更新

  • 已更新為依附 Kotlin 1.5.30

1.0.2 版本

2021 年 9 月 1 日

發布了 androidx.compose.material:material-*:1.0.21.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.11.0.1 版本包含以下修訂項目。

依附元件更新

  • 已更新為依附 Kotlin 1.5.21

1.0.0 版本

2021 年 7 月 28 日

發布了 androidx.compose.material:material-*:1.0.01.0.0 版本包含以下修訂項目。

1.0.0 的主要功能

這是 Compose 發行的第一個穩定版本。如需詳細資訊,請參閱官方的 Compose Release 網誌

已知問題

  • 如果使用的是 Android Studio Bumblebee Canary 4 或 AGP 7.1.0-alpha04/7.1.0-alpha05,則可能會遇到下列當機情形:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    如需修正這個問題,請暫時將 build.gradle 檔案中的 minSdkVersion 提高到 24 以上。我們將在 Android Studio Bumblebee 和 AGP 7.1 的下一個版本中修正這個問題。(b/194289155)

1.0.0-rc02 版本

2021 年 7 月 14 日

發布了 androidx.compose.material:material-*:1.0.0-rc021.0.0-rc02 版本包含以下修訂項目。

修正錯誤

  • 對話方塊現在會遵循平台大小行為。將 usePlatformDefaultWidth 設為 false,即可覆寫這個行為 (Iffaedb/192682388)。

1.0.0-rc01 版本

2021 年 7 月 1 日

發布了 androidx.compose.material:material-*:1.0.0-rc011.0.0-rc01 版本包含以下修訂項目。

API 變更

  • 已新增 BadgeBox 元件。如需相關資訊,請參閱說明文件與範例 (I5e284)。
  • useDefaultMaxWidth 中的 PopupProperties 已重新命名為 usePlatformDefaultWidth (I05710)。
  • 對話方塊現在可使用整個螢幕寬度 (I83929b/190810877)。
  • 已新增實驗性範圍滑桿實作 (I2f4b3)。

修正錯誤

  • 為了與質感設計規格保持一致,當標籤做為預留位置使用時,具有無效輸入內容的 OutlinedTextField 不再使用錯誤的標籤顏色。如果在文字欄位中沒有任何輸入文字,且未處於焦點,則後者為 True。隨著這項變更,TextFieldColors.labelColor() 函式中的 error:Boolean 參數意義也有所變更:現在即使輸入內容無效,只要標籤設為預留位置,系統就會傳回 false (I45f78)。

1.0.0-beta09 版本

2021 年 6 月 16 日

發布 androidx.compose.material:material-*:1.0.0-beta091.0.0-beta09 版本包含以下修訂項目。

API 變更

  • 在 OutlinesTextField 中新增 Shape 參數,可自訂框線的形狀 (I8f39eb/181322957)
  • TextOverflow 已變更為內嵌類別 (I433af)

修正錯誤

  • BottomDrawer、BackdropScaffold 和 ModalBottomSheetLayout 中的 Scrim 將消失,然後傳遞 Color.Unspecified (I2d899b/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>HSP 之中的一或多個字元,用於指出這個方法應標記為「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 設定檔。當該應用程式安裝在裝置上時,ART 便可以利用這個設定檔預先編譯特定應用程式子集,以提高應用程式效能,特別是首次執行的效能。請注意,這項設定完全不影響可進行偵錯的應用程式。

1.0.0-beta08 版本

2021 年 6 月 2 日

發布 androidx.compose.material:material-*:1.0.0-beta081.0.0-beta08 版本包含以下修訂項目。

新功能

行為中斷 API 變更

  • BEHAVIOUR-BREAKING:Card 現在會使用點擊次數,讓透過 Card(Modifier.clickable) 新增的點擊次數免人工管理。請使用可接受 onClick 的新實驗性 Card 超載 (Ia8744b/183775620)。
    • 已新增可處理點擊次數和其他可點選功能的 Card 超載:指示、interactionSource、已啟用/已停用。原先無法搭配 Modifier.clickable 使用一般無法點選的 Card,因為在這類情況下,Card 不會裁剪到漣漪效果指示。
  • BEHAVIOUR-BREAKING:Surface 現在會使用點擊次數,讓透過 Surface(Modifier.clickable) 新增的點擊次數免人工管理。請使用可接受 onClick 的新實驗性 Surface 超載 (I73e6cb/183775620)。
    • 已新增可處理點擊次數和其他可點選功能的新 Surface 超載:指示、interactionSource、已啟用/已停用。原先無法搭配 Modifier.clickable 使用一般無法點選的 Surface,因為在這類情況下,Surface 不會裁剪到漣漪效果指示。

API 變更

  • FabPosition 已從 enum 轉換為內嵌類別,以支援日後的擴充 (I030fb)。
  • 將列舉用例重構為內嵌類別,以避免完整的 when 陳述式在新增列舉值後出現問題 (I2b5eb)。
  • 新增可點擊/可切換項目的輕觸逾時設定,以免在捲動/拖曳時呈現漣漪效果 (Ia2704b/168524931)。
  • ContentDescription 和 Text 語意屬性不再只是單一的值,而是清單。如此即可直接合併,無需串連。同時也提供更優質的測試 API,以便善用這些異動 (Ica6bfb/184825850)。
  • 已將 Modifier.focusModifier() 淘汰,改為 Modifier.focusTarget() (I6c860)。
  • FocusState 列舉已改為 FocusState 介面 (Iccc1ab/187055290)。
  • 檢視畫面支援的漣漪效果實作相當穩定,因此現已移除 LocalRippleNativeRendering (I7fab3b/188569367)。

修正錯誤

  • 已變更 Modifier.onGloballyPositioned(),系統會回報此修飾詞在修飾詞鏈結中的座標,而非套用所有修飾詞後的版面配置座標。也就是說,修飾詞的排序現在會影響系統回報的座標 (Ieb67db/177926591)。
  • 已新增現有撰寫內容目錄的 README (If9191)。

1.0.0-beta07 版本

2021 年 5 月 18 日

發布 androidx.compose.material:material-*:1.0.0-beta071.0.0-beta07 版本包含以下修訂項目。

API 變更

  • 您不再需要使用 Navigation Compose 中的擴充功能方法支援路徑 (I22bebb/172823546)。

1.0.0-beta06 版本

2021 年 5 月 5 日

發布 androidx.compose.material:material-*:1.0.0-beta061.0.0-beta06 版本包含以下修訂項目。

API 變更

  • 漣漪效果已遷移至 Android 裝置內部以使用 RippleDrawable。也就是說,RenderThread 會產生漣漪效果動畫,因此即使 UI 執行緒處於載入狀態 (例如切換不同畫面時),也能流暢地播放動畫。這不會變更漣漪效果的 API 介面,但可能會因為這項變更而導致行為發生變化。為協助進行遷移,已新增 LocalRippleNativeRendering 為這個 CompositionLocal 提供 false 值,以便切換回先前的 CompositionLocalProvider 內部漣漪效果實作。這個 API 為暫時提供且日後將會移除,因此如果因為遇到問題而導致您要使用這個 API,請回報錯誤 (I902f8b/168777351b/183019123)。
  • 新增 CollectionInfo Accessibility API 和 CollectionItemInfo Accessibility API,以便為無障礙服務標記集合及其項目 (Id54efb/180479017)
  • 新增 Accessibility API (error),以便標示含有無效輸入內容的節點 (I12997b/180584804b/182142737)

修正錯誤

  • 從 https://github.com/google/accompanist/pull/365 更新 Compose Material 目錄插邊實作 (I25dc3)。
  • 含有權重 (fill = false) 的 Row 和 Column 子項,不再能讓父項填滿主軸的完整可用空間 (Ied94db/186012444b/184355105)。

1.0.0-beta05 版本

2021 年 4 月 21 日

發布 androidx.compose.material:material-*:1.0.0-beta051.0.0-beta05 版本包含以下修訂項目。

修正錯誤

  • 將元件圖塊圖片、主題挑選器以及更具體的選單網址加入現有的 Compose Material 目錄 (I9b58e)。

1.0.0-beta04 版本

2021 年 4 月 7 日

發布 androidx.compose.material:material-*:1.0.0-beta041.0.0-beta04 版本包含以下修訂項目。

API 變更

  • API 變更:DrawerState 狀態不再擴充至實驗性 SwipeableState。
    • API 變更:BottomDrawerState 現已標示為實驗功能,以與 Experimental BottomDrawer 元件相符 (I81114b/181656094)。
  • SoftwareKeyboardController 中的 hideSoftwareKeyboardshowSoftwareKeyboard 分別重新命名為 hide()show()
    • 為 LocalSoftwareKeyboardController 提供完整的 CompositionLocal 介面,以便設定該物件 (在測試中特別實用) (I579a6)
  • 新增了 LiveRegion 無障礙服務 API。如果節點標示為即時區域,無障礙服務會自動通知使用者相關變更 (Idcf6fb/172590946)

修正錯誤

  • 將 Compose Material 目錄新增至現有模組。目前缺少:元件圖塊圖片、主題挑選器 (將在後續更改中新增) (Ie7a94)。

1.0.0-beta03 版本

2021 年 3 月 24 日

發布 androidx.compose.material:material-*:1.0.0-beta031.0.0-beta03 版本包含以下修訂項目。

API 變更

  • 淘汰 DefaultMonotonicFrameClock。呼叫無 MonotonicFrameClockwithFrameNanosRecomposer.runRecomposeAndApplyChanges 現在會擲回 IllegalStateException (I4eb0d)。
  • 新增 API LeadingIconTab,可支援在分頁中顯示圖示和內嵌文字 (I23267)。

外部貢獻

  • [By Jossi Wolf] BottomDrawer 現在會納入導覽匣插槽的內容。如果上層沒有高度限制,BottomDrawer 不會擲回 IllegalStateException。如果底部導覽匣小於其父項的 50%,則會開啟為展開狀態。已更新 BottomDrawerStateModalBottomSheetLayoutState 周邊的文件。如果處於開啟或展開狀態,則 BottomDrawerState#isOpen 會傳回 True。(I87241)

1.0.0-beta02 版本

2021 年 3 月 10 日

發布 androidx.compose.material:material-*:1.0.0-beta021.0.0-beta02 版本包含以下修訂項目。

API 變更

  • 新增新的 LocalSoftwareKeyboardController 組合本機 API 以取代 TextField 中的舊版 SoftwareKeyboardController 介面 (I5951eb/168778053)。

修正錯誤

  • 強制限制實驗性 API 的公開使用行為 (I6aa29b/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 必備的生命週期和已儲存狀態擁有者 (I1d6fab/161814404)。

1.0.0-beta01 版本

2021 年 2 月 24 日

發布 androidx.compose.material:material-*:1.0.0-beta011.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 取代 (Iae869b/168778053)。
  • Switch、Checkbox 和 RadioButton 動作 lambda 現已失效。系統已更 Checkbox-in-clickable-row 範例以使用此功能 (If601bb/171819073)。
  • InteractionState 已替換為 [Mutable]InteractionSource
    • 介面負責傳送/收集「互動」(Interaction) 事件。
    • 使用 interactionSource = remember { MutableInteractionSource() },而不是將 interactionState = remember { InteractionState() } 傳遞給 ButtonModifier.clickable() 等元件。
    • 應改用 InteractionSource 中的擴充功能函式,例如 InteractionSource.collectIs PressedAsState(),而不是:Interaction.Pressed in interactionState
    • 如果用途複雜,可以使用 InteractSource.interactions 來觀察互動的串流。如需詳細資訊,請參閱 InteractSource 的說明文件和範例
    • (I85965b/152525426b/171913923b/171710801b/174852378)。
  • 新增 AccessibilityMananger 介面和 CompositionLocals 的 LocalAccessibilityMananger (I53520)。
  • 移除了已淘汰的 LayoutCoordinate 方法;針對 positionInParent 和 boundsInParent,請使用函式取代屬性 (I580edb/169874631b/175142755)
  • 滑桿現已支援啟用/停用狀態 (I6d56bb/179793072)。
  • 為 CoreTextField 等低階文字元件的輸入工作階段建立新的 TextInputSession (I8817fb/177662148)。
  • 移除了 AnimationEndReason.Interrupted。如果動畫中斷,系統將擲回 CancelException (I2cbbcb/179695417)。
  • 已移除 @ExperimentalRippleApi,並將 RippleAlpha 變更為具備屬性的類別,而非介面 (I6df7c)。
  • 已新增 TextFieldColors 介面,代表不同狀態的 TextField 和 OutlinedTextField 中所使用的不同顏色。對於預設的實作,請參閱 TextFieldDefaults.textFieldColors 和 TextFieldDefaults.outlinedTextFieldColors。
  • 新增 selectionGroup 修飾符,允許標記 Tab 或 RadioButton 的集合,以提供無障礙功能 (Ie5c29)
  • 新增 LazyListState.animateScrollToItem

    這個方法會快速捲動至清單中的特定項目 (I4bfd7)

  • ScrollableState.smoothScrollBy() 已重新命名為 animateScrollBy()LazyListState.snapToItemIndex() 已重新命名為 scrollToItem()ScrollState.smoothScrollTo() 已重新命名為 animateScrollTo() (I35ded)。

  • 任何標有 @ReadOnlyComposable 的合成元素現已經過編譯時間驗證,以確保這些呼叫只會呼叫其他 @ReadOnlyComposables (I58961)。

  • 移除了 TargetAnimation API (If47d1b/177457083)。

  • Modifier.verticalScroll()/horizontalScroll() 的捲動位置現在起以 Ints 表示 (I81298)。

  • smoothScrollBy 和 ScrollBy 方法的套件已變更為 androidx.compose.foundation.gestures.* (I3f7c1b/175294473)。

  • FlingConfig 已重新命名為 FlingBehavior,現在起可自訂懸浮動畫,而非預先定義的 Decay (I02b86b/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 (Iff4a8b/175294473)。

  • drawerState.open() 和 drawerState.close() 現已為暫停函式。可使用 rememberCoroutineScope() 取得撰寫的範圍以便呼叫 (I16f60b/175294473)。

  • Provider 已重新命名為 CompositionLocalProvider

    • Composition 建構函式不再接受索引鍵參數,且已淘汰。
    • currentCompositeKeyHash 已變成可組合的頂層屬性,而非可組合的頂層函式。
    • CompositionData 和 CompositionGroup 已移至 androidx.compose.runtime.tooling 命名空間
    • ComposableLambda 已成為介面而非具體類別,並且不再有類型參數。
    • ComposableLambdaN 已成為介面而非具體類別,並且不再有類型參數。
    • snapshotFlow 函式已移至 androidx.compose.runtime 命名空間。
    • SnapshotMutationPolicy 的合併方法不再為實驗性。
    • 已移除 @TestOnly 頂層 clearRoot 函式,因為不再需要使用。
    • 已移除 keySourceInfoOf 和 resetSourceInfo 函式,因為不再需要使用。
    • 已移除 Composer.collectKeySourceInformation。已不需使用。
    • 已移除 isJoinedKey、joinedKeyLeft 和 joinedKeyRight 方法,因為不再需要使用。
    • 已將各種頂層 API 移動,重整至各個檔案。由於 Kotlin 的檔案類別語意的關係,此舉會破壞二進位檔案相容性,但不影響原始碼相容性,因此對大多數使用者而言應不成問題。
    • (I99b7db/177245490)。
  • Modifier.scrollable 經過重新設計。今後其使用 Scrollable 介面,而非 ScrollableController 類別 (I4f5a5b/174485541b/175294473)。

  • Modifier.draggable 現在接受 DraggableState,而非簡單的 lambda。您可以透過 rememberDraggableState { delta -> } 建立狀態,藉此取得與之前相同的行為 (Ica70fb/175294473)。

  • ZoomableController.smoothScaleBy 和 ZoomableController.stop Animation 現已暫停函式 (I7f970b/177457083)。

  • 已刪除一些先前淘汰的 API (Ice5dab/178633932)

  • 已進行下列 Material API 變更:

    • 已將 contentPAdding 參數新增至 Top/BottomAppBar,以自訂預設邊框間距。
    • 已依據 API 指南重新調整 BackdropScaffold 中的參數順序,將必要參數置於選用參數之前。
    • 已將 BottomNavigationItem 中的 icon 參數移至 selectedonClick 之後。
    • 已將 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 參數變更為必要參數 (Ic1764b/152525426)。

修正錯誤

  • 已新增 LocalSoftwareKeyboardController 組合的本機 API,取代之前在 TextField 上的 SoftwareKeyboardController 介面 (I658b6b/168778053)。

1.0.0-alpha12 版本

2021 年 2 月 10 日

發布 androidx.compose.material:material-*:1.0.0-alpha121.0.0-alpha12 版本包含以下修訂項目。

API 變更

  • Modifier.pointerInput 目前規定 remember 鍵必須指出指標輸入偵測處理常式何時該重新啟動,以設定新的依附元件 (I849cd)。
  • BottomDrawerLayout 和 ListItem 已標示為 @experimentMaterialApi (Id766e)
  • 已新增 PaddingValues.Absolute 且可於接受 PaddingValue 的 API 中使用。(Ia5f30)
  • onImeActionPerformed 已淘汰,請改用 KeyboardAction (If0bbdb/179071523)。
  • 為更符合 ImageBitmap 和 ImageVector 的命名慣例,ImagePainter 已重新命名為與 VectorPainter 並行的 BitmapPainter (Iba381b/174565889)。
  • Animatable.snapTo 和 Animatable.stop 現在為暫停函式 (If4288)。
  • ComponentActivity.setContent 已移至 androidx.activity:activity-compose 模組中的 androidx.activity.compose.setContent (Icf416)。
  • Destructuring 和 copy() 方法在幾個類別中極少使用,現已將其從中移除 (I26702b/178659281)。
  • 在 ModalBottomSheetState 內部製作 halfExpand() 和 expand()(Ic914e)
  • 已將 Indication#createInstance 變更為 @Composable,並將 LocalIndication 更改為含有 Indication,而非 () -> Indication (I5eeeab/157150564)。
  • 暫時將 AlertDialog 和 DropdownMenu 移至 Android。已將 PopupProperties 參數新增至 DropdownMenu,以進一步設定基礎 Popup (I9c443)。
  • 已淘汰 loadFontResource。請改用 fontResource。我們已淘汰 imageResource、loadImageResource、vectorResource 和 loadVectorResource。請改用 painterResource (I6b809)
  • 已從 DropdownMenu 中移除 toggletoggleModifier 參數,並將 dropdownModifierdropdownOffsetdropdownContent 重新命名為 modifieroffsetcontent。現在 DropdownMenu 的行為會與 Popup 一致,其中的上層布局可用於設定選單位置。在大多數情況下,您可以將 toggle 移至 DropdownMenu 的同層,並將兩者包裝在 Box 中。如要進一步瞭解這個 API 的用途,請在說明文件中參閱更新後的範例 (I884fb)。
  • toIntPx() 已重新命名為 roundToPx() (I9b7e4b/173502290)。
  • IntBounds 已重新命名為 IntRect,且該 API 已改善 (I1f6ff)。
  • 新增展開及收合語意動作。在 ModalBottomSheetState 中新增了 expand 和 halfExpand (Ib5064)。
  • Modifier.dragGestureFilter 已淘汰,請改用 Modifier.pointerInput { detectDragGestures (...)}。或者,也可使用 Modifier.draggable 進行單一軸線拖曳 (I0ba93b/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)) } (Ib4c26b/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 套件 (I1366eb/177338004)。

  • Saver、listSaver()、mapSaver()、autoSaver 已從 androidx.compose.runtime.savedinstancestate 移至 androidx.compose.runtime.saveable (I77fe6)

  • 為了支援 rtl 方向的形狀自動鏡像,已將 RounderCornerShape、CutCornerShape 和 CornerBasedShape 上的參數從 left/right 重新命名為 start/end。加入 AbsoluteRounderCornerShape 和 AbsoluteCutCornerShape,以便處理不需要自動鏡像的情況 (I61040b/152756983)。

  • 已將 Tab 的 texticon 參數以及 BottomNavigationItem 的 label 參數變更為可為空值,這樣一來,無論是否提供這些參數,都能順利傳達元件的行為,因為這會影響元件的大小和版面配置。如果您目前是透過傳送 emptyContent() 代表沒有文字/圖示/標籤,請改用 null (I57ed4)。

  • 已將 contentColorFor color 參數重新命名為 backgroundColor (I5bb67)。

  • 已淘汰 TabDefault,並換成 TabRowDefaults (I0f189)。

  • 推出了 ColorMatrix API,可用於修改來源內容的 RGB 值,也推出了 Refactored ColorFilter API,可做為介面並用於比對 PathEffect 的實作 (Ica1e8)

  • AnimatedValue/Float 現已淘汰,請改用 Animatable (I71345b/177457083)。

  • 新增 SemanticsProperties.PaneTitle API (I20d5a)。

  • 在 Tab 和 BottomNavigationItem 上新增了已啟用的參數,避免這些參數可供點按。將 BottomNavigationItem 變更為 RowScope.BottomNavigationItem 以在其 API 中更有效地表達版面配置需求 (Id683d)。

  • 淘汰了 tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 及 pressIndicaitonGestureFilter。請改用 Modifier.clickable 或 Modifier.pointerInput 搭配 DetectionTapTouchs 函式 (I6baf9b/175294473)。

  • 已將 layoutDirection 參數新增到 Shape 的 createOutline 中。允許建立版面配置方向感知形狀 (I57c20b/152756983)。

  • 已移除 Recomposer.current()。[Abstract]ComposeView 現已預設為延遲建立、以視窗為範圍的 Recomposers,並由視窗的 ViewTreeLifecycleOwner 所驅動。主機的生命週期停止時,Recomposition 和以withFrameNanos 為基礎的動畫滴答會暫停。(I38e11)

修正錯誤

  • 圖示現在會隨著大小調整而擴大,並取決於套用的大小。舉例來說,Icon(.., modifier = Modifier.size(50.dp) 將以 50x50dp 的空間繪製圖片 (Ib2ba9b/178796190)。

1.0.0-alpha11 版本

2021 年 1 月 28 日

發布 androidx.compose.material:material-*:1.0.0-alpha111.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 (I9420bb/173387208)。
  • 淘汰非暫停 scrollBy、移除非暫停 scrollTo

    我們建議使用暫停函式來控制捲動,並等待捲動完成。在此轉換過程中,我們正在淘汰和/或移除這些函式的非暫停版 (Ie9ced)。

  • 淘汰非暫停的 smoothScrollBy 我們現在建議使用暫停函式來控制捲動,並等待捲動完成。在此轉換過程中,我們正在淘汰這些函式的非暫停版 (I12880)

  • 推出了 ComposeContentTestRule,可用於擴充 ComposeTestRule 及定義 setContent,後者已從 ComposeTestRule 中移除。新增可傳回 ComposeTestRule 的工廠方法 createEmptyComposeRule(),且不會代為啟動活動。如要在測試期間啟動活動,請使用此方法,例如使用 ActivityScenario.launch (I9d782b/174472899)。

  • 無法再以透過 AmbientIndication 提供新 Indication 的方式來自訂 Button 和 FloatingActionButton 所用的漣漪效果;也就是說,這本來就不是自訂這些元件的方式,但這項變更使得這些元件與其他 Material 元件保持一致。要自定義跨應用程式的漣漪效果,請參閱 RippleTheme (I546c5)。

  • animateAsState 現已改為 animateFooAsState,其中 Foo 是增加動畫效果的變數類型。例如 Float、Dp、Offset 等 (Ie7e25)。

  • BasicTextField 收到名為 decorationBox 的新參數。可以在文字欄位中新增圖示、預留位置、標籤等裝飾,也可以增加命中目標區域 (I16996)。

  • 修正導致素材文字欄位無法小於 280.dp (I78373) 的錯誤

  • canDrag 參數已從 Modifier.draggable 移除 (Ic4becb/175294473)

  • 請移除不需要的 displaySize 值。通常使用 onRoot() 的尺寸較佳,或者至少應使用視窗尺寸 (I62db4)。

  • 介面現在可包含多個版面配置的子項 (I66a92b/144488459)。

  • 現已淘汰 invalidate 和 ContentReference(),並改用 CurrentRecomposeScope 和 RememberCompositionReference (I583a8)。

  • 將 PopupPositionProvider 變更為使用視窗相關座標,而非全域座標。將父項 GlobalBounds 重新命名為 anchorBounds,並將 windowGlobalBounds 變更為 windowSize: IntSize (I2994a)。

  • Long 毫秒會取代 Duration 和 Uptime,同時此步驟也能移除這些類別上指標輸入的依附元件 (Ia33b2b/175142755b/177420019)。

  • 接受 FlingConfig 的 AnimatedFloat.fling 已經移除。請改用暫停 Animatable.animateDecay (I4659bb/177457083)。

  • 您現在可以在組合項外建立可點選、可切換和可選取的項目 (I0a130b/172938345b/175294473)

  • 加/減速已變更為功能介面 (Ib14e5)

  • 淘汰了 ScrollableColumn/Row。處理大型捲動內容時,使用 ScrollableColumn 的效率會比使用 LazyColumn 來得低,那是因為使用 LazyColumn 只能組合/測量/繪製可見元素。為避免使用者選擇效率不彰的做法,我們決定淘汰 ScrollableColumn 和 ScrollableRow,鼓勵改為使用 LazyColumn 和 LazyRow。使用者仍可決定不需使用延遲行為,直接使用類似下例的修飾符:Column(Modifier.verticalScroll(rememberScrollState())) (Ib976bb/170468083)。

  • 已為LazyColumn/LazyRow/LazyVerticalGrid 的範圍新增 items(count: Int) 工廠方法。items(items: List)itemsIndexed(items: List) 現已成為擴充功能函式,因此在使用時必須手動匯入。陣列的新擴充功能超載:items(items: Array)itemsIndexed(Array) (I803fcb/175562574)

  • 已移除實驗性的 monotonicFrameAnimationClockOf 方法 (Ib753fb/170708374)

  • 淘汰全域座標方法,並建構新的視窗式座標方法 (Iee284)

  • 新增了 Modifier.toolingGraphicsLayer,這會在檢查功能開啟時加入圖形圖層修飾詞 (I315df)。

  • FocusRequester.createRefs 可能會有變動,因此目前標示為實驗性質 (I2d898b/177000821)。

  • SemanticsPropertyReceiver.hidden 已重新命名為 invisibleToUser 並標示為 @ExperimentalComposeUiApi。AccessibilityRangeInfo 已重新命名為 ProgressBarRangeInfo。stateDescriptionRange 已重新命名為 progressBarRangeInfo。AccessibilityScrollState 已重新命名為 ScrollAxisRange。horizontalAccessibilityScrollState 已重新命名為 horizontalScrollAxisRange。verticalAccessibilityScrollState 已重新命名為 verticalScrollAxisRange。(Id3148)

  • 運用 TestCoroutineDispatcher 進行測試 (I532b6)

  • 更新向量圖形 API,以符合對向量圖形根套用的色彩剖析。(Id9d53b/177210509)

1.0.0-alpha10 版本

2021 年 1 月 13 日

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

API 變更

  • 已將 Velocity 修改成為具有元件部分和數學運算。(Ib0447)
  • @ExperimentalTesting 重新命名為 @ExperimentalTestApi,以便與類似的實驗 API 註解保持一致 (Ia4502b/171464963)
  • 已將 Position 重新命名為 DpOffset,並移除了 getDistance() (Ib2dfd)
  • 已將 Color.useOrElse() 重新命名為 Color.takeOrElse() (Ifdcf5)
  • 為基礎 Strings.kt 新增 Toggle (I4a5b7b/172366489)
  • FlowRow 和 FlowColumn 已淘汰,請改用自訂版面配置。(I09027)
  • Modifier.focus() 和 Modifier.focusRequester() 現已淘汰。請改用 Modifier.focusModifier() 和 Modifier.focusReference()。(I75a48b/175160751b/175160532b/175077829)
  • 將 nativeClass 移至 UI 模組並設為內部專用。已在同等的實作中更新 nativeClass 的使用情形,改為使用「is MyClass」。(I4f734)

修正錯誤

  • 已新增對停用和唯讀文字欄位的支援 (I35279b/171040474b/166478534)
  • animate() 現已替換為 animateAsState(),後者會傳回 State<T> 而非 T。這樣可以改善效能,因為系統會將無效範圍縮小到讀取「狀態」值的位置。(Ib179e)
  • 新增 Semantics 角色 API,並將 Role 新增為可點選、選取和切換的 SemanticsModifier 參數。已將 Modifier.progressSemantics 變更成為 Slider 也能夠使用。(I216cd)

1.0.0-alpha09 版本

2020 年 12 月 16 日

發布 androidx.compose.material:material-*:1.0.0-alpha091.0.0-alpha09 版本包含以下修訂項目。

API 變更

  • 新增 API,可手動觸發定量動畫,並拖曳至 Modifier.sWipeable (Iaa17ab/162408885)
  • 已重新命名 *Constants 物件 (例如 ButtonConstants),並以「Defaults」取代結尾,例如 ButtonDefaults。同時移除這些新物件屬性中非必要的 default 前置字元 (Ibb915b/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。(Ic9ee5b/174137212b/174146755)
  • 提供繪圖環境大小資訊時,重構 ShaderBrush 以延遲建立著色器執行個體。這適合用於定義在組合時構成組合完整繪圖邊界的漸層,而不必實作自訂的 DrawModifier 實作。

    已淘汰梯度函式建構函式 API,並採用梯度物件的工廠方法 (I511fcb/173066799)。

  • 已淘汰 Modifier.focusObserver。請改用 Modifier.onFocusChanged 或 Modifier.onFocusEvent (I30f17b/168511863b/168511484)

  • 淘汰了 LazyColumnFor、LazyRowFor、LazyColumnForIndexed 和 LazyRowForIndexed。請改用 LazyColumn 和 LazyRow (I5b48c)

  • 將 Dp.VectorConverter、Position.VectorConverter 等移到了 animation-core,並淘汰了舊的 VectorConveters (If0c4b)

  • AutoFill API 現為實驗性 API,必須啟用 (I0a1ec)

  • 新增刪除宣告,以便建立 FocusRequester 執行個體 (I35d84b/174817008)

  • 已分別將 accessibilityLabel 和 accessibilityValue 重新命名為 contentDescription 和 stateDescription (I250f2)

  • 用於創建 InfiniteRepeatableSpec 的新的infiniteRepeatable 函式 (I668e5)

  • DropdownMenus 的位置行為是根據 Material 規格而有些微差異。(I34c72b/168594123)

  • 已為 TextFields 新增 InteractionState 的支援。(I61d91)

  • 新增 Modifier.clearAndSetSemantics 以清除子系的語意,並設定新的語意。(I277ca)

  • 已將 ContentDrawScope 移至 ui-graphics 模組,以便與 DrawScope 搭配使用。(Iee043b/173832789)

1.0.0-alpha08 版本

2020 年 12 月 2 日

發布 androidx.compose.material:material:1.0.0-alpha08androidx.compose.material:material-icons-core:1.0.0-alpha08androidx.compose.material:material-icons-extended:1.0.0-alpha081.0.0-alpha08 版本包含以下修訂項目。

API 變更

  • MaterialTheme 現可為選取控點及選取背景設定正確的顏色。非 Material 應用程式可以手動使用 AmbientTextSelectionColors 自訂所選顏色。(I1e6f4b/139320372b/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 (I57004b/168187755)

修正錯誤

  • 新增語意動作 Dismiss (I2b706)
  • 已將 DrawModifier API 從 androidx.compose.ui 套件移至 androidx.compose.ui.draw 套件。建立 DrawModifierDeprecated.kt 檔案以加入 typealiases/helper 方法,協助從淘汰的 API 遷移到目前的 API。(Id6044b/173834241)
  • 已將 Modifier.drawLayer 重新命名為 Modifier.graphicsLayer,同時也根據 API 意見回饋,將相關類別更新為 GraphicsLayer。(I0bd29b/173834241)
  • 已從 SubcomposeLayout 宣告中移除 <T>,您現在可以在不指定類型的情況下使用該項目 (Ib60c8)
  • 新增了 Modifier.scale/rotate API,以便 DrawLayer 使用。
    • Modifier.drawOpacity 已重新命名為 Modifier.alpha
    • 已將 Modifier.drawShadow 重新命名為 Modifier.shadow (I264cab/173208140)
  • Box 的校正參數已重新命名為 contentAlignment。(I2c957)
  • shiftPx 修飾詞已重新命名為 offset。且現已改用 lambda 參數,而不是 State。(Ic3021b/173594846)
  • 推出 SweepGradientShader 和 SweepGradientBrush API。(Ia22c1)
  • 針對可組合函式中的 Modifier 參數,新增 Lint 檢查功能。這項檢查會查驗參數的命名、傳回類型、預設值和順序,確認是否符合 Compose 準則。(If493b)
  • 已更新 TextFieldValue API
    • 將 TextFieldValue 組合設為唯讀
    • 已移除因選取範圍無效而擲回的例外狀況 (I4a675b/172239032)
  • 已新增 Modifier.drawLayer() 超載。這會在新的 GraphicsLayerScope 使用一個 lambda 區塊,可讓您定義圖層參數,以便在狀態變更時略過重組和版面重新配置程序。DrawLayerModifier 現已處於內部準備狀態,可將其邏輯遷移至 LayoutModifier 的 placeable.placeWithLayer() 方法中 (I15e9fb/173030831)
  • 淘汰了在名稱後綴使用 Ambient 的 Ambient,並比照其他 Ambient 和 Compose API 指南規範,替換成在名稱前綴使用 Ambient 的新屬性。(I33440)
  • 已新增 lint 檢查功能,以檢查 Modifier 工廠是否在內部使用 androidx.compose.ui.composed {},而非標示為 @Composable。(I3c4bc)
  • Semantics 引數 MergeAllDescendants 已重新命名為 MergeDescendants。(Ib6250)
  • 測試中的時間控制項 (TestAnimationClock 及其運用) 現已處於實驗階段 (I6ef86b/171378521)
  • 移除舊的 ui-test 模組及其虛設常式 (I3a7cb)
  • TextUnit.Inherit 已重新命名為 TextUnit.Unspecified,以便與其他單位保持一致。(Ifce19)
  • 更新了 Alignment 介面,並使其可正常運作 (I46a07b/172311734)
  • 對於 LayoutIdParentData,id 已重命名為 layoutId。Measurable.id 已重命名為 Measurable.layoutId。(Iadbcbb/172449643)

1.0.0-alpha07 版本

2020 年 11 月 11 日

發布 androidx.compose.material:material:1.0.0-alpha07androidx.compose.material:material-icons-core:1.0.0-alpha07androidx.compose.material:material-icons-extended:1.0.0-alpha071.0.0-alpha07 版本包含以下修訂項目。

API 變更

  • 已淘汰 Emphasis,並替換為 AmbientContentAlpha。AmbientContentAlpha 是比較簡單的抽象層,代表階層中的首選內容 Alpha 值,類似於 AmbientContentColor 表示首選內容顏色的方式。根據預設,Text 和 Icon 現在會使用 AmbientContentAlpha 目前的值,且您可以手動執行 color.copy(alpha = AmbientContentAlpha.current),藉此在元件中取得相同效果。您可以直接透過 AmbientContentAlpha 提供一個值,並使用 ContentAlpha 中的新預設級別來取代舊的 EmphasisLevels,而不要使用 ProvideEmphasis。(Idf03eb/159017896)
  • 新增 androidx.compose.material.AmbientContentColor 以取代 androidx.compose.foundation.AmbientContentColor (I84f7bb/172067770)
  • 新增 androidx.compose.material.Text 以取代 androidx.compose.foundation.Text 做為可指定的高階文字元件。使用不屬於文字色彩 / 文字樣式的基本文字元件時,請使用 BasicText。(Ie6ae0)
  • 已將 maxLine 新增至 TextField (Ib2a5b)
  • 已更新 TextField 以接受 KeyboardOption (Ida7f3)
  • 現在在計算高度重疊時,Surface 會使用絕對 (總計) 高度,因此以巢狀結構內嵌於另一個 Surface 的 Surface 會使用合併後的高度繪製重疊。(I7bd2bb/171031040)

修正錯誤

  • captureToBitmap已移至 captureToImage(I86385)
  • 已淘汰基礎 AmbientTextStyle、ProvideTextStyle 和 AmbientContentColor,請改用 Material 程式庫中可提供的新版本。對於非 Material 應用程式,應改為建立您自己的設計系統,指定可以在自己的元件中使用的主題設定環境。(I74accb/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 的情況下繪製指定素材或 Painter。先前嘗試略過繪製含有 Color.Unspecified 的色調,導致系統使用透明色繪製色調,結果完全沒有顯示任何色彩。(I049e2b/171624632)
  • 將 PiPAddFrom 重新命名為 pacFrom。已新增 paddingFromBaseline 修飾符,方便您指定版面配置邊界到文字基準線的距離。(I0440a, b/170633813)
  • 將 LaunchedTask 重新命名為 LaunchedImpact,以便與 SideImpact 和 Disposableimpact API 保持一致。為鼓勵採用最佳做法,系統不允許使用不含主題參數的 LaunchedEffect。(Ifd3d4)
  • 已將 MeasureResult 從 MeasureScope 移出。(Ibf96db/171184002)
  • 將數個版面配置相關符號從 androidx.compose.ui 移至 androidx.compose.layout.ui。(I0fa98b/170475424)

1.0.0-alpha06 版本

2020 年 10 月 28 日

發布 androidx.compose.material:material:1.0.0-alpha06androidx.compose.material:material-icons-core:1.0.0-alpha06androidx.compose.material:material-icons-extended:1.0.0-alpha061.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() (I70417b/170623932)
  • 淘汰 VectorPainter 並改用 rememberVectorPainter,以更能指出可組合項 API 於內部利用「記憶」使得資料在撰寫之間持續存在。(Ifda43)
  • 在 ComposeTestRule 中啟用轉場功能,並從 ComposeTestRule 中移除啟用閃爍游標的選項 (If0de3)
  • 已對 CoreTextField 新增單行鍵盤選項 (I72e6d)
  • 已將 Radius API 重新命名為 CornerRadius,以便完善表達於 Compose 中的使用方式。已更新說明文件,指出負值的角半徑會箝制為零。(I130c7b/168762961)
  • 重構 DrawScope 和 ContentDrawScope 為介面,而不是抽象類別
    • 已建立 DrawScope 的 CanvasDrawScope 實作項目
    • 重構導入 DrawScope 以使用 CanvasScope
    • 建立 DrawContext 以納入 DrawScope 的依附元件
    • 已在 DrawScope (I56f5e) 中移除已淘汰的方法
  • Box 是內嵌函式。(Ibce0cb/155056091)

1.0.0-alpha05 版本

2020 年 10 月 14 日

發布 androidx.compose.material:material:1.0.0-alpha05androidx.compose.material:material-icons-core:1.0.0-alpha05androidx.compose.material:material-icons-extended:1.0.0-alpha051.0.0-alpha05 版本包含以下修訂項目。

API 變更

  • 彈出式視窗和對話方塊現在會沿用父項視窗的 FLAG_SECURE。 另外也新增了可明確設定這個標記的選項 (I64966b/143778148b/143778149)
  • Modifier.sWipeable 目前預設有 56.dp 的狀態閾值 (Iab825b/168610267)
  • 所有台架狀態標示為 @Stable。ScaffoldState 中的導覽匣 (已啟用) 已移至 Scaffold 本身。(I36645b/168297016)
  • 從 Scaffold lambda 參數移除可為空值類型,您可以使用 emptyContent() 表示特定參數沒有內容。(I2b318b/157633857b/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,以便與其他內嵌類別保持一致 (I97611b/169797763)
  • 加入 TextOverflow.None。溢位為 None 時 Text 不再處理溢位,而是向 LayoutNode 報告其實際尺寸。(I175c9b/158830170)
  • launchInComposition 已重新命名為 LaunchedTask,以符合 Compose API 準則 (I99a8e)
  • 將 OnPositionedModifier 重新命名為 OnGloballyPositionedModifier,並將 onPositioned() 重新命名為 onGloballyPositioned()。(I587e8b/169083903)

1.0.0-alpha04 版本

2020 年 10 月 1 日

發布 androidx.compose.material:material:1.0.0-alpha04androidx.compose.material:material-icons-core:1.0.0-alpha04androidx.compose.material:material-icons-extended:1.0.0-alpha041.0.0-alpha04 版本包含以下修訂項目。

API 變更

  • 於有狀態的 Material 元件中顯示 InteractionState 參數,以允許提升狀態及讀取/控制狀態。(Iaca5fb/168025711b/167164434)
  • 變更 RadioButton 和 TriStateCheckbox 的 *color 參數,以便完整自訂各狀態所用的顏色,並視需要變更切換狀態時的色彩動畫效果。詳情請參閱 CheckboxConstants 和 RadioButtonConstants 中的新 animateDefault* 色彩函式。(I1c532)
  • 已將 RememberBackdropState 重新命名為 RememberBackdropScaffoldState,並新增動畫時鐘的額外參數。已將 BackdropScaffold 參數的 BackbackScaffoldState 重新命名為 scaffoldState。已將 BackdropExceptions 重新命名為 BackdropScaffold 常數。(Ib644d)
  • 已新增實驗性 BottomSheetScaffold 元件。(Ie02f0b/148996320)
  • 已新增實驗性 ModalBottomSheetLayout 元件。(Ic209eb/148996320)。
  • 已將 ButtonCounts/FloatingActionButtonExceptions.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 擴充功能函式遷移為屬性
    • (I8f5c7b/168762961)
  • foundation.Box 已淘汰,請改用 foundation.layout.Box。(Ie5950b/167680279)
  • 將 Stack 重新命名為 Box。我們將淘汰原本已有的 Box,改用 compose.foundation.layout 中的新 Box。根據新 Box 的行為模式,當其擁有多個子項時,會將子項一個一個向上堆疊,這一點跟之前的 Box 不同,之前的行為較類似於 Column。(I94893b/167680279)
  • 淘汰了 Box 裝飾參數。如要為方框加上裝飾/邊框間距,請改用 Modifier (Modifier.background、Modifier.border、Modifier.padding) (Ibae92b/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 建立超載
    • (If086ab/167737376)
  • 我們已阻止靜態匯入版面配置範圍的內容 (例如 RowScope 中的 alignWithSiblings),請改用明確範圍替代項:with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }。(I216beb/166760797)

1.0.0-alpha03 版本

2020 年 9 月 16 日

發布 androidx.compose.material:material:1.0.0-alpha03androidx.compose.material:material-icons-core:1.0.0-alpha03androidx.compose.material:material-icons-extended:1.0.0-alpha031.0.0-alpha03 版本包含以下修訂項目。

API 變更

  • 已將 BottomNavigationItemonSelect 參數重新命名為 onClick (I91925b/161809324)
  • 將 InteractionState 參數新增至 BottomNavigationItem 和 Tab,以允許提升此狀態,並調整元件在不同狀態下的顯示方式。(Ia3e9eb/168025711)
  • 從按鈕中移除 disabledBackgroundColordisabledContentColor 參數。請改以 ButtonCounts 中使用新的預設色彩函式。如果您已明確設定 contentColor/backgroundColor,請改用這些預設函式,並自訂部分/所有參數,以避免覆寫啟用/停用狀態的顏色。(If9b52)
  • 文字欄位的背景顏色不再間接套用透明度 Alpha 版。而是直接套用在 backgroundColor 參數中提供的任何顏色。(Iecee9b/167951441)
  • InnerPadding 已重新命名為 PaddingValues。(I195f1b/167389171)
  • Modifier.swipeable 中的 resistanceFactorAtMinresistanceFactorAtMax 參數已替換為單一阻力參數。在 SwipeableConstants 中已新增 defaultResistanceConfig 方法。(I54238)
  • 針對 Button 和 FloatingActionButton,新增以動畫狀態顯示的高度支援。高度會以預設狀態和按下狀態之間進行動畫處理。如要自訂不同狀態的高度,請使用 ButtonConstants.defaultAnimatedElevation()FloatingActionButtonConstants.defaultAnimatedElevation(),而非在所有情況下設定一個固定 Dp 值。(I37925)
  • 標籤變成 TextField 和 OutlinesTextField 中的選用參數 (I267f6b/162234081)

修正錯誤

  • onNodewaitForIdle 等全域測試函式現已淘汰,請改用依據 ComposerTestRule 定義的新對應函式 (I7f45a)
  • 已淘汰 DpConstraints 和使用該項目的 API。(I90cdbb/167389835)
  • 已將 widthIn 的參數 minWidth 和 maxWidth 重新命名為 min 和 max。同樣地,preferredWidthIn、heightIn、preferredHeightIn 也採用了類似的重新命名。(I0e5e1b/167389544)
  • 移除向前/向後語意語意。已在 AccessibilityRangeInfo 中新增步驟。(Ia47b0)
  • 已將版面配置 API 中使用的 gravity 一致重新命名為 align 或 alignment。(I2421ab/164077038)
  • 已在 ComposeTestRule 中加入 onNode 和其他全域方法,因為目前的全域方法即將淘汰。(Ieae36)
  • 已將 createAndroidComposeRuleAndroidInputDispatcherandroidx.ui.test.android 移至 androidx.ui.test (Idef08b/164060572)

1.0.0-alpha02 版本

2020 年 9 月 2 日

發布 androidx.compose.material:material:1.0.0-alpha02androidx.compose.material:material-icons-core:1.0.0-alpha02androidx.compose.material:material-icons-extended:1.0.0-alpha021.0.0-alpha02 版本包含以下修訂項目。

API 變更

  • 已新增實驗性 BackdropScaffold 元件。(Iad908)

修正錯誤

  • Matrix4 已由 Matrix 取代。已移除 vectormath 套件的所有其他部分。(Ibd665b/160140398)。

1.0.0-alpha01 版本

2020 年 8 月 26 日

發布 androidx.compose.material:material:1.0.0-alpha01androidx.compose.material:material-icons-core:1.0.0-alpha01androidx.compose.material:material-icons-extended:1.0.0-alpha011.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-dev17androidx.compose.material:material-icons-core:0.1.0-dev17androidx.compose.material:material-icons-extended:0.1.0-dev170.1.0-dev17 版本包含以下修訂項目。

API 變更

  • 已移除先前淘汰的 RadioGroup 和 RadioGroupItems。請改用 Row 和 RadioBotton (I381b7b/163806637)
  • 已從 TextField 移除 onFocusChanged 回呼。請改用 Modifier.focusObserver。(I51089b/161297615)
  • 已淘汰 Modifier.drawBorder。請改用 Modifier.border。Border 資料類別已由 BorderStroke 取代 (I4257db/158160576)
  • 重新命名滑動狀態中的某些屬性:滑動目標 ->目標值、滑動進度 -> 進度、滑動方向 -> 方向。已新增 RememberSWipeableState 函式,用於建立滑動式狀態。(I2fc9cb/163129614b/163132293)。
  • 已新增可定位和適當的佇列的 Snackbar 支援功能。透過 SnackbarHostState.showSnackbar 暫停函式存取該函式。再者:
    • 已新增 SnackbarHost 元件。這些元件會根據狀態代管 Snackbar,並負責執行 Snackbar 之間的轉換。
    • 已新增 SnackbarHostState,以便控制 Snackbar、Snackbar 主機,以及將其與 ScaffoldState 分離。您也可以透過 scaffoldState.snackbarHostState 存取這個狀態。
    • 已新增 Snackbar 超載,以便支援 snackbarHostState 和 Snackbar 本身之間的一般介面。(I79aaa)
  • 將 enabled 參數新增至 IconButton,並重新排列 IconToggleButton 中的參數 (I0a941b/161809385b/161807956)
  • 已移除採用以字串為基礎的 API 的 ListItem 版本,請改用 Slot 版本。(Ib8f57b/161804681)。
  • 已移除淘汰的 FilledTextField 元件,請改用 TextField,以便透過質感設計的方式來實作 Filled 文字欄位。(I5e889)
  • AlertDialog 現可使用按鈕的流程列 (I00ec1b/161809319b/143682374)
  • 已在 Modifier.swipeable 中新增參數,用來變更滑出邊界時的阻力程度。已移除 [最小/最大]值參數。(I93d98)
  • 已將 backgroundColor 參數新增至 LinearProgressIndicator,並從 CircularProgressIndicator 移除內部邊框間距。已新增 ProgressIndicatorConstants.DefaultProgressAnimationSpec,可在各值之間以動畫表示進度時,當做預設的 AnimationSpec 使用 (If38b5b/161809914b/161804677)
  • 將選用的參數 velocityThreshold 新增至 Modifier.sWipeable。(I698ba)
  • UnderBarSize、fabSize 和其他項目,ScaffoldState 已不再提供。在您想得知其大小的元件上改用 Modifier.onPosition。contentColor 和 Modifier 參數已新增至 Scaffold (Ic6f7bb/161811485b/157174382)
  • 重新命名並重新排序 Tab 中的某些參數,以與其他 API 保持一致 (Ia2d12b/161807532)
  • 將 TabRow 分割為 TabRow 和捲動式 TabRow,從 TabRow 移除 isScrollable。此外,在 ScrollableTabRow 中可以看到 edgePadding,藉此控制分頁前後的空格。(I583e8b/161809544)
  • 系統已移除 TabRow 物件,並替換成 Tab 常數。TabRow.TabPosition 已移至頂層 (TabPosition),而 indicatorContainer 已重新命名為 indicator。請參閱範例和說明文件,進一步瞭解如何使用更新版 API 和預設值。(I54d45, b/161809544)
  • 已修改 Modifier.swipeable 的 thresholds 參數;應用程式現在會採用 T 類型的一對狀態,並以 ThresholdConfig 的格式傳回這對狀態之間的閾值。參數 dismissThresholds 已新增至 SWipeToClose,也就是 lambda (dismissDirection) -> ThresholdConfig。(Ie1080)
  • 滑桿提供更多顏色來自訂細節 (I73e64b/161810475)
  • Card 的顏色參數已重新命名為 backgroundColor (I01fc1b/161809546)
  • Snackbar 現在可自訂背景和內容顏色 (I238f2b/161804381)
  • 已在 Drawer 中新增 modifier、backgroundColor、contentColor 和 scrimColor 自訂參數 (I23655b/161804378)
  • 現已淘汰 state { ... } 可組合項,改為明確呼叫 remember { mutableStateOf(...) } 以求一目瞭然。這樣可以減少管理狀態所需的整體 API 介面和概念數量,且符合類別屬性委派作業的 by mutableStateOf() 模式。(Ia5727)
  • 按鈕的邊框間距名稱已重新命名為 contentPadd (Id252eb/161809394)
  • 新增實驗性材料元件 SwipeToDismi。(I129e5)

修正錯誤

  • 已移除 onChildPositionedOnChildPositionedModifier。開發人員應改為在子版面配置使用 onPositionedOnPositionedModifier。(I4522eb/162109766)
  • 已將 MergePolicy lambda 新增至 SemanticsPropertyKey。這可讓您定義 mergeAllDescendants 語意合併的自訂政策。預設政策為如果存在父項值則直接使用,否則則使用子項值 (Iaf6c4b/161979921)
  • IntSize 現已成為內嵌類別 (I2bf42)
  • PlacementScope.placeAbsolute() 重新命名為 PlacementScope.place(),而原先的 PlacementScope.place() 則重新命名為 PlacementScope.placeRelative()。因此,PlacementScope.place() 方法不再以由右至左的結構定義自動鏡射位置。如果需要這項功能,請改用 PlacementScope.placeRelative()。(I873acb/162916675)
  • 淘汰了 PxBounds,改用 Rect。更新 PxBounds 與 Rect 搭配使用的方式,並新增適當的淘汰/取代備註,以便協助完成遷移作業 (I37038b/162627058)
  • 將 RRect 重新命名為 RoundRect,以更符合 Compose 命名模式 建立了與 RRect 類似的函式建構函式,並淘汰了 RRect 函式建構函式 (I5d325)

0.1.0-dev16 版本

2020 年 8 月 5 日

發布 androidx.compose.material:material:0.1.0-dev16androidx.compose.material:material-icons-core:0.1.0-dev16androidx.compose.material:material-icons-extended:0.1.0-dev160.1.0-dev16 版本包含以下修訂項目。

API 變更

  • Colors 現在是最終類別,而不是介面。您應為自訂主題物件建立新的環境,並透過新環境使用元件來存取主題物件,類似於 MaterialTheme 的內部運作方式,而不是擴充及提供自訂實作。(Ibae84)
  • 將 ColorPalette 重新命名為 Colors,完美對應至質感設計色彩系統,並消除 ColorPalette 設為「一般性」主題設定物件,而非質感設計色彩系統具體實作的錯亂情形。此外,將 lightColorPalette 和 darkColorPalette 分別重新命名為 lightColor 和 darkColors。(I9e976b/161812111)
  • 分別將 BottomNavigationItem 的 text 參數重新命名為 labelonSelected 重新命名為 onSelectactiveColor 重新命名為 selectedContentColorinactiveColor 重新命名為 unselectedContentColor,並根據相關規範更新參數順序。(Icb605b/161809324)
  • Modifier.stateDraggable 已完全重新修復,並重新命名為 Modifier.sWipeable。導入了新的滑動式狀態類別,並重構 DrawerState 和 BottomDrawerState。[Modal/bottom]DrawerLayout 不再使用 onStateChange 參數。(I72332b/148023068)
  • foundation.shape.corner 套件已扁平化為 foundation.share (I46491b/161887429)
  • 已新增 experimentMaterialApi 註解。將 RippleTheme 標示為實驗功能 (Ic5fa0b/161784800)
  • Material FilledTextField 已重新命名為 TextField,且基礎 TextField 已重新命名為 BaseTextField,讓您可以輕鬆尋找並使用所需的最簡單 API (Ia6242b/155482676)

修正錯誤

  • 已淘汰 OnChildPositioned。請改用子項的 OnPosition。(I87f95b/162109766)
  • 解決廣泛的 API 問題 (I077bc)
    1. 移除未使用的 OffsetBase 介面
    2. 對齊 Offset 和 IntOffset 類別,以便採用一致的 API 介面
    3. 將 IntOffset.Origin 重新命名為 IntOffset.Zero,使其與 Offset API 一致
    4. 已將 nativeCanvas 方法從 Canvas 介面移出,以支援取用端建立自己的 Canvas 執行個體
    5. 建立 stub EmptyCanvas 類別,以便重構 DrawScope 做為非空值參數 (而不是 lateinit 參數),並確保欄位不會為空值
    6. 已將 ClipOp 列舉重新命名為 Pascal 案件
    7. 已將 FilterQuality 列舉重新命名為 Pascal 案件
    8. 已將 StrokeJOIN 列舉重新命名為 Pascal 案件
    9. 已將 PotMode 列舉重新命名為 Pascal 案件
    10. 已將 PaintingStyle 列舉重新命名為 Pascal 案件
    11. 已將 PathFillType 列舉重新命名為 Pascal 案件
    12. 已將 StrokeCap 列舉重新命名為 Pascal 案件
    13. 已更新 DrawCache 實作項目,不再使用 lateinit 參數
    14. 已更新 DrawScope,不再為可讓 fillPaint 和 strokePaint 內部參數使用延遲委派功能
    15. 已更新映像檔組合,除可避免使用 Box,還能降低負擔
    16. 已更新 Outline 類別,以便納入 @Immutable 註解
    17. 已更新 PathNode,為各個路徑指示提供 @Immutable 註解
    18. 由於撰寫作業已經完成,更新向量分子,移除等式的多餘性檢查
    19. 已淘汰矩形隨播廣告建構函式方法,改用函式建構函式
    20. 已使用 @Immutable 和 @Stable API 更新 Brush 類別和函式建構函式
    21. 已將 VertexMode 列舉更新為 PascalCase
    22. 已更新 DrawScope selectedPaint 方法,進而有條件地覆寫繪製上的筆劃參數 (如果這些項目變更的話)
    23. 更新大小以新增解構的 API,將 UnspecifiedSize 重新命名為 Unspecified 並移除未使用的方法
  • 將對話方塊移至使用者介面 (I47fa6)
  • 已移除 SemanticsNodeInteraction.performPartialGesture。請改用 SemanticsNodeInteraction.performGesture。(Id9b62)
  • 已將 SemanticsNodeInteraction.getBoundsInRoot() 重新命名為 SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdfb/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 (Iedd58b/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-dev15androidx.compose.material:material-icons-core:0.1.0-dev15androidx.compose.material:material-icons-extended:0.1.0-dev150.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 }
     )
    }
    

    (I409e8b/152050010b/146362815b/146342522b/143413369b/135715219b/143263925b/139653744 )

  • 文字欄位中 onFocusChange 回呼已重新命名為 onFocusChanged (Ida4a1)

  • 已在 statusDraggable 中新增門檻參數,以指定錨點之間的門檻。用於設定底部導覽匣的 56dp 門檻。此外,BottomDrawerLayout 現已使用獨立的 BottomDrawerState 列舉。(I533fa)

  • 移除先前淘汰的 Modifier.ripple。Clickable 現在使用波紋做為預設指標 (如果您在應用程式中設定了 MaterialTheme {}),因此在大多數情況下,您只需使用 Clickable,即可免費取得分享指示。如果需要自訂漣漪效果的顏色/大小/邊界參數,您可以手動建立 RippleIndication,並將其做為指示參數傳遞給 Clickable。(I663b2, b/155375067)

  • 已移除替換的 FilledTextField 可撰寫覆寫設定 (I7f8f8)

  • 將 Button 物件 (包含 Button 函式使用的預設值) 重新命名為 ButtonConstants (I7c5f7b/159687878)

  • Button 的內容版位現在的行為就像 Row 一樣 (如需包含文字的圖示,請參閱 Button 範例,瞭解如何撰寫) (I0ff10b/158677863)

  • 已淘汰 RadioGroup 和 RadioGroupItem。將 Box 與 Modifier.selectable、Row 和 Column 搭配使用,從您的設計選出一組適宜的 radioButton (I7f5cfb/149528535)

  • 已新增素材外框文字欄位 (I1a518)

  • 已淘汰 androidx.ui.foundation.TextFieldValue 和 androidx.ui.input.EditorValue。也已淘汰使用該類型的 TextField、FilledTextField 和 CoreTextField 可組合項。請改用 androidx.ui.input.TextFieldValue (I4066db/155211005)

  • TabRow.TabPosition 不含 Dp 中的位置,而非 IntPx (I34a07b/158577776)

  • 以 Int 取代使用 IntPx,並以 IntOffset 取代 IntPxPosition。將 IntPxSize 換成 IntSize。(Ib7b44)

  • 為了整合用於呈現調整大小資訊的類別數量,請將 Size 類別 (而非 PxSize) 的使用方法進行標準化。這樣可具有內嵌類別的優勢,即利用一個時長型數值封裝 2 個浮點型數值,呈現以浮點數表示的寬度和高度。(Ic0191)

  • 已淘汰 Modifier.ripple。Clickable 現在使用波紋做為預設指標 (如果您在應用程式中設定了 MaterialTheme {}),因此在大多數情況下,您只需使用 Clickable,即可免費取得分享指示。如果需要自訂漣漪效果的顏色/大小/邊界參數,您可以手動建立 RippleIndication,並將其做為指示參數傳遞給 Clickable。(I101cdb/155375067)

  • Scaffold API 經過重新設計:有一些參數更改了名稱,還新增了新的參數來強化自訂功能。已新增 Fab、TopBar 和 BottomBar 查詢大小的 getter (I0e7ce)

  • 已在 ui-material 中新增質感設計選單實作的 DropdownMenu 元件。(I9bb3d)

  • 允許使用 SoftwareKeyboardController 手動顯示/隱藏軟體鍵盤 (Ifb9d6b/155427736)

  • Modifier.indication 已新增至基礎套件。您可在自訂互動元素上顯示按下/拖曳/其他指示 (I8425fb/155287131)

  • 整合 CanvasScope 實作項目,因此現在只有 DrawScope 和 ContentDrawScope 將 CanvasScope 重新命名為 DrawScope。已更新 DrawScope 以實作 Density 介面,並在 ContentDrawScope 中提供 LayoutDirection Deleted DrawScope 子類別。Painter 和 PainterModifier 經更新後不會再自行維護 RTL 屬性,原因是 DrawScope 已提供這項資訊,不必自行提供 (I1798e)

  • 將 Emphasis.emphasize() 重新命名為 Emphasis.applyEmphasis() (Iceebe)

  • 已停用的按鈕現在的外觀符合質感設計規格 (I47dcbb/155076924)

  • FilledTextField 會取得輸入法 (IME) 動作、視覺化轉換和鍵盤類型支援 (I1f9cfb/155075201)

  • 將 strokeWidth 參數新增至 CircularProgressIndicator 以自訂筆劃粗細。如要變更 LinearProgressIndicator 的筆劃大小 (高度),您可以使用 Modifier.PreferredHeight() 或其他大小修飾符。(Icea16b/154919081)

  • 將 strokeWidth 參數新增至 CircularProgressIndicator 以自訂筆劃粗細。如要變更 LinearProgressIndicator 的筆劃大小 (高度),您可以使用 Modifier.PreferredHeight() 或其他大小修飾符。(Icea16b/154919081)

  • 已新增 Slot API,用於 FilledTextField 中的結尾和開頭圖示,並處理錯誤狀態 (Ic12e0)

  • FAB 和 Extended FA 的預設顏色已變更為 MaterialTheme.colors.secondary。(I3b9b9b/154118816)

  • 已將 API 中所用可為空值的 Color 全部改為不可為空值,並使用 Color.Unset 取代空值 (Iabaa7)

  • 已將 EdgeInsets 重新命名為 InnerPadd。而將 Material Buttons 的 innerPadding 參數重新命名為 paddding。(I66165)

  • 滑桿現為無狀態,就像其他控制項一樣,使用者必須自行傳送及更新狀態。(Ia00aa)

  • 已移除 StaticDrawer。如有需要,請改用具備規格規格的 Box (I244a7)

  • 已新增 Filled Text Field (Ic75cd) 的質感設計實作項目

  • 將修飾符參數新增到 ListItem 並重新排序參數,以宣傳結尾的 lambda 內文 (I66e21)

  • 將 defaultFontFamily 建構函式參數新增到 Typography,以便為所提供且沒有任何字型系列組合的 TextStyles 指定要使用的預設字型系列。(I89d07)

  • 從 API 介面暫時移除 Material Data Tables。(Iaea61)

  • 重新命名的可分割元件中的參數 (Ic4373)

  • 子項 (Ia6d19)

  • 移除 MaterialTheme.emphasisLevels,請改用 EmphasisAmbient.current 擷取強調型層級 (Ib5e40)

  • 形狀主題系統已根據質感設計規格進行更新。您現在可以提供大多數元件所使用的小型、中型和大型形狀 (Ifb4d1)

  • 已將 MaterialTheme.colors()、MaterialTheme.typography() 等 MaterialTheme API 變更為屬性 (而非函式)。請從現有的呼叫中移除括號,無需變更行為。(I3565a)

  • 重構 FloatingActionButton API 以接受可組合的 lambda 而非原始物件。如需使用資訊,請參閱更新後的範例。(I00622)

  • enabled 參數加到 Checkbox, Switch 和 Toggleable (I41c16)

  • Ripple 現已改名為 Modifier。Clickable 尚未轉換的建議用途是 Clickable(onClick = { ... }, modifier = ripple()) (Ie5200b/151331852b/150060763)

  • Surface 和 Card 已從 androidx.ui.material.surface 移至 androidx.ui.material (I88a6db/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 以接受 texticon lambdas (Ia057e)

  • 已新增 BottomNavigation 元件,詳情請參閱說明文件與使用方法範例 (I731a0)

  • 新增 Icon、IconButton 和 IconToggleButton,移除 AppBarIcon。您現在可以用 IconButton 直接取代 AppBarIcon 的現有使用情況,而現在應具有正確的觸控目標。請參閱相關使用資訊的範例,並查看能直接搭配這些元件使用的 Material 圖示。(I96849)

  • 以不同函式取代 ButtonStyle,並移除文字 (字串) 超載。如需使用資訊,請參閱更新後的範例。(If63abb/146478620b/146482131)

  • Border 調節係數重新命名為 DrawBorder (I8ffcc)

  • LayoutCoordinates 已不再具備位置屬性。考慮使用 LayoutModifiers、旋轉或資源調度時,排名屬性並不合理。開發人員應改用 parentCoordinates 和 childToLocal() 計算 oneLayoutCoordinate 之間的變形。

    LayoutCoordinates 使用 IntPxSize 做為大小屬性,而非 PxSize。版面配置使用整數像素大小做為版面配置,因此所有版面配置大小都應使用整數,而不是浮點值。(I9367b)

  • 對環境 API 做出破壞性變更。詳情請參閱記錄檔和 Ambient<T> 說明文件 (I4c7eeb/143769776)

  • 已新增 Scaffold Material 元件。Scaffold 實作 (I7731b)

  • 已取代 DrawBorder 並改用 Border Modifier (Id335a)

修正錯誤

  • 淘汰了 FocusModifier,改用 Modifier.focus、Modifier.focusRequester、Modifier.focusObserver。已淘汰 FocusState 和 FocusDetailsState,並改用 FocusState2 (I46919b/160822875b/160922136)
  • 現已淘汰 VerticalScroller 和 HoriziontalScroller。使用 ScrollableColumn 和 ScrollableRow,透過資料欄/資料列行為和參數或使用內建功能,或是對元素使用 Modifier.verticalScroll 和 Modifier.horizontalScroll。同樣地,ScrollerPosition 也已淘汰,並改用 ScrollState (I400ceb/157225838b/149460415b/154105299)
  • 已將 Modifier.draggable 和 Modifier.scrollable API 重新作業。因為 DragDirection 被移除以有利於 Orientation。可捲動狀態已被簡化。ScrollableState 已重新命名為 ScrollableController (Iab63cb/149460415)
  • runOnIdleCompose 重新命名為 runOnIdle (I83607)
  • 單一值的語意屬性現在採用呼叫樣式。舉例來說,「semantics { hidden = true }」目前寫入為「semantics { hidden() }」(Ic1afdb/145951226b/145955412)。
  • 許多測試 API 已重新命名,提供更直覺化的使用體驗。將所有 FindXYZ API 都重新命名為 onNodeXYZ。將所有 doXYZ API 都重新命名為 performXYZ。(I7f164)
  • 改變了 Transition API,用於回傳 TransitionState,而不是將 TransitionState 傳遞至子項。這項改變讓 API 與 animate() API 更加一致。(I24e38)
  • 已新增 IntBounds 單位類別,代表版面配置中的整數像素邊界。PopupPositionProvider 的 API 已更新,以便使用這個類別。(I0d8d0b/159596546)
  • 為測試搜尋工具新增了一個選用標記 useUnMergedTree。(I2ce48)
  • 已移除過時的大小測試 API。(Iba0a0)
  • 移除包裝 NativeShader 類別的 Shader 內嵌類別,取代預期的 NativeShader 類別。已包裝的 Shader 內嵌類別在 API 介面上並未新增任何有價值的項目,並且是內嵌類別,因此請直接使用 NativeShader 類別。(I25e4d)
  • 彈出式視窗、方塊和選單現在可以沿用相關 MaterialTheme (Ia3665b/156527485)
  • 您現在可以使用 Material 下拉式選單。(Ide699)
  • 從 Layout() 函式的評估區塊移除版面配置方向參數。不過,在回呼內可透過測量範圍物件取得版面配置方向 (Ic7d9d)
  • 在頂層 API 中使用 AnimationSpec (而非 AnimationBuilder) 來釐清靜態動畫規格的概念 - 改善 DSL 轉換:在建立如 tween、spring 等 AnimationSpec 時,不再需要使用 lambda。而是直接採用建構函式參數。- 改善使用 AnimationSpec 開啟建構函式 (而非仰賴建構工具) 的整體操作簡易性 - 將 KeyFrame 和 Tween 的時間與延遲時間變更為 Int。這可免除不必要的類型層級轉換和方法超載 (支援 Long 和 Int)。(Ica0b4)
  • enabled 設為 false 時,切換按鈕會顯示為停用狀態 (If4624b/155941869b/159331694)
  • Modifier.tag 已重新命名為 Modifier.layoutId,以避免與 Modifier.testTag 混淆。(I995f0)
  • 從 Placeable#get(AlignmentLine) 傳回的對齊線 Int 位置現在不可為空值。如果缺少查詢的對齊線,則會傳回 AlignmentLine.Unspecified。(I896c5b/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 (I35220b/157642842)

  • 我們進行了大規模重構工作,包括將各種 Compose 類別中所使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I086f4)

  • 我們進行了大規模重構工作,其中一部分是將在各種組合中使用 Px 類別來處理像素參數,更換成只使用 Dp 和基本類型 (Id3434)

  • 我們進行了大規模重構工作,包括將各種 Compose 類別中所使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I97a5a)

  • 已修正無法針對 DropdonMenuItems 叫用 onClick 的問題。(I3998b, b/157673259)

  • 已淘汰 MutuallyExclusiveSetItem。請改用 Modifier.selectable。(I02b47b/157642842)

  • TestTag 現已淘汰,請改用 Modifier.testTag。(If5110b/157173105)

  • TextField 的游標有閃爍的動畫 (Id10a7)

  • 我們進行了大規模重構工作,包括將各種 Compose 類別中所使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I19d02)

  • VerticalScroller 提供立即可用的欄。HorizontalScroller 現在提供立即可用的列。(Ieca5db/157020670)

  • 我們進行了大規模重構工作,包括將各種撰寫類別中所使用的 Px 類別改為只使用 Dp 和基本類型來處理像素參數 (Iede0b)

  • 我們已取消淘汰 Modifier.semantics,並允許使用高階元件。(I4cfdc)

  • 變更了 DrawLayer 修飾詞 API:outlineShape 已重新命名為 shape,採用 RectangleShape 做為預設值,而且現在不可設為空值;clipToOutline 已重新命名為 clip;移除了 clipToBounds,原因是其等同於 RectangleShape 的 clip == true (I7ef11b/155075735)

  • 更新了較高階的 Compose API,讓 Canvas 改為顯示 CanvasScope。如此一來,消費者就不需要維護自己的 Paint 物件。如果是仍需要存取 Canvas 的取用端,則可以使用 drawCanvas 擴充功能方法提供回呼,透過基礎 Canvas 發出繪圖指令。(I80afd)

  • 已淘汰 AlignmentLineOffset 可組合項,請改用 relativePaddingFrom() 修飾符。已移除 CenterAlignmentLin 的可組合項。(I60107)

  • 已變更 WithConstraints 結尾的 lambda API。如今,它有一個接收器範圍,而非 2 個參數,除了 constraints 與 layoutDirection 之外,還提供 minWidth、maxWidth、minHeight 和 maxHeight 屬性 (以 dp 為單位) (I91b9ab/149979702)

  • 已新增 defaultMinSizeConstraints 版面配置修飾符,該修飾符只有在未指定傳入的對應限制時,才能將大小限制設為已包裝的版面配置範圍 (最小限制為 0,最大限制則為無限) (I311eab/150460257)。

  • 已移除 FocusManagerAmbient。使用 FocusModifier.requestFocus 取得專注力。(Ic4826)

  • 建立 CanvasScope API,以便納入 Canvas 物件以顯示無狀態、宣告式繪圖 API 介面。變形作業侷限在其本身的接收器範圍內,大小調整資訊的範圍也對應插邊的邊界。不需要讓取用端保有自己的 Paint 狀態物件來設定繪圖作業。

    新增了 CanvasScopeSample 並更新了試用版應用程式,以納入宣告式圖形示範 (Ifd86d)。

  • 在 TextField 中新增自訂游標顏色 (I6e33f)

  • 現在起,與 TextField 搭配使用的 TextFieldValue 可以在發生以下情況時產生活動:var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ceb/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 做為預設值。(I20150b/152417501)。

  • RectangleShape 已從 androidx.ui.foundation.shape.* 移至 androidx.ui.graphics.* (Ia74d5b/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() 方法 (Ibacedb/152919067)
  • runOnIdleComposerunOnUiThread 現已成為全域函式,而非 ComposeTestRule 上的方法。(Icbe8f)

  • [Mutable]State 屬性委派運算子已移至擴充功能,以支援 Kotlin 1.4 屬性委派最佳化。呼叫端必須新增匯入才能繼續使用 by state { ... }by mutableStateOf(...)。(I5312c)

  • 已為 LayoutCoordinates 新增 positionInParent 和 boundsInParent (Icacddb/152735784)。

  • ColoredRect 已淘汰,請改用 Box(Modifier.PreferredSize(width, height).drawBackground(color))。(I499fab/152753731)。

  • 已將 LayoutResult 重新命名為 MeasureResult。(Id8c68)

  • 新增用於定義版面配置修飾符的 API LayoutModifier2,並淘汰 LayoutModifier (If32ac)

  • 已使用 Factory 擴充功能函式取代 Modifier 及運算子 (I225e4)

  • 可拖曳的功能已移至修飾符 (Id9b16b/151959544)

  • 已淘汰 ParentData 可組合項。您應建立可實作 ParentDataModifier 介面的修飾符;如果只想為版面配置子項加上標記,以便在測量區塊中加以識別,則請使用 LayoutTag 修飾符 (I51368b/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 (I9af9ab/149030271)

  • 將 LayoutFlex 重新命名為 LayoutWeight。將 tight 參數重新命名為 fill。(If4738)

  • 已移除 Re PaintBoundary 以有利於 DrawLayerModifier (I00aa4)

  • DrawVector 已從一般的可組合函式改為會傳回 Modifier drawVector(),將向量繪製成版面配置的背景。(I7b8e0)

  • Opacity 可組合函式已更換為 drawOpacity 修飾詞(I5fb62)

  • 將可組合函式 Clip 替換為修飾符 drawClip()。只需要將矩形裁剪至圖層邊界時,DrawdToBounds 是相當實用的修飾符。(If28eb)

  • 已將 DrawShadow 可組合函式替換為 DrawShadow() 修飾詞。陰影現已繪製成 LayerModifier 的一部分。(I0317a)

  • 新增 LayerModifier 這項編輯器,可為版面配置新增 RenderNode。可讓您設定剪輯、不透明度、旋轉、縮放和陰影。這將取代 RepaintBoundary。(I7100db/150774014)

  • androidx.compose.ViewComposer 已移至 androidx.ui.node.UiComposer。此外,我們移除了 androidx.compose.Emittable,它對 ComponentNode 來說是多餘的。androidx.compose.ViewAdapters 已移除。系統已不再支援這些項目。Compose.composeInto 已淘汰,請改用 setContentsetViewContent。Compose.disposeComposition 已淘汰,請改為針對 Composition (由 setContent 傳回) 使用 dispose 方法。androidx.compose.Compose.subcomposeInto 已移至 androidx.ui.core.subcomposeInto。ComponentNode#emitInsertAt 已重新命名為 ComponentNode#insertAt。ComponentNode#emitRemoveAt 已重新命名為 ComponentNode#removeAt。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 快速滑過動作行為。(I922afb/147493715)

  • 改善限制的 API 介面 (I0fd15)