Compose 動畫

在 Jetpack Compose 應用程式中建構動畫,豐富使用者體驗。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2022 年 10 月 4 日 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.animation:animation:1.4.0-alpha02"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.4.0-alpha01"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.animation:animation:1.4.0-alpha02")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.4.0-alpha01"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

意見回饋

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

建立新問題

詳情請參閱 Issue Tracker 文件

1.4 版本

1.4.0-alpha01 版本

2022 年 10 月 24 日

發布 androidx.compose.animation:animation:1.4.0-alpha01androidx.compose.animation:animation-core:1.4.0-alpha01androidx.compose.animation:animation-graphics:1.4.0-alpha011.4.0-alpha01 版本包含以下修訂項目

修正錯誤

  • 修正 AnimatedContent 中不正確的中斷動畫 (b/238662479)

1.3 版本

1.3.0 版本

2022 年 10 月 24 日

發布 androidx.compose.animation:animation:1.3.0androidx.compose.animation:animation-core:1.3.0androidx.compose.animation:animation-graphics:1.3.01.3.0 版包含以下修訂項目。

自 1.2.0 版以來的重要異動

  • 一組新的加/減速功能現可穩定運作

1.3.0-rc01 版本

2022 年 10 月 5 日

發布 androidx.compose.animation:animation:1.3.0-rc01androidx.compose.animation:animation-core:1.3.0-rc01androidx.compose.animation:animation-graphics:1.3.0-rc011.3.0-rc01 版包含以下修訂項目。

1.3.0-beta03 版本

2022 年 9 月 21 日

發布 androidx.compose.animation:animation:1.3.0-beta03androidx.compose.animation:animation-core:1.3.0-beta03androidx.compose.animation:animation-graphics:1.3.0-beta031.3.0-beta03 版包含以下修訂項目。

  • 自 1.3.0-beta02 以來沒有變更

1.3.0-beta02 版本

2022 年 9 月 7 日

發布 androidx.compose.animation:animation:1.3.0-beta02androidx.compose.animation:animation-core:1.3.0-beta02androidx.compose.animation:animation-graphics:1.3.0-beta021.3.0-beta02 版本包含以下修訂項目

  • 由於 Kotlin.experimental 已被淘汰,因此已從編譯器選項中將其移除

1.3.0-beta01 版本

2022 年 8 月 24 日

發布 androidx.compose.animation:animation:1.3.0-beta01androidx.compose.animation:animation-core:1.3.0-beta01androidx.compose.animation:animation-graphics:1.3.0-beta011.3.0-beta01 版本包含以下修訂項目

1.3.0-alpha03 版本

2022 年 8 月 10 日

發布 androidx.compose.animation:animation:1.3.0-alpha03androidx.compose.animation:animation-core:1.3.0-alpha03androidx.compose.animation:animation-graphics:1.3.0-alpha031.3.0-alpha03 版本包含以下修訂項目

API 變更

  • CrossfadeanimateAsStateAnimatable 中的工具標籤新參數 (Iac08a)
  • 新增 atFraction 函式,讓開發者可以在特定時間長度中,僅在部分時段定義主要畫面格,避免牽一髮而動全身。(I20c76b/232059455)。

1.3.0-alpha02 版本

2022 年 7 月 27 日

發布 androidx.compose.animation:animation:1.3.0-alpha02androidx.compose.animation:animation-core:1.3.0-alpha02androidx.compose.animation:animation-graphics:1.3.0-alpha021.3.0-alpha02 版包含以下修訂項目。

1.3.0-alpha01 版本

2022 年 6 月 29 日

發布 androidx.compose.animation:animation:1.3.0-alpha01androidx.compose.animation:animation-core:1.3.0-alpha01androidx.compose.animation:animation-graphics:1.3.0-alpha011.3.0-alpha01 版包含以下修訂項目。

API 變更

  • 新增 LookaheadLayout,支援在實際測量/版面配置之前使用 Lookahead 傳遞。如此一來,就可以在版面配置變更時預先計算,讓 Lookahead 後測量/版面配置使用預先計算的大小/位置,以動畫方式呈現目標的大小和位置。目前尚不支援 SubcomposeLayouts,但會在即將推出的版本中推出 (I477f5)

1.2 版本

1.2.1 版本

2022 年 8 月 10 日

發布 androidx.compose.animation:animation:1.2.1androidx.compose.animation:animation-core:1.2.1androidx.compose.animation:animation-graphics:1.2.11.2.1 版本包含這些修訂項目。

1.2.0 版本

2022 年 7 月 27 日

發布 androidx.compose.animation:animation:1.2.0androidx.compose.animation:animation-core:1.2.0androidx.compose.animation:animation-graphics:1.2.01.2.0 版包含以下修訂項目。

自 1.1.0 版以來的重要異動

  • 現在 Compose 動畫支援「開發人員選項」中的「動畫影片長度比例」設定。
  • 提供大量的全新實驗性加/減速曲線選項。
  • AnimatedImageVector 現在支援 repeatCountrepeatMode

1.2.0-rc03 版本

