Compose Animation
androidx.compose.animation
androidx.compose.animation.core
androidx.compose.animation.graphics
(請參閱所有 Compose 套件的 API 參考說明文件)。
最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 8 月 7 日 | 1.6.8 版 | - | 1.7.0-beta07 | - |
結構
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.animation:animation:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.animation:animation:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 說明文件。
1.7 版
1.7.0-beta07 版
2024 年 8 月 7 日
發布 androidx.compose.animation:animation-*:1.7.0-beta07
。1.7.0-beta07 版包含這些修訂版本。
修正錯誤
- 修正了
SharedTransitionScope
在特定情況下不會繪製重疊項目的問題,這通常包括 Navigation 的使用。(Id65ab、b/347520198)
1.7.0-beta06 版
2024 年 7 月 24 日
發布 androidx.compose.animation:animation-*:1.7.0-beta06
。1.7.0-beta06 版包含這些修訂版本。
修正錯誤
- 修正了
SeekableTransition
在轉場時從SnapshotStateObserver
中正確清除觀察結果的問題,從而洩漏轉換狀態(b9c7182)。 - 修正了父項完成時,子項轉換未正確標示為完成的邊緣案例。(dc42216)。
1.7.0-beta05 版
2024 年 7 月 10 日
發布 androidx.compose.animation:animation-*:1.7.0-beta05
。1.7.0-beta05 版包含這些修訂版本。
修正錯誤
- 轉換屬性
totalDurationNanos
現在可以在snapshotFlow
中正確讀取。
1.7.0-beta04 版
2024 年 6 月 26 日
發布 androidx.compose.animation:animation-*:1.7.0-beta04
。1.7.0-beta04 版包含這些修訂版本。
1.7.0-beta03 版
2024 年 6 月 12 日
發布 androidx.compose.animation:animation-*:1.7.0-beta03
。1.7.0-beta03 版包含這些修訂版本。
1.7.0-beta02 版
2024 年 5 月 29 日
發布 androidx.compose.animation:animation-*:1.7.0-beta02
。1.7.0-beta02 版包含這些修訂版本。
1.7.0-beta01 版
2024 年 5 月 14 日
發布 androidx.compose.animation:animation-*:1.7.0-beta01
。1.7.0-beta01 版包含這些修訂版本。
API 變更
sharedBounds
的新resizeModes
(ScaleToBounds
和RemeasureToBounds
),可選擇縮放或重新測量。舊版scaleIn/OutSharedContentToBounds
API 現已淘汰。(I0d41a)。
外部貢獻
- 實驗性
SharedTransitionScope
現在是介面,而非類別。(Iaf856、b/338415048、b/338414702)
1.7.0-alpha08 版
2024 年 5 月 1 日
發布 androidx.compose.animation:animation-*:1.7.0-alpha08
。1.7.0-alpha08 版包含這些修訂版本。
API 變更
LookaheadScope
API 現已穩定。(I21507)。
外部貢獻
- 清除
SeekableTransitionState
之後由 Steven Schoen 建立動畫/間隔後開始動畫的時間 (1ca89529)
1.7.0-alpha07 版
2024 年 4 月 17 日
發布 androidx.compose.animation:animation-*:1.7.0-alpha07
。1.7.0-alpha07 版包含這些修訂版本。
新功能
- 新的共用元素轉換 API 正等您體驗及提供意見。這些新的實驗性 API 可以使用提供的修飾符,在版面配置樹狀結構中共用版面配置,並在一組退出和另一組共用內容時,順利變更邊界。(Icb0b9)。
- 新增
scaleInSharedContentToBounds
和scaleOutSharedContentToBounds
,可縮放sharedBounds
中的內容 (I731c1)
API 變更
AnimatedVisibilityScope.transition
現在是穩定版 API。Modifier.animateEnterExit(..)
也已穩定下來。(I6c1d1)。ApproachLayoutModifierNode
和Modifier.approachLayout
現已穩定,新的isMeasurementApproachInProgress()
和isPlacementApproachInProgress()
會分別取代舊的isMeasurementApproachComplete()
和isPlacementApproachComplete()
。- 已移除淘汰的
intermediateLayout
修飾符。(I3e91c)。 - 您現在可以將
periodicBias
值 (浮點值) 傳遞至keyframesWithSpline
,讓 spline 的初始和最終速率相等。這適用於使用曲線可重複的動畫。這些偏誤代表為達成週期,每個速度 (初始和最終) 經過修改的程度。(Ic1e6c、b/292114811)
修正錯誤
- 修正先前會限制為 0..1 的過度射擊和減少的加/減速曲線 (I38747)
1.7.0-alpha06 版
2024 年 4 月 3 日
發布 androidx.compose.animation:animation-*:1.7.0-alpha06
。1.7.0-alpha06 版包含這些修訂版本。
新功能
- 已新增至
LazyColumn
和LazyRow
的項目外觀和消失動畫支援。先前,您可以新增Modifier.animateItemPlacement()
修飾符來支援刊登位置 (重新排序) 動畫。我們淘汰了此修飾符,並推出名為Modifier.animateItem()
的新非實驗修飾符,可讓您支援這三種動畫類型:外觀 (淡入)、消失 (淡出) 和重新排序。(I2d7f7、b/330152398、b/150812265)
修正錯誤
- 已提升
updateTransition
API 的效能。
1.7.0-alpha05 版
March 20, 2024
發布 androidx.compose.animation:animation-*:1.7.0-alpha05
。1.7.0-alpha05 版包含這些修訂版本。
API 變更
SeekableTransitionState
會將snapTo()
取代為seekTo()
,並新增snapTo()
,可在不出現任何動畫的情況下,立即將狀態變更為目的地狀態。
1.7.0-alpha04 版
2024 年 3 月 6 日
發布 androidx.compose.animation:animation-*:1.7.0-alpha04
。1.7.0-alpha04 版包含這些修訂版本。
API 變更
- 新的 API
Path.reverse()
可反轉路徑的方向 (I36348)
1.7.0-alpha03 版
2024 年 2 月 21 日
發布 androidx.compose.animation:animation-*:1.7.0-alpha03
。1.7.0-alpha03 版包含以下修訂項目。
新功能
- 新的
Modifier.animateContentSize
,採用額外參數來對齊自訂內容。(I5623a、b/269803907) - 新的實驗性
DeferredTargetAnimation
,可在例項化期間建立動畫大小、位置或任何其他目標的動畫效果。(I60745)。
1.7.0-alpha02 版
2024 年 2 月 7 日
發布 androidx.compose.animation:animation-*:1.7.0-alpha02
。1.7.0-alpha02 版包含以下修訂項目。
修正錯誤
KeyframesSpec
的相容性修正。(I2bdf3、b/322214617)。- 修正了在
LazyList
中使用Modifier.animateContentSize
時無法正確重設的問題。(I070512、b/322525716) - 已修正使用超出範圍時間戳記時,
KeyframesSpec
上的IllegalStateException
(I341b8、b/322839811)
1.7.0-alpha01 版
2024 年 1 月 24 日
發布 androidx.compose.animation:animation-*:1.7.0-alpha01
。1.7.0-alpha01 版包含以下修訂項目。
1.6 版本
1.6.8 版
2024 年 6 月 12 日
發布 androidx.compose.animation:animation-*:1.6.8
。1.6.8 版包含這些修訂版本。
1.6.7 版
2024 年 5 月 1 日
發布 androidx.compose.animation:animation-*:1.6.7
。1.6.7 版包含這些修訂版本。
1.6.6 版
2024 年 4 月 17 日
發布 androidx.compose.animation:animation-*:1.6.6
。與上一個版本沒有差別
1.6.5 版本
2024 年 4 月 3 日
發布 androidx.compose.animation:animation-*:1.6.5
。1.6.5 版包含這些修訂版本。
1.6.4 版
March 20, 2024
發布 androidx.compose.animation:animation-*:1.6.4
。1.6.4 版包含這些修訂版本。
1.6.3 版
2024 年 3 月 6 日
發布 androidx.compose.animation:animation-*:1.6.3
。1.6.3 版包含這些修訂版本。
1.6.2 版
2024 年 2 月 21 日
發布 androidx.compose.animation:animation-*:1.6.2
。1.6.2 版包含以下修訂項目。
1.6.1 版
2024 年 2 月 7 日
發布 androidx.compose.animation:animation-*:1.6.1
。1.6.1 版包含以下修訂項目。
修正錯誤
KeyframesSpec
的相容性修正。(I2bdf3、b/322214617)。
1.6.0 版
2024 年 1 月 24 日
發布 androidx.compose.animation:animation-*:1.6.0
。1.6.0 版包含以下修訂項目。
1.6.0-rc01 版
2024 年 1 月 10 日
發布 androidx.compose.animation:animation-*:1.6.0-rc01
。1.6.0-rc01 版包含以下修訂項目。
1.6.0-beta03 版
2023 年 12 月 13 日
發布 androidx.compose.animation:animation-*:1.6.0-beta03
。1.6.0-beta03 版包含以下修訂項目。
API 變更
- 已暫時將
scaleInToFitContainer
和scaleOutToFitContainer
從AnimatedContentTransitionScope
中移除,因為這些元素需要預先做好準備。如果這項功能預設為開啟,或在日後推出的版本選擇啟用,即可使用這項功能。
1.6.0-beta02 版
2023 年 11 月 29 日
發布 androidx.compose.animation:animation-*:1.6.0-beta02
。1.6.0-beta02 版包含以下修訂項目。
1.6.0-beta01 版
2023 年 11 月 15 日
發布 androidx.compose.animation:animation-*:1.6.0-beta01
。1.6.0-beta01 版包含以下修訂項目。
API 變更
ExitTransition.Hold
已重新命名為ExitTransition.KeepUntilTransitionsFinished
,以更明確地顯示。(I1c490)。- 您現在可以使用
keyframesWithSpline
,使用單調曲線來插入任何 N 維值。此功能特別適合插入Offset
、IntOffset
、DpOffset
等位置值。已新增為實驗性 API。
修正錯誤
- 在
ArcLine
中新增針對 Sweep Gradient 的轉譯器支援。(I4d5bb)。 - 為
PageSize.Fixed
實作「等於」和「雜湊碼」。(Ie3ede、b/300134276) - 修正與視窗插邊變更相關的二進位檔相容性問題。(Iee695)。
- 移除 Material3 方塊/按鈕的 Material 核心層,因為 Microbenchmark 在沒有該層的情況下,效能更好。(I55555)。
1.6.0-alpha08 版
2023 年 10 月 18 日
發布 androidx.compose.animation:animation-*:1.6.0-alpha08
。1.6.0-alpha08 版包含以下修訂項目。
API 變更
- 淘汰了
KeyframesSpecConfig#with
,改用KeyframesSpecConfig#using
,保留建構工具模式。(I1d769)。
1.6.0-alpha07 版
2023 年 10 月 4 日
發布 androidx.compose.animation:animation-*:1.6.0-alpha07
。1.6.0-alpha07 版包含以下修訂項目。
API 變更
- 「已修正」和「可捲動」的 Tabrows 現在有「主要」和「次要」變化版本。這些物件可正確對應至 Material3 中定義的顏色和指標行為。
PrimaryScrollableTabRow
和SecondaryScrollableTabRow
現在會顯示捲動狀態。(Iec8f5、b/260572337)
1.6.0-alpha06 版
2023 年 9 月 20 日
發布 androidx.compose.animation:animation-*:1.6.0-alpha06
。1.6.0-alpha06 版包含以下修訂項目。
1.6.0-alpha05 版
2023 年 9 月 6 日
發布 androidx.compose.animation:animation-*:1.6.0-alpha05
。1.6.0-alpha05 版包含以下修訂項目。
API 變更
- 新增了
PathEasing
,以便為加/減速曲線提供任意路徑。(Idb4b9)。
1.6.0-alpha04 版本
2023 年 8 月 23 日
發布 androidx.compose.animation:animation-*:1.6.0-alpha04
。1.6.0-alpha04 版本包含以下修訂版本。
API 變更
- 新增
SeekableTransitionState
,讓開發人員控制轉場進度。(I8e69d)。
1.6.0-alpha03 版本
2023 年 8 月 9 日
發布 androidx.compose.animation:animation-*:1.6.0-alpha03
。1.6.0-alpha03 版包含以下修訂項目。
API 變更
- 新的進入/離開轉換類型,可在進入/離開時根據動畫容器大小調整內容。退出動畫
LookaheadScope
可組合元件的優點和介面現已穩定。(Ifb2ce)。
1.6.0-alpha02 版本
2023 年 7 月 26 日
發布 androidx.compose.animation:animation-*:1.6.0-alpha02
。1.6.0-alpha02 版包含以下修訂項目。
API 變更
- 新增
ExitTransition.Hold
,在AnimatedContent
中同時顯示傳出內容,直到進入 &結束轉換程序完成。(I5984f)。 - 指定允許的可組合項輸入值的其他註解 (I51109)
1.6.0-alpha01 版本
2023 年 6 月 21 日
發布 androidx.compose.animation:animation-*:1.6.0-alpha01
。1.6.0-alpha01 版包含以下修訂項目。
新功能
- 透過在 Looker 流程中回報目標大小,讓
Modifier.animateContentSize
和AnimatedVisibility
完全整合至 Looker 預測系統。
API 變更
IntrinsincMeasureScope
及其實作方式中的新屬性 (例如MeasureScope
),指出目前的測量過程是否為 Lookahead 傳遞。(I7a812)。
修正錯誤
1.5 版本
1.5.4 版本
2023 年 10 月 18 日
發布 androidx.compose.animation:animation-*:1.5.4
。1.5.4 版包含以下修訂項目。
1.5.3 版本
2023 年 10 月 4 日
發布 androidx.compose.animation:animation-*:1.5.3
。這個版本沒有任何變更
1.5.2 版本
2023 年 9 月 27 日
發布 androidx.compose.animation:animation-*:1.5.2
。1.5.2 版包含以下修訂項目。
1.5.1 版本
2023 年 9 月 6 日
發布 androidx.compose.foundation:foundation-*:1.5.1
。1.5.1 版包含以下修訂項目。
修正錯誤
- 修正文字欄位顯示,當
readOnly
為 true 時可供編輯。此外,也修正了在聚焦時readOnly
從 true 變更為 false 時,鍵盤無法顯示。(I34a19、b/246909589)
1.5.1 版本
2023 年 9 月 6 日
發布 androidx.compose.animation:animation-*:1.5.1
。1.5.1 版包含以下修訂項目。
1.5.0 版本
2023 年 8 月 9 日
發布 androidx.compose.animation:animation-*:1.5.0
。1.5.0 版包含此連結所列的修訂項目。
1.5.0-rc01 版
2023 年 7 月 26 日
發布 androidx.compose.animation:animation-*:1.5.0-rc01
。1.5.0-rc01 版包含此連結所列的修訂項目。
修正錯誤
修正問題:在原始狀態類型 (例如
MutableIntState
) 上呼叫.value
時,會回報含有無效修正的 Lint 警告。檢查作業現在會建議改用正確的資源。(Iba953、b/287279257)進行選用檢查,將
mutableStateOf()
呼叫遷移至其對應基元的相應特殊類型。其 Lint ID 為AutoboxingStateCreation
。先前所有專案均預設啟用這項檢查功能。如要在 Android Studio 編輯器和專案的 Lint 輸出內容中查看這項警告,請在模組的build.gradle
或build.gradle.kts
設定中宣告warning "AutoboxingStateCreation"
,將嚴重性從資訊變更為警告 (或更高層級),如下所示 (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
1.5.0-beta03 版
2023 年 6 月 28 日
發布 androidx.compose.animation:animation-*:1.5.0-beta03
。1.5.0-beta03 版包含以下修訂項目。
1.5.0-beta02 版
2023 年 6 月 7 日
發布 androidx.compose.animation:animation-*:1.5.0-beta02
。1.5.0-beta02 版包含以下修訂項目。
1.5.0-beta01 版
2023 年 5 月 24 日
發布 androidx.compose.animation:animation-*:1.5.0-beta01
。1.5.0-beta01 版包含此連結所列的修訂項目。
API 變更
- 移除了重組、顏色動畫和
AndroidComposeView
中的配置 (Ib2bfa)
修正錯誤
- 從彈簧效果中移除配置 (Ie9431)
1.5.0-alpha04 版
2023 年 5 月 10 日
發布 androidx.compose.animation:animation-*:1.5.0-alpha04
。1.5.0-alpha04 版包含以下修訂項目。
API 變更
AnimatedContent
現已支援ContentKey
,以便進一步控管轉換作業何時。(Ic069b)。
1.5.0-alpha03 版
2023 年 4 月 19 日
發布 androidx.compose.animation:animation-*:1.5.0-alpha03
。1.5.0-alpha03 版包含以下修訂項目。
新功能
LookaheadScope
中SubcomposeLayout
的新預設行為。這項功能可讓沒有條件式版位的SubcomposeLayouts
(例如TabRow
、Scaffold
、BoxWithConstraints
等) 順利使用抬頭動畫。
API 變更
- 新的預設
intermediateMeasurePolicy
可重複使用 Lookahead Pass 的評估政策,因此SubcomposeLayout
子類型無需條件式版位 (例如Scaffold
、TabRow
和BoxWithConstraints
) 就能搭配 Lookahead 使用。(Id84c8)。 - 將 infix 的趣味性重新命名為
togetherWith
,可結合進入和離開轉場效果。新增AnimatedContentScope
做為內容 lambda 的接收器。(Ic39ae)。
1.5.0-alpha02 版
2023 年 4 月 5 日
發布 androidx.compose.animation:animation-*:1.5.0-alpha02
。1.5.0-alpha02 版包含此連結所列的修訂項目。
新功能
- 新增實驗性 API,支援在
SubcomposeLayout
中支援 Lookout。這樣做可讓SubcomposeLayout
在LookaheadScope
中正常運作。不久後將支援更多特定SubcomposeLayout
子類型的立即支援。
API 變更
- 新的
SubcomposeLayout
API,會在期間採用額外的中繼測量政策來處理測量/版面配置邏輯 以回溯期為基礎的動畫。(I017d3)。
1.5.0-alpha01 版本
2023 年 3 月 22 日
發布 androidx.compose.animation:animation-*:1.5.0-alpha01
。1.5.0-alpha01 版包含此連結所列的修訂項目。
API 變更
AnimatedContent
API 現在是穩定版AnimatedContentScope
,已重新命名為AnimatedContentTransitionScope
scaleIn
和scaleOut
現在是穩定版 API。(Iaf54e)。
1.4 版
1.4.3 版本
2023 年 5 月 3 日
發布 androidx.compose.animation:animation:1.4.3
、androidx.compose.animation:animation-core:1.4.3
和 androidx.compose.animation:animation-graphics:1.4.3
,但沒有任何變更 (只有版本遞增)。
1.4.2 版
2023 年 4 月 19 日
發布 androidx.compose.animation:animation:1.4.2
、androidx.compose.animation:animation-core:1.4.2
和 androidx.compose.animation:animation-graphics:1.4.2
,但沒有任何異動。1.4.2 版包含以下修訂項目。
1.4.1 版本
2023 年 4 月 5 日
發布 androidx.compose.animation:animation:1.4.1
、androidx.compose.animation:animation-core:1.4.1
和 androidx.compose.animation:animation-graphics:1.4.1
,但沒有任何異動。1.4.1 版包含以下修訂項目。
1.4.0 版本
2023 年 3 月 22 日
發布 androidx.compose.animation:animation:1.4.0
、androidx.compose.animation:animation-core:1.4.0
和 androidx.compose.animation:animation-graphics:1.4.0
。1.4.0 版包含以下修訂項目。
自 1.3.0 版以來的重要異動
- r
ememberInfiniteTransition
和InfiniteTransition
和 Transition 的所有擴充功能函式 (例如InfiniteTransition#animateColor
) 都支援工具標籤 (I56ef7)
1.4.0-rc01 版本
2023 年 3 月 8 日
發布 androidx.compose.animation:animation:1.4.0-rc01
、androidx.compose.animation:animation-core:1.4.0-rc01
和 androidx.compose.animation:animation-graphics:1.4.0-rc01
,但沒有任何異動。1.4.0-rc01 版包含此連結所列的修訂項目。
1.4.0-beta02 版本
2023 年 2 月 22 日
發布 androidx.compose.animation:animation:1.4.0-beta02
、androidx.compose.animation:animation-core:1.4.0-beta02
和 androidx.compose.animation:animation-graphics:1.4.0-beta02
,但沒有任何異動。1.4.0-beta02 版包含以下修訂項目。
1.4.0-beta01 版本
2023 年 2 月 8 日
發布 androidx.compose.animation:animation:1.4.0-beta01
、androidx.compose.animation:animation-core:1.4.0-beta01
和 androidx.compose.animation:animation-graphics:1.4.0-beta01
,但沒有任何異動。1.4.0-beta01 版包含此連結所列的修訂項目。
1.4.0-alpha05 版
2023 年 1 月 25 日
發布了 androidx.compose.animation:animation:1.4.0-alpha05
、androidx.compose.animation:animation-core:1.4.0-alpha05
和 androidx.compose.animation:animation-graphics:1.4.0-alpha05
。1.4.0-alpha05 版包含此連結所列的修訂項目。
變更
- 自上次 alpha 版以來,動畫庫無任何變更 (僅更新版本編號)
1.4.0-alpha04 版
2023 年 1 月 11 日
發布了 androidx.compose.animation:animation:1.4.0-alpha04
、androidx.compose.animation:animation-core:1.4.0-alpha04
和 androidx.compose.animation:animation-graphics:1.4.0-alpha04
。1.4.0-alpha04 版包含此連結所列的修訂項目。
新功能
rememberInfiniteTransition
以及InfiniteTransition
和Transition
上的所有擴充功能函式 (例如InfiniteTransition#animateColor
) 皆支援工具標籤 (I56ef7)
API 變更
InfiniteTransition#TransitionAnimationState
和InfiniteTransition#animations
API 現已公開。(I36682)
1.4.0-alpha03 版
2022 年 12 月 7 日
發布了 androidx.compose.animation:animation:1.4.0-alpha03
、androidx.compose.animation:animation-core:1.4.0-alpha03
和 androidx.compose.animation:animation-graphics:1.4.0-alpha03
。1.4.0-alpha03 版包含此連結所列的修訂項目。
API 變更
- 在使用 Compose 規則的 UI 測試中,系統會等所有影格回呼執行完畢,才會分派在
withFrameNanos
回呼期間恢復的連續作業。這與 Compose 正常執行時的行為相符。不過,仰賴舊行為的測試可能會失敗。這只會影響直接呼叫withFrameNanos
或withFrameMillis
的程式碼,並將回呼外的邏輯傳遞至可能需要在回呼內移動的函式。請參閱這份 CL 範例中的動畫測試變更。 - 將選用的
onPerformTraversals: (Long) -> Unit
參數新增至TestMonotonicFrameClock
建構函式和工廠函式,以便在withFrameNanos
回呼之後和重新啟用呼叫端協同程式之前執行程式碼。(Idb413、b/254115946、b/222093277、b/255802670) AnimatedContent
中的工具標籤新參數 (Iebe2d)
1.4.0-alpha02 版
2022 年 11 月 9 日
發布了 androidx.compose.animation:animation:1.4.0-alpha02
、androidx.compose.animation:animation-core:1.4.0-alpha02
和 androidx.compose.animation:animation-graphics:1.4.0-alpha02
。1.4.0-alpha02 版包含此連結所列的修訂項目。
API 變更
- 新增
ToolingState
,讓工具能變更 Composable 的內部狀態 (Ie6614)
1.4.0-alpha01 版
2022 年 10 月 24 日
發布 androidx.compose.animation:animation:1.4.0-alpha01
、androidx.compose.animation:animation-core:1.4.0-alpha01
和 androidx.compose.animation:animation-graphics:1.4.0-alpha01
。1.4.0-alpha01 版包含此連結所列的修訂項目。
修正錯誤
- 修正 AnimatedContent 中不正確的中斷動畫 (b/238662479)
1.3 版
1.3.3 版
2023 年 1 月 11 日
發布了 androidx.compose.animation:animation:1.3.3
、androidx.compose.animation:animation-core:1.3.3
和 androidx.compose.animation:animation-graphics:1.3.3
。1.3.3 版包含此連結所列的修訂項目。
- 自 1.3.2. 以來沒有任何異動。
1.3.2 版
2022 年 12 月 7 日
發布了 androidx.compose.animation:animation:1.3.2
、androidx.compose.animation:animation-core:1.3.2
和 androidx.compose.animation:animation-graphics:1.3.2
。1.3.2 版包含此連結所列的修訂項目。
修正錯誤
- 已更新為可支援 androidx.compose.ui 1.3.2
1.3.1 版
2022 年 11 月 9 日
發布了 androidx.compose.animation:animation:1.3.1
、androidx.compose.animation:animation-core:1.3.1
和 androidx.compose.animation:animation-graphics:1.3.1
。1.3.1 版包含此連結所列的修訂項目。
1.3.0 版
2022 年 10 月 24 日
發布 androidx.compose.animation:animation:1.3.0
、androidx.compose.animation:animation-core:1.3.0
和 androidx.compose.animation:animation-graphics:1.3.0
。1.3.0 版包含此連結所列的修訂項目。
自 1.2.0 版以來的重要變更
- 一組新的加/減速功能現可穩定運作
1.3.0-rc01 版
2022 年 10 月 5 日
發布了 androidx.compose.animation:animation:1.3.0-rc01
、androidx.compose.animation:animation-core:1.3.0-rc01
和 androidx.compose.animation:animation-graphics:1.3.0-rc01
。1.3.0-rc01 版包含此連結所列的修訂項目。
1.3.0-beta03 版
2022 年 9 月 21 日
發布 androidx.compose.animation:animation:1.3.0-beta03
、androidx.compose.animation:animation-core:1.3.0-beta03
和 androidx.compose.animation:animation-graphics:1.3.0-beta03
。1.3.0-beta03 版包含此連結所列的修訂項目。
- 自 1.3.0-beta02 以來沒有變更
1.3.0-beta02 版
2022 年 9 月 7 日
發布了 androidx.compose.animation:animation:1.3.0-beta02
、androidx.compose.animation:animation-core:1.3.0-beta02
和 androidx.compose.animation:animation-graphics:1.3.0-beta02
。1.3.0-beta02 版包含此連結所列的修訂項目。
- 由於 Kotlin.experimental 已被淘汰,因此已從編譯器選項中移除
1.3.0-beta01 版
2022 年 8 月 24 日
發布 androidx.compose.animation:animation:1.3.0-beta01
、androidx.compose.animation:animation-core:1.3.0-beta01
和 androidx.compose.animation:animation-graphics:1.3.0-beta01
。1.3.0-beta01 版包含此連結所列的修訂項目。
1.3.0-alpha03 版
2022 年 8 月 10 日
發布了 androidx.compose.animation:animation:1.3.0-alpha03
、androidx.compose.animation:animation-core:1.3.0-alpha03
和 androidx.compose.animation:animation-graphics:1.3.0-alpha03
。1.3.0-alpha03 版包含此連結所列的修訂項目。
API 變更
Crossfade
、animateAsState
和Animatable
中的工具標籤新參數 (Iac08a)- 新增了
atFraction
函式,讓您在部分時段 (而非特定時間長度中) 定義主要畫面格 (I20c76、b/232059455)。
1.3.0-alpha02 版
2022 年 7 月 27 日
發布 androidx.compose.animation:animation:1.3.0-alpha02
、androidx.compose.animation:animation-core:1.3.0-alpha02
和 androidx.compose.animation:animation-graphics:1.3.0-alpha02
。1.3.0-alpha02 版包含此連結所列的修訂項目。
1.3.0-alpha01 版
2022 年 6 月 29 日
發布了 androidx.compose.animation:animation:1.3.0-alpha01
、androidx.compose.animation:animation-core:1.3.0-alpha01
和 androidx.compose.animation:animation-graphics:1.3.0-alpha01
。1.3.0-alpha01 版包含此連結所列的修訂項目。
API 變更
- 新增
LookaheadLayout
,支援在實際測量/版面配置之前使用 Lookahead 傳遞。如此一來,就可以在版面配置變更時預先計算,讓 Lookahead 後測量/版面配置使用預先計算的大小/位置,以動畫方式呈現目標的大小和位置。目前尚不支援SubcomposeLayouts
,但會在即將推出的版本中推出。(I477f5)
1.2 版
1.2.1 版本
2022 年 8 月 10 日
發布 androidx.compose.animation:animation:1.2.1
、androidx.compose.animation:animation-core:1.2.1
和 androidx.compose.animation:animation-graphics:1.2.1
。1.2.1 版包含此連結所列的修訂項目。
1.2.0 版
2022 年 7 月 27 日
發布了 androidx.compose.animation:animation:1.2.0
、androidx.compose.animation:animation-core:1.2.0
和 androidx.compose.animation:animation-graphics:1.2.0
。1.2.0 版包含此連結所列的修訂項目。
自 1.1.0 版以來的重要變更
- 現在 Compose 動畫支援「開發人員選項」中的「動畫影片長度比例」設定。
- 提供大量的全新實驗性加/減速曲線選項。
AnimatedImageVector
現在支援repeatCount
和repeatMode
。
1.2.0-rc03 版
2022 年 6 月 29 日
發布 androidx.compose.animation:animation:1.2.0-rc03
、androidx.compose.animation:animation-core:1.2.0-rc03
和 androidx.compose.animation:animation-graphics:1.2.0-rc03
。1.2.0-rc03 版包含此連結所列的修訂項目。
- 自 1.2.0-rc02 以來沒有變更。
1.2.0-rc02 版
2022 年 6 月 22 日
發布了 androidx.compose.animation:animation:1.2.0-rc02
、androidx.compose.animation:animation-core:1.2.0-rc02
和 androidx.compose.animation:animation-graphics:1.2.0-rc02
。1.2.0-rc02 版包含此連結所列的修訂項目。
修正錯誤
- 移除加/減速功能的
ExperimentalEasingApi
註解 (Ied441)
1.2.0-rc01 版
2022 年 6 月 15 日
發布 androidx.compose.animation:animation:1.2.0-rc01
、androidx.compose.animation:animation-core:1.2.0-rc01
和 androidx.compose.animation:animation-graphics:1.2.0-rc01
。1.2.0-rc01 版包含此連結所列的修訂項目。
API 變更
- Compose 程式庫中的介面現已使用 jdk8 預設介面方法建立 (I5bcf1)
1.2.0-beta03 版
2022 年 6 月 1 日
發布了 androidx.compose.animation:animation:1.2.0-beta03
、androidx.compose.animation:animation-core:1.2.0-beta03
和 androidx.compose.animation:animation-graphics:1.2.0-beta03
。1.2.0-beta03 版包含此連結所列的修訂項目。
API 變更
- 新增實驗性的動畫調節曲線功能 (I64a38)
1.2.0-beta02 版
2022 年 5 月 18 日
發布 androidx.compose.animation:animation:1.2.0-beta02
、androidx.compose.animation:animation-core:1.2.0-beta02
和 androidx.compose.animation:animation-graphics:1.2.0-beta02
。1.2.0-beta02 版包含此連結所列的修訂項目。
1.2.0-beta01 版
2022 年 5 月 11 日
發布了 androidx.compose.animation:animation:1.2.0-beta01
、androidx.compose.animation:animation-core:1.2.0-beta01
和 androidx.compose.animation:animation-graphics:1.2.0-beta01
。1.2.0-beta01 版包含此連結所列的修訂項目。
- 這是 1.2 版的第一個 Beta 版!自上次 Alpha 版以來沒有任何變更。
1.2.0-alpha08 版
2022 年 4 月 20 日
發布 androidx.compose.animation:animation:1.2.0-alpha08
、androidx.compose.animation:animation-core:1.2.0-alpha08
和 androidx.compose.animation:animation-graphics:1.2.0-alpha08
。1.2.0-alpha08 版包含此連結所列的修訂項目。
1.2.0-alpha07 版
2022 年 4 月 6 日
發布了 androidx.compose.animation:animation:1.2.0-alpha07
、androidx.compose.animation:animation-core:1.2.0-alpha07
和 androidx.compose.animation:animation-graphics:1.2.0-alpha07
。1.2.0-alpha07 版包含此連結所列的修訂項目。
API 變更
AnimatedImageVector
現在支援repeatCount
和repeatMode
(Ia3e75、b/199304067)
1.2.0-alpha06 版
2022 年 3 月 23 日
發布 androidx.compose.animation:animation:1.2.0-alpha06
、androidx.compose.animation:animation-core:1.2.0-alpha06
和 androidx.compose.animation:animation-graphics:1.2.0-alpha06
。1.2.0-alpha06 版包含此連結所列的修訂項目。
API 變更
- 更新向量可繪項目剖析,支援自動鏡像,亦即在目前版面配置的方向為 RTL 時翻轉
VectorPainter
的內容。(I79cd9、b/185760237)
修正錯誤
- 更新向量圖形 API 以使用適當的可組合註解
@VectorComposable
,而非@UiComposable
(I942bc)
1.2.0-alpha05 版
2022 年 3 月 9 日
發布了 androidx.compose.animation:animation:1.2.0-alpha05
、androidx.compose.animation:animation-core:1.2.0-alpha05
和 androidx.compose.animation:animation-graphics:1.2.0-alpha05
。1.2.0-alpha05 版包含此連結所列的修訂項目。
API 變更
- 太棒了!現在 Compose 動畫支援「開發人員選項」中的「動畫影片長度比例」設定 (I5a4fc、b/161675988)。
1.2.0-alpha04 版
2022 年 2 月 23 日
發布 androidx.compose.animation:animation:1.2.0-alpha04
、androidx.compose.animation:animation-core:1.2.0-alpha04
和 androidx.compose.animation:animation-graphics:1.2.0-alpha04
。1.2.0-alpha04 版包含此連結所列的修訂項目。
1.2.0-alpha03 版
2022 年 2 月 9 日
發布了 androidx.compose.animation:animation:1.2.0-alpha03
、androidx.compose.animation:animation-core:1.2.0-alpha03
和 androidx.compose.animation:animation-graphics:1.2.0-alpha03
。1.2.0-alpha03 版包含此連結所列的修訂項目。
1.2.0-alpha02 版
2022 年 1 月 26 日
發布 androidx.compose.animation:animation:1.2.0-alpha02
、androidx.compose.animation:animation-core:1.2.0-alpha02
和 androidx.compose.animation:animation-graphics:1.2.0-alpha02
。1.2.0-alpha02 版包含此連結所列的修訂項目。
1.2.0-alpha01 版
2022 年 1 月 12 日
發布了 androidx.compose.animation:animation:1.2.0-alpha01
、androidx.compose.animation:animation-core:1.2.0-alpha01
和 androidx.compose.animation:animation-graphics:1.2.0-alpha01
。1.2.0-alpha01 版包含此連結所列的修訂項目。
API 變更
- 使用
AnimatedImageVector.animatedVectorResource
而不是animatedVectorResource
載入<animated-vector>
資源檔。- 使用
rememberAnimatedVectorResource
算繪AnimatedImageVector
,而不是使用AnimatedImageVector#painterFor
。(I9c300)
- 使用
修正錯誤
- 將 toString 方法新增至 Animatable 和 AnimationResult。(Icd3a6)
依附元件更新
- 現在依附於 Kotlin
1.6.10
。
1.1 版
1.1.1 版
2022 年 2 月 23 日
發布 androidx.compose.animation:animation:1.1.1
、androidx.compose.animation:animation-core:1.1.1
和 androidx.compose.animation:animation-graphics: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.animation:animation:1.1.0
、androidx.compose.animation:animation-core:1.1.0
和 androidx.compose.animation:animation-graphics: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.animation:animation:1.1.0-rc03
、androidx.compose.animation:animation-core:1.1.0-rc03
和 androidx.compose.animation:animation-graphics:1.1.0-rc03
。1.1.0-rc03 版包含此連結所列的修訂項目。
修正錯誤
- 更新為可支援 Compose Material 1.1.0-rc03
1.1.0-rc01 版
2021 年 12 月 15 日
發布了 androidx.compose.animation:animation:1.1.0-rc01
和 androidx.compose.animation:animation-core:1.1.0-rc01
。1.1.0-rc01 版包含此連結所列的修訂項目。
API 變更
- 使用
AnimatedImageVector.animatedVectorResource
而不是animatedVectorResource
載入<animated-vector>
資源檔。- 使用
rememberAnimatedVectorResource
算繪AnimatedImageVector
,而不是使用AnimatedImageVector#painterFor
。(I9c300)
- 使用
1.1.0-beta04 版
2021 年 12 月 1 日
發布 androidx.compose.animation:animation:1.1.0-beta04
、androidx.compose.animation:animation-core:1.1.0-beta04
和 androidx.compose.animation:animation-graphics:1.1.0-beta04
。1.1.0-beta04 版包含此連結所列的修訂項目。
新功能
- 更新為可與 Kotlin
1.6.0
相容
1.1.0-beta03 版
2021 年 11 月 17 日
發布了 androidx.compose.animation:animation:1.1.0-beta03
、androidx.compose.animation:animation-core:1.1.0-beta03
和 androidx.compose.animation:animation-graphics:1.1.0-beta03
。1.1.0-beta03 版包含此連結所列的修訂項目。
API 變更
- 新增修飾符 Modifier.onPlaced,藉此觀察位置變更。您可以根據觀察到的位置變更,對子項修飾符的偏移進行額外變更 (I558fd)
新增可支援 Crossfade 中 contentKey 的功能。動畫系統將使用 ContentKey 進行相等性檢查。因此,可以針對不同的狀態指定合適的 contentKey,藉此自訂狀態的差異比較。
ContentKey 還可用作儲存及還原內容的按鍵。(I2e055、b/197907070)
1.1.0-beta02 版
2021 年 11 月 3 日
發布 androidx.compose.animation:animation:1.1.0-beta02
、androidx.compose.animation:animation-core:1.1.0-beta02
和 androidx.compose.animation:animation-graphics:1.1.0-beta02
。1.1.0-beta02 版包含此連結所列的修訂項目。
修正錯誤
- 新增支援工具的 Animation API。具體來說,這類 API 可讓工具檢查轉換中的動畫和動畫設定。(I4116e)
1.1.0-beta01 版
2021 年 10 月 27 日
發布了 androidx.compose.animation:animation:1.1.0-beta01
、androidx.compose.animation:animation-core:1.1.0-beta01
和 androidx.compose.animation:animation-graphics:1.1.0-beta01
。1.1.0-beta01 版包含此連結所列的修訂項目。
API 變更
- 新增支援工具的 Animation API。具體來說,這類 API 可讓工具檢查轉換中的動畫和動畫設定。(I4116e)
1.1.0-alpha06 版
2021 年 10 月 13 日
發布 androidx.compose.animation:animation:1.1.0-alpha06
、androidx.compose.animation:animation-core:1.1.0-alpha06
和 androidx.compose.animation:animation-graphics:1.1.0-alpha06
。1.1.0-alpha06 版包含此連結所列的修訂項目。
1.1.0-alpha05 版
2021 年 9 月 29 日
發布了 androidx.compose.animation:animation:1.1.0-alpha05
、androidx.compose.animation:animation-core:1.1.0-alpha05
和 androidx.compose.animation:animation-graphics:1.1.0-alpha05
。1.1.0-alpha05 版包含此連結所列的修訂項目。
API 變更
EnterTransition
、ExitTransition
和部分AnimatedVisibility
API 現已穩定。MutableTransitionState.isIdle
也不再處於實驗階段。(I5072d)破壞性變更:Enter/ExitTransition 工廠中的 lambda 已移至參數清單中的最後一個位置。(I5072d)
1.1.0-alpha04 版
2021 年 9 月 15 日
發布 androidx.compose.animation:animation:1.1.0-alpha04
、androidx.compose.animation:animation-core:1.1.0-alpha04
和 androidx.compose.animation:animation-graphics:1.1.0-alpha04
。1.1.0-alpha04 版包含此連結所列的修訂項目。
1.1.0-alpha03 版
2021 年 9 月 1 日
發布了 androidx.compose.animation:animation:1.1.0-alpha03
、androidx.compose.animation:animation-core:1.1.0-alpha03
和 androidx.compose.animation:animation-graphics:1.1.0-alpha03
。1.1.0-alpha03 版包含此連結所列的修訂項目。
新功能
- 更新 Compose
1.1.0-alpha03
,使其依附於 Kotlin1.5.30
。(I74545)
1.1.0-alpha02 版
2021 年 8 月 18 日
發布 androidx.compose.animation:animation:1.1.0-alpha02
、androidx.compose.animation:animation-core:1.1.0-alpha02
和 androidx.compose.animation:animation-graphics:1.1.0-alpha02
。1.1.0-alpha02 版包含此連結所列的修訂項目。
API 變更
- repeatable 和 infiniteRepeatable 現在可支援 StartOffset,作為動畫開始前延遲開始時間或快轉動畫的方式。此起始位移不會重複 (Ic679f、b/195079908)
- 新增的「進入/退出」轉場功能可縮放比例。這項功能可與其他類型的 Enter/ExitTransitions 搭配使用 (I372da、b/191325593)。
1.1.0-alpha01 版
2021 年 8 月 4 日
發布了 androidx.compose.animation:animation:1.1.0-alpha01
、androidx.compose.animation:animation-core:1.1.0-alpha01
和 androidx.compose.animation:animation-graphics:1.1.0-alpha01
。1.1.0-alpha01 版包含此連結所列的修訂項目。
API 變更
AnimatedImageVector
和相關 API 現已加入新的androidx.compose.animation:animation-graphics
模組中。(I60873)
修正錯誤
- 將
InfiniteAnimationPolicy
移至 :compose:ui (I5eb09、b/160602714)
1.0 版
1.0.5 版
2021 年 11 月 3 日
發布 androidx.compose.animation:animation:1.0.5
和 androidx.compose.animation:animation-core:1.0.5
。1.0.5 版包含此連結所列的修訂項目。
修正錯誤
- 修正追蹤 derivedStateOf 例項時的異常終止問題 (aosp/1792247)。
1.0.4 版
2021 年 10 月 13 日
發布了 androidx.compose.animation:animation:1.0.4
和 androidx.compose.animation:animation-core:1.0.4
。1.0.4 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin
1.5.31
1.0.3 版
2021 年 9 月 29 日
發布 androidx.compose.animation:animation:1.0.3
和 androidx.compose.animation:animation-core:1.0.3
。1.0.3 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin
1.5.30
1.0.2 版
2021 年 9 月 1 日
發布了 androidx.compose.animation:animation:1.0.2
和 androidx.compose.animation:animation-core: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.animation:animation:1.0.1
和 androidx.compose.animation:animation-core:1.0.1
。1.0.1 版包含此連結所列的修訂項目。
依附元件更新
- 已更新為依附 Kotlin
1.5.21
。
1.0.0 版
2021 年 7 月 28 日
發布了 androidx.compose.animation:animation:1.0.0
和 androidx.compose.animation:animation-core: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.animation:animation:1.0.0-rc02
和 androidx.compose.animation:animation-core:1.0.0-rc02
。1.0.0-rc02 版包含此連結所列的修訂項目。
1.0.0-rc01 版
2021 年 7 月 1 日
發布了 androidx.compose.animation:animation:1.0.0-rc01
和 androidx.compose.animation:animation-core:1.0.0-rc01
。查看 1.0.0-rc01 版的修訂項。
修正錯誤
- 將
InfiniteAnimationPolicy
移至androidx.compose.ui:ui
(I5eb09、b/160602714)
1.0.0-beta09 版
2021 年 6 月 16 日
發布 androidx.compose.animation:animation:1.0.0-beta09
和 androidx.compose.animation:animation-core:1.0.0-beta09
。1.0.0-beta09 版包含此連結所列的修訂項目。
API 變更
- 新增
AnimatedContent
Composable。在進入新目標內容且退出初始內容過程中,利用可自訂的ContentTransform
來管理其內容變更。可以混用不同的轉場效果 (包括轉入和轉出) 來自訂外觀和風格。在內容轉換過程中,AnimatedContent
會根據傳入內容自動調整動畫內容的大小。(I2c3df) - 已移除
ManualFrameClock
。如要控制動畫,請改用composeTestRule.mainClock
。(I3c3e8、b/189951065)
新增的設定檔規則
這個版本將設定檔規則新增至下列撰寫模組 (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
什麼是設定檔規則?
程式庫的設定檔規則在位於
src/main
或同等目錄中的文字檔baseline-prof.txt
內進行指定。該檔案會每行指定一個規則,這裡的規則是指對應至程式庫方法或類別的模式。這些規則所用語法是人類可讀形式的 ART 設定檔格式的超集,使用adb shell profman --dump-classes-and-methods ...
時會用到這類格式。這些規則會採用兩種形式之一來指定方法或類別。方法規則將採用以下模式:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
類別規則將採用以下模式:
<CLASS_DESCRIPTOR>
此處的
<FLAGS>
是H
、S
和P
之中的一或多個字元,用於指出這個方法應標記為「Hot」、「Startup」或「Post Startup」。<CLASS_DESCRIPTOR>
是指定方法所屬的類別描述元。舉例來說,androidx.compose.runtime.SlotTable
類別的描述元是Landroidx/compose/runtime/SlotTable;
。<METHOD_SIGNATURE>
是方法的簽名,含有該方法的名稱、參數類型和傳回類型。舉例來說,LayoutNode
上的fun isPlaced(): Boolean
方法含有isPlaced()Z
簽名。這些模式可包含萬用字元 (
**
、*
和?
),以便讓單一規則涵蓋多種方法或類別。
規則的用途
方法中如果帶有
H
標記,表示這個方法是「Hot」方法,應該預先完成編譯。方法中如果帶有
S
標記,表示這是系統會在啟動時呼叫的方法,應該預先完成編譯,以免啟動時耗費資源處理編譯作業及解析方法。方法中如果帶有
P
標記,表示這是系統在啟動之後才會呼叫的方法。如果類別顯示在這個檔案中,表示系統會在啟動期間使用該類別,因此應該要事先在堆積中分配該類別,以免耗費載入類別的成本。
運作方式
- 程式庫可以定義這些規則,並會包裝於 AAR 構件中。接著,系統會在建構包含這些構件的應用程式時,將這些規則合併起來,然後使用合併後的規則建構該應用程式專屬的精簡二進位 ART 設定檔。當該應用程式安裝在裝置上時,ART 便可以利用這個設定檔預先編譯特定應用程式子集,以提高應用程式效能,特別是首次執行的效能。請注意,這項設定不會對可偵錯的應用程式產生任何影響。
1.0.0-beta08 版
2021 年 6 月 2 日
發布了 androidx.compose.animation:animation:1.0.0-beta08
和 androidx.compose.animation:animation-core:1.0.0-beta08
。1.0.0-beta08 版包含此連結所列的修訂項目。
修正錯誤
detectDragGesures
、detectVerticalGestures
和detectHorizontalGestures
現在會自動使用位置變更,因此不必在 onDrag 回呼中呼叫 change.consumePositionChange (I42fc4、b/185096350、b/187320697)- 變更
Modifier.onGloballyPositioned()
,系統會回報此修飾符在修飾符鏈結中的座標,而非套用所有修飾符後的版面配置座標。也就是說,修飾符的排序現在會影響系統回報的座標。(Ieb67d、b/177926591)
1.0.0-beta07 版
2021 年 5 月 18 日
發布 androidx.compose.animation:animation:1.0.0-beta07
和 androidx.compose.animation:animation-core:1.0.0-beta07
。1.0.0-beta07 版包含此連結所列的修訂項目。
API 變更
- 新增的
AnimatedVisibility
API 支援MutableTransitionState
中指定的瀏覽權限。這個功能還可讓您透過currentState
和isIdle
在AnimatedVisibility
之外觀察動畫狀態。- 新增的下層轉換功能可在「Transition」(轉場) 中使用
- 使用 AnimationScope.transition 支援 AnimatedVisibility 中的自訂退出/進入轉場動畫
- 新增 animateEnterExit 修飾元,能為使用者提供所有下層的 AnimatedVisibility
- 已淘汰使用
initiallyVisible
參數的 AnimatedVisibility API (I702f3)
1.0.0-beta06 版
2021 年 5 月 5 日
發布了 androidx.compose.animation:animation:1.0.0-beta06
和 androidx.compose.animation:animation-core:1.0.0-beta06
。1.0.0-beta06 版包含此連結所列的修訂項目。
1.0.0-beta05 版
2021 年 4 月 21 日
發布 androidx.compose.animation:animation:1.0.0-beta05
和 androidx.compose.animation:animation-core:1.0.0-beta05
。1.0.0-beta05 版包含此連結所列的修訂項目。
修正錯誤
- ui-test-manifest 和 ui-tooling-data 中的 AndroidManifest 檔案現在與 Android 12 相容 (I6f9de、b/184718994)
1.0.0-beta04 版
2021 年 4 月 7 日
發布了 androidx.compose.animation:animation:1.0.0-beta04
和 androidx.compose.animation:animation-core:1.0.0-beta04
。1.0.0-beta04 版包含此連結所列的修訂項目。
API 變更
- 移除
RowScope
、ColumnScope
、BoxScope
、BoxWithConstraintsScope
的公開例項。(I4e83e、b/181869067)。
1.0.0-beta03 版
2021 年 3 月 24 日
發布 androidx.compose.animation:animation:1.0.0-beta03
和 androidx.compose.animation:animation-core:1.0.0-beta03
。1.0.0-beta03 版包含此連結所列的修訂項目。
1.0.0-beta02 版
2021 年 3 月 10 日
發布了 androidx.compose.animation:animation:1.0.0-beta02
和 androidx.compose.animation:animation-core:1.0.0-beta02
。1.0.0-beta02 版包含此連結所列的修訂項目。
修正錯誤
- 強制限制對實驗性 API 的公開使用 (I6aa29、b/174531520)
1.0.0-beta01 版
2021 年 2 月 24 日
發布 androidx.compose.animation:animation:1.0.0-beta01
和 androidx.compose.animation:animation-core:1.0.0-beta01
。1.0.0-beta01 版包含此連結所列的修訂項目。
這是 Compose 1.0.0 Beta 版的第一個版本。
API 變更
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)
- smoothScrollBy 和 scrollBy 方法的套件變更為
androidx.compose.foundation.gestures.*
(I3f7c1、b/175294473) - 已重新命名大小修飾符。將 Modifier.width/height/size 重新命名為 requiredWidth/requiredHeight/requiredSize。Modifier.PreferredWidth/PreferredHeight/recommendedSize 已重新命名為 width/height/size。(I5b414)
- 螢幕方向已移至基礎套件。VelocirtTracker 已從 ui.gesture 移至 ui.input.pointer (Iff4a8、b/175294473)
- 已移除 AnimationClockObservable 和子類別。AnimatedFloat 也已移除。(Icde52、b/177457083)
- Modifier.draggable 現在接受 DraggableState,而非簡單的 lambda。您可以透過
rememberDraggableState { delta -> }
建立狀態,以取得與之前相同的行為 (Ica70f、b/175294473) - 移除了 animate、animatedValue、AnimatedValue API (If27bc、b/177457083)
- 移除了 AnimationEndReason.Interrupted。如果動畫中斷,系統會擲回 CancellationException (I2cbbc、b/179695417)
- 移除了 TargetAnimation API。(If47d1、b/177457083)
1.0.0-alpha12 版
2021 年 2 月 10 日
發布了 androidx.compose.animation:animation:1.0.0-alpha12
和 androidx.compose.animation:animation-core:1.0.0-alpha12
。1.0.0-alpha12 版包含此連結所列的修訂項目。
API 變更
Modifier.pointerInput
現要求記憶按鍵,藉此指出指標輸入內容偵測協同程式何時應重新啟動,以建立新的依附元件。(I849cd)- 邊界已重新命名為 DpRect (I4b32a)
- 在整個動畫系統中,將 AnimationSpec 的參數名稱統一為 animationSpec。同時,限制 Enter/ExitMigration,使其接受 FiniteAnimationSpec。(Ie47c5、b/177457083)
- Animatable.snapTo 和 Animatable.stop 現在為暫止函式 (If4288)
- 如同我們先前移除
state { 0 }
可組合項且現在鼓勵使用remember { mutableStateOf(0) }
等項目,我們也將移除savedInstanceState { 0 }
可組合項。請改用rememberSaveable { mutableStateOf(0) }
,這樣只要 MutableState 內使用的類型可儲存在套裝組合中,就能自動儲存並還原。如果之前傳遞的是自訂儲存工具物件,現在需使用含有stateSaver
參數的全新 rememberSaveable 超載。用法將如下所示:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26、b/177338004) - 更新了 Crossfade 的方法簽章,使其與動畫系統的其餘部分更加一致。(Ib05ed、b/177457083)
- rememberSaveInstanceState() 已重新命名為 rememberSaveable(),並移至 androidx.compose. runtime.saveable 套件。(I1366e、b/177338004)
- RestorableStateHolder 已重新命名為 SaveableStateHolder,並移至 androidx.compose.runtime.saveable 套件。內部方法 RestorableStateProvider 已重新命名為 SaveableStateProvider。Generic 類型已移除,可直接將 Any 以索引鍵格式傳遞,不再需要使用實驗性註解。(I0902e、b/174598702)
- 更新了 Modifier.animateContentSize API,使其與動畫系統的其餘部分一致。(I0bf75、b/177457083)
- AnimatedValue/Float 現已淘汰。請改用 Animatable (I71345、b/177457083)
- tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 和 pressIndicaitonGestureFilter 已淘汰,請改用 Modifier.clickable 或 Modifier.pointerInput 搭配 DetectionTapTouchs 函式。(I6baf9、b/175294473)
- 推出將套用於無限動畫的
InfiniteAnimationPolicy
協同程式結構定義元素。 根據預設,系統不會安裝任何政策,除非使用ComposeTestRule
執行測試。(I50ec4、b/151940543) - Destructuring 和 copy() 方法在幾個類別中極少使用,現已將其從中移除。(I26702、b/178659281)
- 動畫中的播放時間現已統一為奈秒 (If776a)
- Compose:runtime-fulfillment 構件現已淘汰。 目前可在 compose:runtime 中找到 MonotonicFrameClock,而 AndroidUiDispatcher 則可在 compose:ui 中找到。(Ib5c36)。
- 新增了
Animation.isInfinite
和VectorizedAnimationSpec.isInfinite
,可示意動畫是否為無限。這可在導入動畫時,用於對這類動畫進行特殊處理。例如顯示特殊的「剩餘時間」訊息,或是在測試期間取消動畫,避免無限期地等待閒置時間。(Iebb05、b/151940543) - 使用 Long 而不是 Uptime 作為動畫時間類型 (Ie3aa7、b/177420019)
1.0.0-alpha11 版
2021 年 1 月 28 日
發布 androidx.compose.animation:animation:1.0.0-alpha11
和 androidx.compose.animation:animation-core:1.0.0-alpha11
。1.0.0-alpha11 版包含此連結所列的修訂項目。
API 變更
- 淘汰了 TransitionDefinition-based Transition (I0ac57)
- 系統會針對「Transition」(轉場) 和子動畫新增要在工具中顯示的標籤欄位 (I619fb)
- animateAsState 現已改為 animateFooAsState,其中 Foo 是增加動畫效果的變數類型。例如 Float、Dp、Offset 等 (Ie7e25)
- 新增的 InfiniteMigration 會執行任意數量的子動畫。(I1da81)
- 將 Material 有狀態參數介面變更為使用 @Composable 函式來傳回
State<T>
。新增 Animatable.asState(),更易於將 Animatable 轉換為狀態。一併變更 animateElevation,使其成為 Animatable 上的停權擴充功能。(If613c)
修正錯誤
- 淘汰 onCommit、onDispose 和 onActive,並改用 SideEffect 和 DisposableEffect API (If760e)
- 現在支援 updateTransition 中的初始狀態 (Ifd51d)
- 為圖片和圖示新增了內容說明參數。用於為無障礙功能服務提供說明 (I2ac4c)
- 現已淘汰 invalidate 和 ContentReference(),並改用 CurrentRecomposeScope 和 RememberCompositionReference。(I583a8)
- Duration 與 Uptime 將替換為 Long 毫秒,這個步驟移除針對這些類別的指標輸入內容的依附元件。(Ia33b2、b/175142755、b/177420019)
- 您現在可以在組合項外建立可點選、可切換和可選取的項目 (I0a130、b/172938345、b/175294473)
- 加/減速已變更為功能介面 (Ib14e5)
- 為 LazyColumn/LazyRow/LazyVerticalGrid 的範圍新增
items(count: Int)
工廠方法。items(items: List)
和itemsIndexed(items: List)
現已成為擴充功能函式,因此在使用時必須手動匯入。陣列 (Arrays) 的新擴充功能多載:items(items: Array) 和 itemsIndexed(Array) (I803fc、b/175562574) - 運用 TestCoroutineDispatcher 進行測試 (I532b6)
- 已移除 PointerInputData 並修改 PointerInputChange,為其提供所有 PointerInputData 的欄位。將 PointerInputEvent 和 PointerInputEventData 改為內部使用,因為這些並未用於任何公用 API (Ifff97、b/175142755)
1.0.0-alpha10 版
2021 年 1 月 13 日
發布了 androidx.compose.animation:animation:1.0.0-alpha10
和 androidx.compose.animation:animation-core:1.0.0-alpha10
。1.0.0-alpha10 版包含此連結所列的修訂項目。
API 變更
- 已將 Velocity 修改成為具有元件部分和數學運算。(Ib0447)
- 將
@ExperimentalTesting
重新命名為@ExperimentalTestApi
,以便與類似的實驗 API 註解保持一致 (Ia4502、b/171464963) - 將 Position 重新命名為 DpOffset 並移除了 getDistance() (Ib2dfd)
- 移除 Any.identityHashCode() 公用 API (I025d7)
修正錯誤
- 新增以協同程式為主的 API
Animatable
,可確保動畫之間的互斥性。新增 DecayAnimationSpec,可支援多維度衰減動畫 (I820f2、b/168014930) animate()
現已更換為animateAsState()
,後者會傳回State<T>
而非T
。這樣系統會將無效範圍縮小至讀取 State 值的位置,因此可以提升效能 (Ib179e)
1.0.0-alpha09 版
2020 年 12 月 16 日
發布 androidx.compose.animation:animation:1.0.0-alpha09
和 androidx.compose.animation:animation-core:1.0.0-alpha09
。1.0.0-alpha09 版包含此連結所列的修訂項目。
API 變更
- 將 Dp.VectorConverter、Position.VectorConverter 等移到了 animation-core,並淘汰了舊的 VectorConveters (If0c4b)
- 推出了一組全新的「Transition」(轉場) API,不僅更易於使用,也支援動態新增的動畫和動態計算的動畫目標。為了容易與以TransformerDefinition 為主的 API 有所區分,我們將這一組 API 標示為實驗性。(Ia7fe3)
修正錯誤
- 現在,偏移修飾符中的 lambda 會傳回 IntOffset,而非 Float (Ic9ee5、b/174137212、b/174146755)
- 淘汰了 LazyColumnFor、LazyRowFor、LazyColumnForIndexed 和 LazyRowForIndexed。請改用 LazyColumn 和 LazyRow (I5b48c)
- 為暫停指標輸入 API,我們將 HandlePointerInputScope 重新命名為 AwaitPointerEventScope,並將 handlePointerInput() 重新命名為 awaitPointerEventScope() (Idf0a1、b/175142755)
- 新增用於建立 InfiniteRepeatableSpec 的 infiniteRepeatable 函式 (I668e5)
- 移除 ExperimentalPointerInput 註解 (Ia7a24)
1.0.0-alpha08 版
2020 年 12 月 2 日
發布了 androidx.compose.animation:animation:1.0.0-alpha08
和 androidx.compose.animation:animation-core:1.0.0-alpha08
。1.0.0-alpha08 版包含此連結所列的修訂項目。
API 變更
- 新增了針對可組合 lambda 參數命名方式和位置的 Lint 檢查,以檢查是否與 Compose 準則一致。另外也根據 Lint 檢查和指引,將部分使用
children
做為結尾 lambda 名稱的 API 遷移至content
(Iec48e) - 移除了之前已淘汰的 API:
- 已移除
Modifier.onPositioned
,請使用Modifier.onGloballyPositioned
。 - 已移除
Modifier.onDraw
,請使用Modifier.onDrawBehind
。 - 已移除
Modifier.plus
,請使用Modifier.then
。 - 已移除
Color.Unset
,請使用Color.Unspecified
。 - 已移除
PxBounds
類別,請改用Rect
。 - (Ie9d02、b/172562222)
- 已移除
- 暫時新增選項,讓 MonotonicFrameClock 執行 TestAnimationClock (I1403b、b/173402197)。
修正錯誤
- 將 Modifier.drawLayer 重新命名為 Modifier.graphicsLayer,並且根據 API 委員會的意見回饋,將相關類別更新為 GraphicsLayer (I0bd29、b/173834241)
- 新增了 Modifier.scale/rotate API,作為 DrawLayer 的便捷 API。
- 將 Modifier.drawOpacity 重新命名為 Modifier.alpha
- 將 Modifier.drawShadow 重新命名為 Modifier.shadow (I264ca、b/173208140)
- 將 PointerInputData 的運作時間與位置欄位設為不可為空值 (Id468a)
- shiftPx 修飾符已重新命名為 offset,且現已改用 lambda 參數,而非 State (Ic3021、b/173594846)
- 新增可在協同程式中執行動畫的 API (Ied662)
- 淘汰在名稱後綴使用
Ambient
的 Ambient,並按照其他 Ambient 和 Compose API 準則的規範,改成在名稱前綴使用 Ambient 的新屬性。(I33440) - 測試中的時間控制項 (TestAnimationClock 及其用例) 處於實驗階段 (I6ef86、b/171378521)
- 移除舊的 ui-test 模組及其虛設常式 (I3a7cb)
RestorableStateHolder.withRestorableState
函式已重新命名為RestorableStateProvider
(I66640)- 更新了 Alignment 介面,並使其可正常運作 (I46a07、b/172311734)
1.0.0-alpha07 版
2020 年 11 月 11 日
發布 androidx.compose.animation:animation:1.0.0-alpha07
和 androidx.compose.animation:animation-core:1.0.0-alpha07
。1.0.0-alpha07 版包含此連結所列的修訂項目。
修正錯誤
- 淘汰了 AmbientTextStyle、ProvideTextStyle 和 AmbientContentColor 基礎。請改用 Material 程式庫中可提供的新版本。對於非 Material 應用程式,您應建立自己的設計系統專屬主題設定環境,並在自己的元件中使用 (I74acc、b/172067770)
- 已淘汰 foundation.Text,並替換為 material.Text。如要瞭解不使用主題值的無預設立場基本文字 API,請參閱 androidx.compose.foundation.BasicText (If64cb)
- 將 MeasureResult 從 MeasureScope 中移出。(Ibf96d、b/171184002)
- 將數個版面配置相關符號從 androidx.compose.ui 移至 androidx.compose.layout.ui (I0fa98、b/170475424)。
1.0.0-alpha06 版
2020 年 10 月 28 日
發布了 androidx.compose.animation:animation:1.0.0-alpha06
和 androidx.compose.animation:animation-core:1.0.0-alpha06
。1.0.0-alpha06 版包含此連結所列的修訂項目。
API 變更
- 在 ComposeTestRule 中啟用轉場功能,並從 ComposeTestRule 中移除啟用閃爍游標的選項。(If0de3)
1.0.0-alpha05 版
2020 年 10 月 14 日
發布 androidx.compose.animation:animation:1.0.0-alpha05
和 androidx.compose.animation:animation-core:1.0.0-alpha05
。1.0.0-alpha05 版包含此連結所列的修訂項目。
API 變更
- 新增了動畫介面和子類別:這些類別會儲存動畫的開始和結束條件,因此只能透過播放時間查詢值和速度 (Ie95bd、b/163329867)
修正錯誤
- 將 OnPositionedModifier 重新命名為 OnGloballyPositionedModifier,並將 onPositioned() 重新命名為 onGloballyPositioned() (I587e8、b/169083903)。
淘汰 contentColor() 和 currentTextStyle() API,然後分別以 AmbientContentColor 和 AmbientTextStyle 環境取代。與搭配使用其他環境時一樣,您可以對環境屬性使用
.current
,藉此存取目前的值。這項變更的用意是要維持一致性,避免採用多種方式來完成同一件事。此外,部分環境屬性已重新命名,以便清楚描述其用途,如下所示:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
1.0.0-alpha04 版
2020 年 10 月 1 日
發布了 androidx.compose.animation:animation:1.0.0-alpha04
和 androidx.compose.animation:animation-core:1.0.0-alpha04
。1.0.0-alpha04 版包含此連結所列的修訂項目。
API 變更
- 為 rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled 和 textInputServiceFactory 加上 @VisibleForTesting 註解,將其設為內部 API 並隱藏其 kdoc (I554eb、b/168308412)
修正錯誤
- 更新了多個圖形 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)
- 我們已阻止靜態匯入版面配置範圍的內容 (例如 RowScopes 中的 alignWithSiblings)。請改用明確範圍替代項:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
(I216be、b/166760797)
1.0.0-alpha03 版
2020 年 9 月 16 日
發布 androidx.compose.animation:animation:1.0.0-alpha03
和 androidx.compose.animation:animation-core:1.0.0-alpha03
。1.0.0-alpha03 版包含此連結所列的修訂項目。
修正錯誤
- 版面配置 API 中用到 gravity 的部分已統一改成 align 或 alignment (I2421a、b/164077038)
1.0.0-alpha02 版
2020 年 9 月 2 日
發布了 androidx.compose.animation:animation:1.0.0-alpha02
和 androidx.compose.animation:animation-core:1.0.0-alpha02
。1.0.0-alpha02 版包含此連結所列的修訂項目。
API 變更
新增
ManualFrameClock.hasAwaiters
,方便查看是否有任何項目正在等待相應時鐘的框架。在執行需要使用 ManualFrameClock 的測試時,請以runWithManualClock
取代runBlocking
。此外,TestUiDispatcher.Main
可讓您在測試中輕鬆存取主要使用者介面調度程式。例如:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
修正錯誤
淘汰 onPreCommit。onCommit 的行為現在與 onPreCommit 相同。
現在,onCommit 和 onActive 會在已提交組合變更的同一個 Choreographer 畫面中執行,而不是在下一個 Choreographer 畫面開始時執行。(I70403)
1.0.0-alpha01 版
2020 年 8 月 26 日
發布 androidx.compose.animation:animation:1.0.0-alpha01
和 androidx.compose.animation:animation-core:1.0.0-alpha01
。1.0.0-alpha01 版包含此連結所列的修訂項目。
0.1.0-dev 版
0.1.0-dev17 版
2020 年 8 月 19 日
發布了 androidx.compose.animation:animation:0.1.0-dev17
和 androidx.compose.animation:animation-core:0.1.0-dev17
。0.1.0-dev17 版包含此連結所列的修訂項目。
新功能
API 變更
- Offset 現在是內嵌類別 (Iaec70)
- IntOffset 現在是內嵌類別 (Iac0bf)
- IntSize 現已成為內嵌類別 (I2bf42)
AnimatedVisibilty 可組合項為子項內容的顯現和消失加入動畫效果。
推出 EnterTransition 和 ExitTransition,可與 AnimatedVisibilty 可組合項搭配使用,提供 3 種不同類型的顯現和消失動畫效果:淡出、滑動以及放大/縮小內容。可以將不同類型的動畫組合在一起,以呈現更獨樹一幟的外觀和風格。(Idda11)
淘汰了 PxBounds,改用 Rect。以 Rect 更新所有 PxBounds 使用情況,並透過註解加入適當的淘汰/取代作業,協助完成遷移 (I37038、b/162627058)
修正錯誤
- 將
PlacementScope.placeAbsolute()
重新命名為PlacementScope.place()
,而原先的PlacementScope.place()
則重新命名為PlacementScope.placeRelative()
。因此,PlacementScope.place()
方法不再以由右至左的結構定義自動鏡射位置。如果需要這個方法,請改用PlacementScope.placeRelative()
。(I873ac、b/162916675) - 淘汰
state { ... }
可組合項,改為明確呼叫remember { mutableStateOf(...) }
以求一目瞭然。 這樣可以減少管理狀態所需的整體 API 介面和概念數量,且符合類別屬性委派作業的by mutableStateOf()
模式。(Ia5727)
0.1.0-dev16 版
2020 年 8 月 5 日
發布 androidx.compose.animation:animation:0.1.0-dev16
和 androidx.compose.animation:animation-core:0.1.0-dev16
。0.1.0-dev16 版包含此連結所列的修訂項目。
API 變更
- 現在,可以透過
Foo.VectorConverter
存取用於轉換內建裝置的內建向量圖形轉換工具。例如Dp.VectorConverter
、Color.VectorConverter
、Float.VectorConverter
等 (I3e273) - 支援在
Modifier.animateContentSize()
中使用結束事件監聽器,當尺寸改變的動畫播放完畢時,事件監聽器就會收到通知,當中包括動畫的開始/結束尺寸 (I277b2) - 新增 animateContentSize 修飾符,可為其子項修飾符的版面配置大小變化加入動畫效果 (Ieffdc)
新增
MonotonicFrameAnimationClock
,讓您將 MonotonicFrameClock 當做AnimationClockObservable
使用,為協同程式型新版時鐘與仍使用回呼型舊版時鐘的 API 消除兩者之間的差異。ManualAnimationClock
的MonotonicFrameClock
等效函式現在是ManualFrameClock
(I111c7、b/161247083)。
修正錯誤
- 更新了支援版面配置由右至左的 API。新增了 LayoutDirectionAmbient,可用於讀取及變更版面配置方向。移除了 Modifier.rtl 和 Modifier.ltr。(I080b3)
- 要求為 transitionDefinition 明確指定 T 類型。(I1aded)
- foundation.shape.corner 套件已扁平化為 foundation.share (I46491、b/161887429)
- 淘汰 Modifier.plus,並改用 Modifier.then。「Then」可以更明確地指出先後執行順序,同時還禁止輸入會破壞鏈結且降低可讀性的
Modifier.padding().background() + anotherModifier
(Iedd58、b/161529964) - 將 Modifier.drawBackground 重新命名為 Modifier.background (I13677)
0.1.0-dev15 版
2020 年 7 月 22 日
發布了 androidx.compose.animation:animation:0.1.0-dev15
和 androidx.compose.animation:animation-core:0.1.0-dev15
。0.1.0-dev15 版包含此連結所列的修訂項目。
依附元件更新
- 如要使用
0.1.0-dev15
版的 Compose,您必須依據上方「宣告依附元件」一節所示的新程式碼片段更新依附元件。
API 變更
- 改變了 Transition API,用於回傳 TransitionState,而不是將 TransitionState 傳遞至子項。這項改變讓 API 與 animate() API 更加一致 (I24e38)
- 新增了適用於 Crossfade 的輔助鍵參數 (I87cfe、b/159706180)
- 在頂層 API 中使用 AnimationSpec 而不是 AnimationBuilder 來闡明靜態動畫規範的概念
- 改善轉換 DSL (領域特定語言),在建立補間動畫、彈性動畫等 AnimationSpecs 時,已不再需要 lambda。反而直接使用建構函式參數。
- 提高 AnimationSpec 的整體易用性,開放建構函式,而非依賴建構工具
- 將 KeyFrame 和 Tween 的持續時間和延遲時間變更為 Int。這樣就能免除不必要的類型轉換和方法超載 (同時支援 Long 和 Int) (Ica0b4)
- 以 Int 取代 IntPx,並以 IntOffset 取代 IntPxPosition。將 IntPxSize 替換成 IntSize。(Ib7b44)
- 為了整合用於呈現調整大小資訊的類別數量,請將 Size 類別 (而非 PxSize) 的使用方法進行標準化。這樣就能使用內嵌類別,利用一個長整數封裝 2 個浮點值,呈現以浮點表示的寬度和高度 (Ic0191)
- 為了整合用於呈現地點資訊的資訊類別數量,請將偏移量類別 (而非 PxPosition) 的用量標準化。這樣就能使用內嵌類別,利用一個經度封裝 2 個浮點型數值,呈現以浮點數表示的 x 和 y 偏移量。(I3ad98)
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I086f4)
- 為 Dmate、Px、Size、Position、Bounds、PxPosition、PxSize、PxBounds、IntPx、IntPxSize、IntPxPosition、IntPxBounds 及 AnimationVector 等新增了 animate() 支援 (Ib7518)
- Crossfade 現在接受選用的 AnimationBuilder 參數,允許設定動畫 (I6d6e0)
- 將 API 中的所有可為 Null 色彩都更換為不可為 Null,並使用 Color.Unset 取代 null (Iabaa7)
- 移除了 ValueHolder 類別。重新建構 AnimatedValue 和 AnimatedFloat 類別,使動畫值欄位變得抽象,讓子類別可以監看數值更新。
- 為 AnimatedValue、AnimatedFloat 等新增了模型類別。
- 新增了一組輕量級 @Composable API,用於在值之間進行動畫。(I79530)
- 對環境 API 做出破壞性變更。詳情請參閱記錄檔和
Ambient<T>
說明文件 (I4c7ee、b/143769776) - 新增了重複播放模式:Reverse (倒轉)當動畫在 RepeatableSpec 或 VectorizedRepeatableSpec 中重複時,此模式會返回上一個疊代。(Ibe0f5)
- ManualAnimationClock 的 API 新增功能:
hasObservers: Boolean
和建構函式參數dispatchOnSubscribe: Boolean
(Iaa134) - 新增了可在 AnimatedFloat 中取得最小/最大邊界的 API (Icd9cc)
修正錯誤
- 將
runOnIdleCompose
重新命名為runOnIdle
(I83607) - 將多個測試 API 重新命名,提供更直覺化的使用體驗。將所有 FindXYZ API 都重新命名為 onNodeXYZ。將所有 doXYZ API 都重新命名為 performanceXYZ。(I7f164)
- 推出低階無狀態 Animation API。這些 API (I63bf7)
- Recompose 可組合項不再是實用的抽象層。多數重組作業應該都是因為 MutableState 指派項目才會執行。除此之外,建議您使用
invalidate
函式來觸發針對目前範圍的重組作業 (Ifc992) - 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數。刪除了整個 Px 類別 (I3ff33)
- 我們進行了大規模重構工作,其中一部分是將在各種組合中使用 Px 類別來處理像素參數,更換成只使用 Dp 和基本類型 (Id3434)
- Crossfade 現在可採用空值做為初始值 (Iad6a4、b/155947711)
- 我們進行了大規模重構作業,包括將各種 compose 類別中使用的 Px 類別改為只使用 Dp 和原始類型來處理像素參數 (I19d02)
- 整合 CanvasScope 實作項目,現在只有 DrawScope 和 ContentDrawScope。CanvasScope 已重新命名為 DrawScope。更新 DrawScope 以導入 Density 介面,並在 ContentDrawScope 中提供 LayoutDirection Deleted DrawScope 子類別。Painter 和 PainterModifier 經更新後不會再自行維護 RTL 屬性,原因是 DrawScope 已提供這項資訊,不必自行提供 (I1798e)
- 更新較高階的 Compose API,讓 Canvas 改為顯示 CanvasScope。如此一來,取用者就不必維護自己的 Paint 物件。如果取用者仍要求 Canvas 存取權,則可以使用 drawCanvas 擴充功能方法,這種方法可提供回呼,透過基礎 Canvas 發出繪圖指令 (I80afd)
- 分別將 verticalGravity 和 horizontalGravity 參數新增至 Row 和 Column。(I7dc5a)
- ui-text 模組已重新命名為 ui-text-core (I57dec)
- 改善 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) - ColoredRect 已淘汰,請改用
Box(Modifier.preferredSize(width, height).drawBackground(color))
。(I499fa、b/152753731)。 - 將 Modifier 和運算子改為工廠擴充功能函式 (I225e4)
- 淘汰了 Center 可組合元件。應改用 LayoutSize.Fill + LayoutAnchor.Center 修飾符,或將其替換為已套用適當修飾符的 Box 或 Stack 可組合項 (Idf5e0)
- 已將 LayoutFlex 重新命名為 LayoutWeight。將 tight 參數重新命名為 fill。(If4738)
- Opacity 可組合函式已更換為 drawOpacity 修飾詞 (I5fb62)
- 現在,使用 AndroidComposeTestRule 的測試在組合的根目錄中提供一個動畫時鐘,您可手動操作暫停、恢復及快轉。(Id54c5)
- LayoutPadding 修飾符中支援從右到左的方向 (I9e8da)
- Density 和 DensityScope 已合併至單一介面。現在可以使用 DensityAmbient.current 取代 EnvironmentDensity()。只需 with(density) 便可取代 withDensity(density)。(I11cb1)
- 為各種內嵌類別新增了複製方法,包括:
- Offset
- Size
- Radius
- Motion
- TransformOrigin
- 淘汰 Size.copy 這個隨附物件方法,改用執行個體複製方法 (Ife290、b/159905651)
- androidx.compose.ViewComposer 已移至 androidx.ui.node.UiComposer。此外,我們移除了 androidx.compose.Emittable,它對 ComponentNode 來說是多餘的。androidx.compose.ViewAdapters 已移除。系統已不再支援這些項目。Compose.composeInto 已淘汰,請改用
setContent
或setViewContent
。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)