2022 年 6 月 29 日

發布 androidx.compose.animation:animation:1.2.0-rc03androidx.compose.animation:animation-core:1.2.0-rc03androidx.compose.animation:animation-graphics:1.2.0-rc031.2.0-rc03 版包含以下修訂項目。

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

1.2.0-rc02 版本

2022 年 6 月 22 日

發布 androidx.compose.animation:animation:1.2.0-rc02androidx.compose.animation:animation-core:1.2.0-rc02androidx.compose.animation:animation-graphics:1.2.0-rc021.2.0-rc02 版包含以下修訂項目。

修正錯誤

  • 移除加/減速功能的 ExperimentalEasingApi 註解 (Ied441)

1.2.0-rc01 版本

2022 年 6 月 15 日

發布 androidx.compose.animation:animation:1.2.0-rc01androidx.compose.animation:animation-core:1.2.0-rc01androidx.compose.animation:animation-graphics:1.2.0-rc011.2.0-rc01 版包含以下修訂項目。

API 變更

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

1.2.0-beta03 版本

2022 年 6 月 1 日

發布 androidx.compose.animation:animation:1.2.0-beta03androidx.compose.animation:animation-core:1.2.0-beta03androidx.compose.animation:animation-graphics:1.2.0-beta031.2.0-beta03 版包含以下修訂項目。

API 變更

  • 新增實驗性的動畫調節曲線功能 (I64a38)

1.2.0-beta02 版本

2022 年 5 月 18 日

發布 androidx.compose.animation:animation:1.2.0-beta02androidx.compose.animation:animation-core:1.2.0-beta02androidx.compose.animation:animation-graphics:1.2.0-beta021.2.0-beta02 版包含以下修訂項目。

1.2.0-beta01 版本

2022 年 5 月 11 日

發布 androidx.compose.animation:animation:1.2.0-beta01androidx.compose.animation:animation-core:1.2.0-beta01androidx.compose.animation:animation-graphics:1.2.0-beta011.2.0-beta01 版包含以下修訂項目。

  • 這是 1.2 版的第一個 Beta 版!自上次 Alpha 版本以來沒有任何異動。

1.2.0-alpha08 版本

2022 年 4 月 20 日

發布 androidx.compose.animation:animation:1.2.0-alpha08androidx.compose.animation:animation-core:1.2.0-alpha08androidx.compose.animation:animation-graphics:1.2.0-alpha081.2.0-alpha08 版包含以下修訂項目

1.2.0-alpha07 版本

2022 年 4 月 6 日

發布 androidx.compose.animation:animation:1.2.0-alpha07androidx.compose.animation:animation-core:1.2.0-alpha07androidx.compose.animation:animation-graphics:1.2.0-alpha071.2.0-alpha07 版本包含以下修訂項目

API 變更

1.2.0-alpha06 版本

2022 年 3 月 23 日

發布 androidx.compose.animation:animation:1.2.0-alpha06androidx.compose.animation:animation-core:1.2.0-alpha06androidx.compose.animation:animation-graphics:1.2.0-alpha061.2.0-alpha06 版本包含以下修訂項目

API 變更

  • 更新向量可繪項目剖析,以支援自動鏡像,只要目前的版面配置方向為 RTL 就會翻轉 VectorPainter 的內容。(I79cd9b/185760237)

修正錯誤

  • 更新向量圖形 API 以使用適當的可組合註解 @VectorComposable,而非 @UiComposable (I942bc)

1.2.0-alpha05 版本

2022 年 3 月 9 日

發布 androidx.compose.animation:animation:1.2.0-alpha05androidx.compose.animation:animation-core:1.2.0-alpha05androidx.compose.animation:animation-graphics:1.2.0-alpha051.2.0-alpha05 版本包含以下修訂項目

API 變更

  • 太棒了!現在 Compose 動畫支援「開發人員選項」中的「動畫影片長度比例」設定 (I5a4fcb/161675988)。

1.2.0-alpha04 版本

2022 年 2 月 23 日

發布 androidx.compose.animation:animation:1.2.0-alpha04androidx.compose.animation:animation-core:1.2.0-alpha04androidx.compose.animation:animation-graphics:1.2.0-alpha041.2.0-alpha04 版包含以下修訂項目。

1.2.0-alpha03 版本

2022 年 2 月 9 日

發布 androidx.compose.animation:animation:1.2.0-alpha03androidx.compose.animation:animation-core:1.2.0-alpha03androidx.compose.animation:animation-graphics:1.2.0-alpha031.2.0-alpha03 版本包含以下修訂項目

1.2.0-alpha02 版本

2022 年 1 月 26 日

發布 androidx.compose.animation:animation:1.2.0-alpha02androidx.compose.animation:animation-core:1.2.0-alpha02androidx.compose.animation:animation-graphics:1.2.0-alpha021.2.0-alpha02 版本包含以下修訂項目

1.2.0-alpha01 版本

2022 年 1 月 12 日

發布 androidx.compose.animation:animation:1.2.0-alpha01androidx.compose.animation:animation-core:1.2.0-alpha01androidx.compose.animation:animation-graphics:1.2.0-alpha011.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.1androidx.compose.animation:animation-core:1.1.1androidx.compose.animation:animation-graphics:1.1.11.1.1 版本包含以下修訂項目

修正錯誤

1.1.0 版本

2022 年 2 月 9 日

發布 androidx.compose.animation:animation:1.1.0androidx.compose.animation:animation-core:1.1.0androidx.compose.animation:animation-graphics:1.1.01.1.0 版本包含以下修訂項目

自 1.0.0 版本以來的重要異動

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

1.1.0-rc03 版本

2022 年 1 月 26 日

發布 androidx.compose.animation:animation:1.1.0-rc03androidx.compose.animation:animation-core:1.1.0-rc03androidx.compose.animation:animation-graphics:1.1.0-rc031.1.0-rc03 版本包含以下修訂項目

修正錯誤

  • 更新為可支援 Compose Material 1.1.0-rc03

1.1.0-rc01 版本

2021 年 12 月 15 日

發布 androidx.compose.animation:animation:1.1.0-rc01androidx.compose.animation:animation-core:1.1.0-rc011.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-beta04androidx.compose.animation:animation-core:1.1.0-beta04androidx.compose.animation:animation-graphics:1.1.0-beta041.1.0-beta04 版本包含以下修訂項目

新功能

  • 更新為可與 Kotlin 1.6.0 相容

1.1.0-beta03 版本

2021 年 11 月 17 日

發布 androidx.compose.animation:animation:1.1.0-beta03androidx.compose.animation:animation-core:1.1.0-beta03androidx.compose.animation:animation-graphics:1.1.0-beta031.1.0-beta03 版本包含以下修訂項目

API 變更

  • 新增修飾符 Modifier.onPlaced,藉此觀察位置變更。您可以根據觀察到的位置變更,對子項修飾詞的偏移進行額外變更 (I558fd)
  • 新增可支援 Crossfade 中 contentKey 的功能。動畫系統將使用 ContentKey 進行相等性檢查。因此,可以針對不同的狀態指定合適的 contentKey,藉此自訂狀態的差異比較。

    ContentKey 還可用作儲存及還原內容的按鍵。(I2e055b/197907070)

1.1.0-beta02 版本

2021 年 11 月 3 日

發布 androidx.compose.animation:animation:1.1.0-beta02androidx.compose.animation:animation-core:1.1.0-beta02androidx.compose.animation:animation-graphics:1.1.0-beta021.1.0-beta02 版本包含以下修訂項目

修正錯誤

  • 新增支援工具的 Animation API。具體來說,這類 API 可讓工具檢查轉換中的動畫和動畫設定 (I4116e)

1.1.0-beta01 版本

2021 年 10 月 27 日

發布 androidx.compose.animation:animation:1.1.0-beta01androidx.compose.animation:animation-core:1.1.0-beta01androidx.compose.animation:animation-graphics:1.1.0-beta011.1.0-beta01 版本包含以下修訂項目

API 變更

  • 新增支援工具的 Animation API。具體來說,這類 API 可讓工具檢查轉換中的動畫和動畫設定 (I4116e)

1.1.0-alpha06 版本

2021 年 10 月 13 日

發布 androidx.compose.animation:animation:1.1.0-alpha06androidx.compose.animation:animation-core:1.1.0-alpha06androidx.compose.animation:animation-graphics:1.1.0-alpha061.1.0-alpha06 版本包含以下修訂項目

1.1.0-alpha05 版本

2021 年 9 月 29 日

發布 androidx.compose.animation:animation:1.1.0-alpha05androidx.compose.animation:animation-core:1.1.0-alpha05androidx.compose.animation:animation-graphics:1.1.0-alpha051.1.0-alpha05 版本包含以下修訂項目

API 變更

  • EnterTransitionExitTransition 和部分 AnimatedVisibility API 現已穩定。MutableTransitionState.isIdle也不再處於實驗階段。(I5072d)

  • 破壞性變更:Enter/ExitTransition 工廠中的 lambda 已移至參數清單中的最後一個位置。(I5072d)

1.1.0-alpha04 版本

2021 年 9 月 15 日

發布 androidx.compose.animation:animation:1.1.0-alpha04androidx.compose.animation:animation-core:1.1.0-alpha04androidx.compose.animation:animation-graphics:1.1.0-alpha041.1.0-alpha04 版本包含以下修訂項目

1.1.0-alpha03 版本

2021 年 9 月 1 日

發布 androidx.compose.animation:animation:1.1.0-alpha03androidx.compose.animation:animation-core:1.1.0-alpha03androidx.compose.animation:animation-graphics:1.1.0-alpha031.1.0-alpha03 版本包含以下修訂項目

新功能

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

1.1.0-alpha02 版本

2021 年 8 月 18 日

發布 androidx.compose.animation:animation:1.1.0-alpha02androidx.compose.animation:animation-core:1.1.0-alpha02androidx.compose.animation:animation-graphics:1.1.0-alpha021.1.0-alpha02 版本包含以下修訂項目

API 變更

  • repeatable 和 infiniteRepeatable 現在可支援 StartOffset,作為動畫開始前延遲開始時間或快轉動畫的方式。此起始位移不會重複 (Ic679fb/195079908)
  • 新增的「進入/退出」轉場功能可縮放比例。這項功能可與其他類型的 Enter/ExitTransitions 搭配使用 (I372dab/191325593)。

1.1.0-alpha01 版本

2021 年 8 月 4 日

發布 androidx.compose.animation:animation:1.1.0-alpha01androidx.compose.animation:animation-core:1.1.0-alpha01androidx.compose.animation:animation-graphics:1.1.0-alpha011.1.0-alpha01 版本包含以下修訂項目

API 變更

  • AnimatedImageVector 和相關 API 現已加入新的 androidx.compose.animation:animation-graphics 模組 (I60873)

修正錯誤

1.0 版本

1.0.5 版本

2021 年 11 月 3 日

發布 androidx.compose.animation:animation:1.0.5androidx.compose.animation:animation-core:1.0.51.0.5 版本包含以下修訂項目

修正錯誤

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

1.0.4 版本

2021 年 10 月 13 日

發布 androidx.compose.animation:animation:1.0.4androidx.compose.animation:animation-core:1.0.41.0.4 版本包含以下修訂項目

依附元件更新

  • 已更新為依附 Kotlin 1.5.31

1.0.3 版本

2021 年 9 月 29 日

發布 androidx.compose.animation:animation:1.0.3androidx.compose.animation:animation-core:1.0.31.0.3 版本包含以下修訂項目。

依附元件更新

  • 已更新為依附 Kotlin 1.5.30

1.0.2 版本

2021 年 9 月 1 日

發布 androidx.compose.animation:animation:1.0.2androidx.compose.animation:animation-core: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.animation:animation:1.0.1androidx.compose.animation:animation-core:1.0.11.0.1 版本包含以下修訂項目

依附元件更新

  • 已更新為依附 Kotlin 1.5.21

1.0.0 版本

2021 年 7 月 28 日

發布 androidx.compose.animation:animation:1.0.0androidx.compose.animation:animation-core: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.animation:animation:1.0.0-rc02androidx.compose.animation:animation-core:1.0.0-rc021.0.0-rc02 版本包含以下修訂項目

1.0.0-rc01 版本

2021 年 7 月 1 日

發布 androidx.compose.animation:animation:1.0.0-rc01androidx.compose.animation:animation-core:1.0.0-rc011.0.0-rc01 版本包含以下修訂項目

修正錯誤

1.0.0-beta09 版本

2021 年 6 月 16 日

發布 androidx.compose.animation:animation:1.0.0-beta09androidx.compose.animation:animation-core:1.0.0-beta091.0.0-beta09 版本包含以下修訂項目

API 變更

  • 新增 AnimatedContent Composable。在進入新目標內容且退出初始內容過程中,利用可自訂的 ContentTransform 來管理其內容變更。可以使用進出轉場的不同組合來自訂外觀和風格。在內容轉換過程中,AnimatedContent 會根據傳入內容自動調整動畫內容的大小。(I2c3df)
  • 已移除 ManualFrameClock。如需控制動畫,請改用 composeTestRule.mainClock。(I3c3e8b/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>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 構件中。接著,系統會在建構包含這些構件的應用程式時,將這些規則合併起來,然後使用合併後的規則建立該應用程式專屬的精簡二進位 ART 設定檔。當該應用程式安裝在裝置上時,ART 便可利用這個設定檔預先編譯特定應用程式子集,藉此提高應用程式效能,特別是首次執行的效能。請注意,這項設定不會對可偵錯的應用程式產生任何影響。

1.0.0-beta08 版本

2021 年 6 月 2 日

發布 androidx.compose.animation:animation:1.0.0-beta08androidx.compose.animation:animation-core:1.0.0-beta081.0.0-beta08 版本包含以下修訂項目

修正錯誤

  • detectDragGesuresdetectVerticalGesturesdetectHorizontalGestures 現在會自動使用位置變更,因此不必在 onDrag 回呼中呼叫 change.consumePositionChange (I42fc4b/185096350b/187320697)
  • 變更 Modifier.onGloballyPositioned(),系統會回報此修飾符在修飾符鏈結中的座標,而非套用所有修飾符後的版面配置座標。也就是說,修飾詞的排序現在會影響系統回報的座標 (Ieb67db/177926591)。

1.0.0-beta07 版本

2021 年 5 月 18 日

發布 androidx.compose.animation:animation:1.0.0-beta07androidx.compose.animation:animation-core:1.0.0-beta071.0.0-beta07 版本包含以下修訂項目

API 變更

  • 新增的 AnimatedVisibility API 支援 MutableTransitionState 中指定的瀏覽權限。這個功能還可讓您透過 currentStateisIdleAnimatedVisibility 之外觀察動畫狀態。
    • 新增的下層轉換功能可在「Transition」(轉場) 中使用
    • 使用 AnimationScope.transition 支援 AnimatedVisibility 中的自訂退出/進入轉場動畫
    • 新增 animateEnterExit 修飾元,能為使用者提供所有下層的 AnimatedVisibility
    • 已淘汰使用 initiallyVisible 參數的 AnimatedVisibility API (I702f3)

1.0.0-beta06 版本

2021 年 5 月 5 日

發布 androidx.compose.animation:animation:1.0.0-beta06androidx.compose.animation:animation-core:1.0.0-beta061.0.0-beta06 版本包含以下修訂項目

1.0.0-beta05 版本

2021 年 4 月 21 日

發布 androidx.compose.animation:animation:1.0.0-beta05androidx.compose.animation:animation-core:1.0.0-beta051.0.0-beta05 版本包含以下修訂項目

修正錯誤

  • ui-test-manifest 和 ui-tooling-data 中的 AndroidManifest 檔案現在與 Android 12 相容 (I6f9deb/184718994)

1.0.0-beta04 版本

2021 年 4 月 7 日

發布 androidx.compose.animation:animation:1.0.0-beta04androidx.compose.animation:animation-core:1.0.0-beta041.0.0-beta04 版本包含以下修訂項目

API 變更

  • 移除 RowScopeColumnScopeBoxScopeBoxWithConstraintsScope 的公開執行個體。(I4e83eb/181869067)

1.0.0-beta03 版本

2021 年 3 月 24 日

發布 androidx.compose.animation:animation:1.0.0-beta03androidx.compose.animation:animation-core:1.0.0-beta031.0.0-beta03 版本包含以下修訂項目

1.0.0-beta02 版本

2021 年 3 月 10 日

發布 androidx.compose.animation:animation:1.0.0-beta02androidx.compose.animation:animation-core:1.0.0-beta021.0.0-beta02 版本包含以下修訂項目

修正錯誤

1.0.0-beta01 版本

2021 年 2 月 24 日

發布 androidx.compose.animation:animation:1.0.0-beta01androidx.compose.animation:animation-core:1.0.0-beta011.0.0-beta01 版本包含以下修訂項目

這是 Compose 1.0.0 Beta 版發行的第一個版本。

API 變更

  • 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)
  • smoothScrollBy 和 scrollBy 方法的套件變更為 androidx.compose.foundation.gestures.* (I3f7c1b/175294473)
  • 已重新命名 Size 修飾元。將 Modifier.width/height/size 重新命名為 requiredWidth/requiredHeight/requiredSize。Modifier.PreferredWidth/PreferredHeight/recommendedSize 已重新命名為 width/height/size (I5b414)
  • 螢幕方向已移至基礎套件。VelocirtTracker 已從 ui.gesture 移至 ui.input.pointer (Iff4a8b/175294473)
  • 移除了 AnimationClockObservable 和子類別以及 AnimatedFloat (Icde52b/177457083)
  • Modifier.draggable 現在接受 DraggableState,而非簡單的 lambda。您可以透過 rememberDraggableState { delta -> } 建立狀態,以取得與之前相同的行為 (Ica70fb/175294473)
  • 移除了 animate、animatedValue、AnimatedValue API (If27bcb/177457083)
  • 移除了 AnimationEndReason.Interrupted。如果動畫中斷,系統將擲回 CancelException (I2cbbcb/179695417)
  • 移除了 TargetAnimation API。(If47d1b/177457083)

1.0.0-alpha12 版本

2021 年 2 月 10 日

發布 androidx.compose.animation:animation:1.0.0-alpha12androidx.compose.animation:animation-core:1.0.0-alpha121.0.0-alpha12 版本包含以下修訂項目

API 變更

  • Modifier.pointerInput 現要求記憶按鍵,藉此指出指標輸入內容偵測協同程式何時應重新啟動,以建立新的依附元件。(I849cd)
  • 邊界已重新命名為 DpRect (I4b32a)
  • 在整個動畫系統中,將 AnimationSpec 的參數名稱統一為 animationSpec。同時,限制 Enter/ExitMigration,使其接受 FiniteAnimationSpec。(Ie47c5b/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)) } (Ib4c26b/177338004)
  • 更新了 Crossfade 的方法簽章,使其與動畫系統的其餘部分更加一致。(Ib05edb/177457083)
  • 將 RememberSaveInstanceState() 重新命名為 RememberSaveable() 並移至 androidx.compose. runtime.saveable package。(I1366eb/177338004)
  • RestorableStateHolder 已重新命名為 SaveableStateHolder,並移至 androidx.compose.runtime.saveable 套件。內部方法 RestorableStateProvider 已重新命名為 SaveableStateProvider。Generic 類型已移除,可直接將 Any 作為索引鍵傳遞。不再需要使用實驗性註解 (I0902eb/174598702)
  • 更新了 Modifier.animateContentSize API,使其與動畫系統的其餘部分一致。(I0bf75b/177457083)
  • AnimatedValue/Float 現已淘汰。請改用 Animatable (I71345b/177457083)
  • tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 和 pressIndicaitonGestureFilter 已淘汰,請改用 Modifier.clickable 或 Modifier.pointerInput 搭配 DetectionTapTouchs 函式 (I6baf9b/175294473)
  • 推出將套用於無限動畫的 InfiniteAnimationPolicy 協同程式結構定義元素。 根據預設,系統不會安裝任何政策,除非使用 ComposeTestRule 執行測試 (I50ec4b/151940543)
  • Destructuring 和 copy() 方法在幾個類別中極少使用,現已將其從中移除。(I26702b/178659281)
  • 動畫中的播放時間現已統一為奈秒 (If776a)
  • Compose:runtime-fulfillment 構件現已淘汰。 目前可在 compose:runtime 中找到 MonotonicFrameClock,而 AndroidUiDispatcher 則可在 compose:ui 中找到 (Ib5c36)。
  • 新增了 Animation.isInfiniteVectorizedAnimationSpec.isInfinite,可示意動畫是否為無限。這可在導入動畫時,用於對這類動畫進行特殊處理。例如顯示特殊的「剩餘時間」訊息,或是在測試期間取消動畫,避免無限期地等待閒置時間。(Iebb05b/151940543)
  • 使用 Long 而不是 Uptime 作為動畫時間類型 (Ie3aa7b/177420019)

1.0.0-alpha11 版本

2021 年 1 月 28 日

發布 androidx.compose.animation:animation:1.0.0-alpha11androidx.compose.animation:animation-core:1.0.0-alpha111.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 毫秒,這個步驟移除針對這些類別的指標輸入內容的依附元件。(Ia33b2b/175142755b/177420019)
  • 您現在可以在組合項外建立可點選、可切換和可選取的項目 (I0a130b/172938345b/175294473)
  • 加/減速已變更為功能介面 (Ib14e5)
  • 為 LazyColumn/LazyRow/LazyVerticalGrid 的範圍新增 items(count: Int) 工廠方法。items(items: List)itemsIndexed(items: List) 現已成為擴充功能函式,因此在使用時必須手動匯入。陣列 (Arrays) 的新擴充功能多載:items(items: Array) 和 itemsIndexed(Array) (I803fcb/175562574)
  • 運用 TestCoroutineDispatcher 進行測試 (I532b6)
  • 移除 PointerInputData 並修改 PointerInputChange,為其提供所有 PointerInputData 的欄位。將 PointerInputEvent 和 PointerInputEventData 改為內部使用,因為這些並未用於任何公用 API (Ifff97b/175142755)

1.0.0-alpha10 版本

2021 年 1 月 13 日

發布 androidx.compose.animation:animation:1.0.0-alpha10androidx.compose.animation:animation-core:1.0.0-alpha101.0.0-alpha10 版本包含以下修訂項目

API 變更

  • 已將 Velocity 修改成為具有元件部分和數學運算。(Ib0447)
  • @ExperimentalTesting 重新命名為 @ExperimentalTestApi,以便與類似的實驗 API 註解保持一致 (Ia4502b/171464963)
  • 將 Position 重新命名為 DpOffset 並移除了 getDistance() (Ib2dfd)
  • 移除 Any.identityHashCode() 公用 API (I025d7)

修正錯誤

  • 新增以協同程式為主的 API Animatable,可確保動畫之間的互斥性。新增 DecayAnimationSpec,可支援多維度衰減動畫 (I820f2b/168014930)
  • animate() 現已更換為 animateAsState(),後者會傳回 State<T> 而非 T。這樣可以改善效能,因為系統會將無效範圍縮小到讀取「狀態」值的位置 (Ib179e)

1.0.0-alpha09 版本

2020 年 12 月 16 日

發布 androidx.compose.animation:animation:1.0.0-alpha09androidx.compose.animation:animation-core:1.0.0-alpha091.0.0-alpha09 版本包含以下修訂項目

API 變更

  • 將 Dp.VectorConverter、Position.VectorConverter 等移到了 animation-core,並淘汰了舊的 VectorConveters (If0c4b)
  • 推出了一組全新的「Transition」(轉場) API,不僅更易於使用,也支援動態新增的動畫和動態計算的動畫目標。為了容易與以TransformerDefinition 為主的 API 有所區分,我們將這一組 API 標示為實驗性。(Ia7fe3)

修正錯誤

  • 現在,偏移修飾符中的 Lambda 會傳回 IntOffset,而非 Float (Ic9ee5b/174137212b/174146755)
  • 淘汰了 LazyColumnFor、LazyRowFor、LazyColumnForIndexed 和 LazyRowForIndexed。請改用 LazyColumn 和 LazyRow (I5b48c)
  • 為暫停指標輸入 API,我們將 HandlePointerInputScope 重新命名為 AwaitPointerEventScope,並將 handlePointerInput() 重新命名為 awaitPointerEventScope() (Idf0a1b/175142755)
  • 新增用於建立 InfiniteRepeatableSpec 的 infiniteRepeatable 函式 (I668e5)
  • 移除 ExperimentalPointerInput 註解 (Ia7a24)

1.0.0-alpha08 版本

2020 年 12 月 2 日

發布 androidx.compose.animation:animation:1.0.0-alpha08androidx.compose.animation:animation-core:1.0.0-alpha081.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
    • (Ie9d02b/172562222)
  • 暫時新增選項,讓 MonotonicFrameClock 執行 TestAnimationClock (I1403bb/173402197)。

修正錯誤

  • 將 Modifier.drawLayer 重新命名為 Modifier.graphicsLayer,並且根據 API 委員會的意見回饋,將相關類別更新為 GraphicsLayer (I0bd29b/173834241)
  • 新增了 Modifier.scale/rotate API,作為 DrawLayer 的便捷 API。
    • 將 Modifier.drawOpacity 重新命名為 Modifier.alpha
    • 將 Modifier.drawShadow 重新命名為 Modifier.shadow (I264cab/173208140)
  • 將 PointerInputData 的運作時間與位置欄位設為不可為空值 (Id468a)
  • shiftPx 修飾元已重新命名為 offset。且現已改用 lambda 參數,而不是 State (Ic3021b/173594846)
  • 新增可在協同程式中執行動畫的 API (Ied662)
  • 淘汰在名稱後綴使用 Ambient 的 Ambient,並按照其他 Ambient 和 Compose API 準則的規範,改成在名稱前綴使用 Ambient 的新屬性。(I33440)
  • 測試中的時間控制項 (TestAnimationClock 及其運用) 現已處於實驗階段 (I6ef86b/171378521)
  • 移除舊的 ui-test 模組及其虛設常式 (I3a7cb)
  • RestorableStateHolder.withRestorableState 函式已重新命名為 RestorableStateProvider (I66640)
  • 更新了 Alignment 介面,並使其可正常運作 (I46a07b/172311734)

1.0.0-alpha07 版本

2020 年 11 月 11 日

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

修正錯誤

  • 淘汰了 AmbientTextStyle、ProvideTextStyle 和 AmbientContentColor 基礎。請改用 Material 程式庫中可提供的新版本。對於非 Material 應用程式,應改為建立自己的設計系統,指定可以在自己的元件中使用的主題設定環境 (I74accb/172067770)
  • 淘汰了 foundation.Text,改用 material.Text。如需瞭解未使用主題來源值的非預設立場基本文字 API,請參閱 androidx.compose.foundation.BasicText (If64cb)
  • 將 MeasureResult 從 MeasureScope 中移出。(Ibf96db/171184002)
  • 將數個版面配置相關符號從 androidx.compose.ui 移至 androidx.compose.layout.ui (I0fa98b/170475424)

1.0.0-alpha06 版本

2020 年 10 月 28 日

發布 androidx.compose.animation:animation:1.0.0-alpha06androidx.compose.animation:animation-core:1.0.0-alpha061.0.0-alpha06 版本包含以下修訂項目

API 變更

  • 在 ComposeTestRule 中啟用轉場功能,並從 ComposeTestRule 中移除啟用閃爍游標的選項 (If0de3)

1.0.0-alpha05 版本

2020 年 10 月 14 日

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

API 變更

  • 新增了「Interaction」(動畫) 介面和子類別:這些類別會儲存動畫的開始和結束條件,因此只能透過播放時間查詢值和速度 (Ie95bdb/163329867)

修正錯誤

  • 將 OnPositionedModifier 重新命名為 OnGloballyPositionedModifier,並將 onPositioned() 重新命名為 onGloballyPositioned() (I587e8b/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-alpha04androidx.compose.animation:animation-core:1.0.0-alpha041.0.0-alpha04 版本包含以下修訂項目

API 變更

  • 為 rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled 和 textInputServiceFactory 加上 @VisibleForTesting 註解,將其設為內部 API 並隱藏其 kdoc (I554ebb/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 擴充功能函式移轉為屬性
    • (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)
  • 我們已阻止靜態匯入版面配置範圍的內容 (例如 RowScopes 中的 alignWithSiblings)。請改用明確範圍替代項:with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) } (I216beb/166760797)

1.0.0-alpha03 版本

2020 年 9 月 16 日

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

修正錯誤

  • 將在版面配置 API 中使用的 gravity 一致重新命名為 align 或 alignment。(I2421ab/164077038)

1.0.0-alpha02 版本

2020 年 9 月 2 日

發布 androidx.compose.animation:animation:1.0.0-alpha02androidx.compose.animation:animation-core:1.0.0-alpha021.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")
        }
    }
    

    (I0a85bb/161247083)

修正錯誤

  • 淘汰 onPreCommit。onCommit 的行為現在與 onPreCommit 相同。

    現在,onCommit 和 onActive 會在已提交組合變更的同一個 Choreographer 畫面中執行,而不是在下一個 Choreographer 畫面開始時執行。(I70403)

1.0.0-alpha01 版本

2020 年 8 月 26 日

發布 androidx.compose.animation:animation:1.0.0-alpha01androidx.compose.animation:animation-core:1.0.0-alpha011.0.0-alpha01 版本包含以下修訂項目。

0.1.0-dev 版本

0.1.0-dev17 版本

2020 年 8 月 19 日

發布 androidx.compose.animation:animation:0.1.0-dev17androidx.compose.animation:animation-core:0.1.0-dev170.1.0-dev17 版本包含以下修訂項目

新功能

API 變更

  • Offset 現在是內嵌類別 (Iaec70)
  • IntOffset 現在是內嵌類別 (Iac0bf)
  • IntSize 現已成為內嵌類別 (I2bf42)
  • AnimatedVisibilty 可組合項為子項內容的顯現和消失加入動畫效果。

    推出 EnterTransition 和 ExitTransition,可與 AnimatedVisibilty 可組合項搭配使用,提供 3 種不同類型的顯現和消失動畫效果:淡出、滑動以及放大/縮小內容。可以將不同類型的動畫組合在一起,以呈現更獨樹一幟的外觀和風格。(Idda11)

  • 淘汰了 PxBounds,改用 Rect。更新 PxBounds 與 Rect 搭配使用的方式,並新增適當的淘汰/取代備註,以便協助完成遷移作業 (I37038b/162627058)

修正錯誤

  • PlacementScope.placeAbsolute() 重新命名為 PlacementScope.place(),而原先的 PlacementScope.place() 則重新命名為 PlacementScope.placeRelative()。因此,PlacementScope.place() 方法不再以由右至左的結構定義自動鏡射位置。如果需要這個方法,請改用 PlacementScope.placeRelative() (I873acb/162916675)
  • 淘汰 state { ... } 可組合項,改為明確呼叫 remember { mutableStateOf(...) } 以求一目瞭然。 這樣可以減少管理狀態所需的整體 API 介面和概念數量,且符合類別屬性委派作業的 by mutableStateOf() 模式。(Ia5727)

0.1.0-dev16 版本

2020 年 8 月 5 日

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

API 變更

  • 現在,可以透過 Foo.VectorConverter 存取用於轉換內建裝置的內建向量圖形轉換工具。例如 Dp.VectorConverterColor.VectorConverterFloat.VectorConverter 等 (I3e273)
  • 支援在 Modifier.animateContentSize() 中使用結束事件監聽器,當尺寸改變的動畫播放完畢時,事件監聽器就會收到通知,當中包括動畫的開始/結束尺寸 (I277b2)
  • 新增 animateContentSize 修飾元,可為其子項修飾元的版面配置大小變化加入動畫效果 (Ieffdc)
  • 新增 MonotonicFrameAnimationClock,讓您將 MonotonicFrameClock 當做 AnimationClockObservable 使用,為協同程式型新版時鐘與仍使用回呼型舊版時鐘的 API 消除兩者之間的差異。

    ManualAnimationClockMonotonicFrameClock 等效函式現在是 ManualFrameClock (I111c7b/161247083)。

修正錯誤

  • 更新了支援版面配置由右至左的 API。新增了 LayoutDirectionAmbient,可用於讀取及變更版面配置方向。移除了 Modifier.rtl 和 Modifier.ltr (I080b3)
  • 要求為 transitionDefinition 明確指定 T 類型。(I1aded)
  • foundation.shape.corner 套件已扁平化為 foundation.share (I46491b/161887429)
  • 淘汰 Modifier.plus,並改用 Modifier.then。「Then」可以更明確地指出先後順序,同時也會禁止輸入會破壞鏈結且難以解讀的 Modifier.padding().background() + anotherModifier (Iedd58b/161529964)
  • 將 Modifier.drawBackground 重新命名為 Modifier.background (I13677)

0.1.0-dev15 版本

2020 年 7 月 22 日

發布 androidx.compose.animation:animation:0.1.0-dev15androidx.compose.animation:animation-core:0.1.0-dev150.1.0-dev15 版本包含以下修訂項目。

依附元件更新

  • 如要使用 0.1.0-dev15 版本的 Compose,需依據上述的宣告依附元件章節中出示的新程式碼片段來更新依附元件。

API 變更

  • 改變了 Transition API,用於回傳 TransitionState,而不是將 TransitionState 傳遞至子項。這項改變讓 API 與 animate() API 更加一致。(I24e38)
  • 新增了適用於 Crossfade 的輔助鍵參數 (I87cfeb/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> 說明文件 (I4c7eeb/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 現在可採用空值做為初始值 (Iad6a4b/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() 方法 (Ibacedb/152919067)
  • runOnIdleComposerunOnUiThread 現已成為全域函式,而非 ComposeTestRule 上的方法。(Icbe8f)
  • [Mutable]State 屬性委派運算子已移至擴充功能,以支援 Kotlin 1.4 屬性委派最佳化。呼叫端必須新增匯入才能繼續使用 by state { ... }by mutableStateOf(...) (I5312c)
  • ColoredRect 已淘汰,請改用 Box(Modifier.preferredSize(width, height).drawBackground(color)) (I499fab/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 這個隨附物件方法,改用執行個體複製方法 (Ife290b/159905651)
  • 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)