Compose Animation

Jetpack Compose アプリ内でアニメーションを作成して、ユーザー エクスペリエンスを拡充します。
最新の更新 現在の安定版リリース 次のリリース候補 ベータ版リリース アルファ版リリース
2021 年 7 月 14 日 - 1.0.0-rc02 - -

構造

Compose は、androidx 内の 6 つの Maven グループ ID を組み合わせたものです。各グループには対象となる機能のサブセットが含まれており、それぞれに固有のリリースノートがあります。

次の表に、各グループの説明と、それぞれのリリースノートのリンクを示します。

グループ説明
compose.animationJetpack Compose アプリ内でアニメーションを作成して、ユーザー エクスペリエンスを拡充します。
compose.compiler@Composable 関数を変換し、Kotlin コンパイラ プラグインで最適化を有効にします。
compose.foundationすぐに使用できるビルディング ブロックで Jetpack Compose アプリを作成し、基盤を拡張して独自のデザイン システム要素を構築します。
compose.materialすぐに使用できるマテリアル デザイン コンポーネントで Jetpack Compose UI を構築します。Compose の上位レベルのエントリ ポイントであり、www.material.io のガイドラインと適合するコンポーネントを提供するように設計されています。
compose.runtimeCompose のプログラミング モデルと状態管理の基本ビルディング ブロックと、Compose コンパイラ プラグインがターゲットとするコアランタイム。
compose.uiレイアウト、描画、入力などのデバイス操作に必要な Compose UI の基本コンポーネント。

依存関係の宣言

Compose への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

Groovy

dependencies {
    implementation "androidx.compose.animation:animation:1.0.0-rc01"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.5.10"
        kotlinCompilerExtensionVersion "1.0.0-rc01"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.animation:animation:1.0.0-rc01")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerVersion = "1.5.10"
        kotlinCompilerExtensionVersion = "1.0.0-rc01"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.0.0

バージョン 1.0.0-rc02

2021 年 7 月 14 日

androidx.compose.animation:animation:1.0.0-rc02androidx.compose.animation:animation-core:1.0.0-rc02 がリリースされました。バージョン 1.0.0-rc02 に含まれる commit については、こちらをご覧ください

バージョン 1.0.0-rc01

2021 年 7 月 1 日

androidx.compose.animation:animation:1.0.0-rc01androidx.compose.animation:animation-core:1.0.0-rc01 がリリースされました。バージョン 1.0.0-rc01 に含まれる commit については、こちらをご覧ください

バグの修正

  • InfiniteAnimationPolicyandroidx.compose.ui:ui に移動しました(I5eb09b/160602714

バージョン 1.0.0-beta09

2021 年 6 月 16 日

androidx.compose.animation:animation:1.0.0-beta09androidx.compose.animation:animation-core:1.0.0-beta09 がリリースされました。バージョン 1.0.0-beta09 に含まれるコミットについては、こちらをご覧ください

API の変更

  • 新しい AnimatedContent Composable は、新しいターゲット コンテンツが開始し初期のコンテンツが終了すると、カスタマイズ可能な ContentTransform を使用してコンテンツの変更を管理します。開始遷移と終了遷移をさまざまに組み合わせて、カスタマイズしたデザインを作成できます。コンテンツ変換の一部として、AnimatedContent は受信コンテンツに合わせてサイズを自動的に切り替えます。(I2c3df
  • ManualFrameClock を削除しました。アニメーションを制御する必要がある場合は、代わりに composeTestRule.mainClock を使用してください。(I3c3e8b/189951065

プロファイル ルールの追加

このリリースでは、以下の compose モジュールにプロファイル ルールが追加されました。(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 で指定します。このファイルでは、1 行に 1 つずつルールを指定します。ここでのルールは、ライブラリ内のメソッドまたはクラスとマッチングするパターンです。ルールの構文は、人が読める ART プロファイル形式のスーパーセットで、adb shell profman --dump-classes-and-methods ... を使用する際に使用されます。ルールは、メソッドまたはクラスをターゲットとする 2 つの形式のいずれかを使用します。

  • メソッドルールのパターンは次のようになります。

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • クラスルールのパターンは次のようになります。

    <CLASS_DESCRIPTOR>
    
  • 上記の <FLAGS> は、このメソッドに「ホット」、「起動」、または「起動後」のフラグを付けるかどうかを示す文字 HSP(1 つまたは複数)です。

  • <CLASS_DESCRIPTOR> は、ターゲットとなるメソッドが属するクラスの記述子です。たとえば、クラス androidx.compose.runtime.SlotTable の記述子は、Landroidx/compose/runtime/SlotTable; です。

  • <METHOD_SIGNATURE> はメソッドのシグネチャで、メソッドの名前、パラメータの型、戻り値の型を含みます。たとえば、LayoutNode のメソッド fun isPlaced(): Boolean のシグネチャは、isPlaced()Z です。

  • 1 つのルールに複数のメソッドまたはクラスを含める場合は、これらのパターンにワイルドカード(***?)を使用できます。

ルールの機能

  • フラグ H が付いているメソッドは、このメソッドが「ホット」メソッドであり、事前コンパイルが必要であることを示します。

  • S フラグが付いているメソッドは、このメソッドが起動時に呼び出されるメソッドであり、コンパイルのコストと起動時にメソッドを解釈するコストを回避するために事前コンパイルが必要であることを示します。

  • P フラグが付いているメソッドは、このメソッドが起動後に呼び出されることを示します。

  • このファイルに存在するクラスは、このクラスが起動時に使用されるクラスであり、クラス読み込みのコストを回避するためにヒープで事前割り当てする必要があることを示しています。

ルールの仕組み

  • ライブラリは、AAR アーティファクトにパッケージするルールを定義できます。それらのアーティファクトを含む APK がビルドされると、ルールが結合されます。結合されたルールは、APK に固有のコンパクト バイナリ ART プロファイルをビルドするために使用されます。ART は、アプリの特定のサブセットを事前コンパイルするために、APK がデバイスにインストールされたときにこのプロファイルを利用して、アプリのパフォーマンス(特に初回実行時)を改善できます。なお、これはデバッグ可能なアプリには影響しません。

バージョン 1.0.0-beta08

2021 年 6 月 2 日

androidx.compose.animation:animation:1.0.0-beta08androidx.compose.animation:animation-core:1.0.0-beta08 がリリースされました。バージョン 1.0.0-beta08 に含まれる commit については、こちらをご覧ください

バグの修正

  • 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-beta07 がリリースされました。バージョン 1.0.0-beta07 に含まれる commit については、こちらをご覧ください

API の変更

  • MutableTransitionState で指定される可視設定をサポートする新しい AnimatedVisibility API。これにより、currentStateisIdle から AnimatedVisibility の外部でアニメーションの状態を監視できます。
    • Transition における新しい子遷移のサポート
    • AnimationScope.transition を使用して AnimatedVisibility 内のカスタム exit/enter 遷移アニメーションをサポート
    • AnimatedVisibility のすべての子からアクセスできる animateEnterExit 修飾子を追加
    • 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-beta06 がリリースされました。バージョン 1.0.0-beta06 に含まれる commit については、こちらをご覧ください

バージョン 1.0.0-beta05

2021 年 4 月 21 日

androidx.compose.animation:animation:1.0.0-beta05androidx.compose.animation:animation-core:1.0.0-beta05 がリリースされました。バージョン 1.0.0-beta05 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 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-beta04 がリリースされました。バージョン 1.0.0-beta04 に含まれる commit については、こちらをご覧ください

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-beta03 がリリースされました。バージョン 1.0.0-beta03 に含まれる commit については、こちらをご覧ください

バージョン 1.0.0-beta02

2021 年 3 月 10 日

androidx.compose.animation:animation:1.0.0-beta02androidx.compose.animation:animation-core:1.0.0-beta02 がリリースされました。バージョン 1.0.0-beta02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 試験運用版 API の一般使用に対する制限を適用します(I6aa29b/174531520

バージョン 1.0.0-beta01

2021 年 2 月 24 日

androidx.compose.animation:animation:1.0.0-beta01androidx.compose.animation:animation-core:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください。

これは、Compose 1.0.0 ベータ版の最初のリリースです。

API の変更

  • InteractionState[Mutable]InteractionSource に置き換えました。
    • インターフェースは、操作イベントを送受信する役割を担います。
    • interactionState = remember { InteractionState() }ButtonModifier.clickable() などのコンポーネントに渡す代わりに、interactionSource = remember { MutableInteractionSource() } を使用します。
    • Interaction.Pressed in interactionState ではなく、InteractionSource で拡張関数(InteractionSource.collectIsPressedAsState() など)を使用する必要があります。
    • 複雑なユースケースの場合は、InteractionSource.interactions を使用して操作フローを確認できます。詳しくは、InteractionSource のドキュメントとサンプルをご覧ください。
    • I85965b/152525426b/171913923b/171710801b/174852378
  • smoothScrollBy メソッドと scrollBy メソッドのパッケージを androidx.compose.foundation.gestures.* に変更しました(I3f7c1b/175294473
  • サイズ修飾子の名前を変更しました。Modifier.width/height/size の名前を requiredWidth/requiredHeight/requiredSize に変更しました。Modifier.preferredWidth/preferredHeight/preferredSize の名前を width/height/size に変更しました。(I5b414
  • Orientation を foundation パッケージに移動しました。VelocirtTracker を ui.gesture から ui.input.pointer に移動しました。(Iff4a8b/175294473
  • AnimationClockObservable とサブクラスを削除しました。AnimatedFloat を削除しました。(Icde52b/177457083
  • Modifier.draggable は、単純なラムダの代わりに、DraggableState を受け入れるようになりました。rememberDraggableState { delta -> } を介して状態を作成し、以前と同じ動作を実現できます(Ica70fb/175294473)。
  • animate、animatedValue、AnimatedValue API を削除しました(If27bcb/177457083
  • AnimationEndReason.Interruped を削除しました。アニメーションが中断されると、CancellationException がスローされるようになります。(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-alpha12 がリリースされました。バージョン 1.0.0-alpha12 に含まれる commit については、こちらをご覧ください

API の変更

  • Modifier.pointerInput は、ポインタ入力検出コルーチンを新しい依存関係で再開するタイミングを示す remember キーを必要とするようになりました。(I849cd
  • Bounds の名前を DpRect に変更しました。(I4b32a
  • AnimationSpec のパラメータ名を、アニメーション システム全体で animationSpec に統一しました。また、EnterTransition と ExitTransition については、FiniteAnimationSpec を受け入れるようにしています。(Ie47c5b/177457083
  • Animatable.snapTo と Animatable.stop が suspend 関数になりました。(If4288
  • 以前 state { 0 } composable を削除して remember { mutableStateOf(0) } のような使い方を推奨するようになったのと同様、savedInstanceState { 0 } composable を削除する予定です。代わりに rememberSaveable { mutableStateOf(0) } の使用を推奨します。これにより、MutableState 内で使用されるタイプが Bundle に保存可能な場合は、自動的に保存および復元が行われるようになります。これまでカスタムのセーバー オブジェクトを渡していた場合は、stateSaver パラメータを含む rememberSaveable の新しいオーバーロードを使用する必要があります。使い方は、val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } のようになります。(Ib4c26b/177338004
  • アニメーション システムの他の部分との一貫性を高めるため、Crossfade のメソッド シグネチャを更新しました。(Ib05edb/177457083
  • rememberSavedInstanceState() の名前を rememberSaveable() に変更して androidx.compose.runtime.saveable パッケージに移動しました。(I1366eb/177338004
  • RestorableStateHolder の名前を SaveableStateHolder に変更して androidx.compose.runtime.saveable パッケージに移動しました。内部メソッド RestorableStateProvider の名前を SaveableStateProvider に変更しました。汎用型が削除されたため、Any をキーとして渡すことができます。試験運用版のアノテーションは不要になりました。(I0902eb/174598702
  • アニメーション システムの他の部分と一貫性を持たせるため、Modifier.animateContentSize API を更新しました。(I0bf75b/177457083
  • AnimatedValue/Float は非推奨になりました。代わりに Animatable を使用してください。(I71345b/177457083
  • tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter、pressIndicaitonGestureFilter は非推奨になりました。代わりに、Modifier.clickable または Modifier.pointerInput を detectTapGestures 関数とともに使用してください。(I6baf9b/175294473
  • 無限アニメーションに適用される InfiniteAnimationPolicy コルーチン コンテキスト要素を導入しました。ComposeTestRule を使用してテストを実行する場合を除き、デフォルトではポリシーはインストールされません。(I50ec4b/151940543
  • destructuring と copy() メソッドを、これらをほとんど使用しないクラスから削除しました。(I26702b/178659281
  • アニメーションの再生時間をナノ秒単位に統一しました。(If776a
  • compose:runtime-dispatch アーティファクトは非推奨になりました。 MonotonicFrameClock は compose:runtime に、また AndroidUiDispatcher は compose:ui に含まれるようになりました。(Ib5c36
  • アニメーションが無限であるかどうかを示す Animation.isInfiniteVectorizedAnimationSpec.isInfinite を追加しました。これは、アニメーションの実装において、無限アニメーションに特別な処理を行う場合に利用できます。たとえば、「残り時間」の表示を通常と変えたり、テストでアイドル状態を待ち続けることを避けるためにアニメーションをキャンセルしたりできます。(Iebb05b/151940543
  • アニメーション時間の型には、Uptime ではなく Long を使用します。(Ie3aa7b/177420019

バージョン 1.0.0-alpha11

2021 年 1 月 28 日

androidx.compose.animation:animation:1.0.0-alpha11androidx.compose.animation:animation-core:1.0.0-alpha11 がリリースされました。バージョン 1.0.0-alpha11 に含まれる commit については、こちらをご覧ください

API の変更

  • TransitionDefinition ベースの Transition のサポートが終了しました。(I0ac57
  • ツールに表示される Transition と子のアニメーション用のラベル フィールドを追加しました。(I619fb
  • animateAsState が animateFooAsState になりました。ここで Foo はアニメーション化される変数の型です(Float、Dp、Offset など)。(Ie7e25
  • 子のアニメーションをいくつでも実行できる、新しい InfiniteTransition。(I1da81
  • Material のステートフル パラメータ インターフェースを変更して、State<T> を返す @Composable 関数を提供するようにしました。Animatable.asState() を追加しました。これにより、Animatable から State への変換が簡単にできるようになりました。また、animateElevation を、Animatable の suspend 拡張機能に変更しました。(If613c

バグの修正

  • onCommit、onDispose、onActive のサポートを終了し、SideEffect API と DisposableEffect API に置き換えました。(If760e
  • updateTransition の Initial State がサポートされるようになりました。(Ifd51d
  • 画像とアイコンにコンテンツ説明パラメータを追加しました。これは、ユーザー補助サービスに説明を提供するために使用されます。(I2ac4c
  • invalidate と compositionReference() のサポートを終了し、それぞれ currentRecomposeScope と rememberCompositionReference に置き換えました。(I583a8
  • Duration と Uptime を Long ミリ秒に置き換えます。これにより、これらのクラスに対するポインタ入力の依存関係が削除されます。(Ia33b2b/175142755b/177420019
  • clickable、toggleable、selectable が、コンポジションの外部でも作成できるようになりました(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 を削除し、PointerInputData のフィールドをすべて利用できるように PointerInputChange を変更しました。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-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。

API の変更

  • Velocity がコンポーネント部品と数学演算を持つように変更しました。(Ib0447
  • 類似する試験運用版の API アノテーションとの整合性を保つため、@ExperimentalTesting の名前を @ExperimentalTestApi に変更しました。(Ia4502b/171464963
  • Position の名前を DpOffset に変更し、getDistance() を削除しました。(Ib2dfd
  • Any.identityHashCode() 公開 API を削除しました。(I025d7

バグの修正

  • 新しいコルーチン ベースの API Animatable が、アニメーション間の相互排他的性を保証します。新しい DecayAnimationSpec で多次元の消滅アニメーションをサポートしました。(I820f2b/168014930
  • animate()animateAsState() に置き換えられました。T ではなく State<T> を返します。これにより、State 値が読み取られる範囲に無効化スコープを絞り込めるため、パフォーマンスが向上します。(Ib179e

バージョン 1.0.0-alpha09

2020 年 12 月 16 日

androidx.compose.animation:animation:1.0.0-alpha09androidx.compose.animation:animation-core:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。

API の変更

  • Dp.VectorConverter、Position.VectorConverter などを animation-core に移動し、古い VectorConveters のサポートを終了しました。(If0c4b
  • まったく新しい Transition API セットを導入しました。使いやすさが向上し、動的に追加されたアニメーションと、動的に計算されたアニメーション ターゲットがサポートされます。この API は、TransitionDefinition ベースの API と簡単に区別できるように試験運用版としてマークされています。(Ia7fe3

バグの修正

  • オフセット修飾子のラムダが Float ではなく IntOffset を返すようになりました。(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-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。

API の変更

  • Compose のガイドラインとの整合性を確認するため、コンポーズ可能なラムダ パラメータの名前と位置に対する lint チェックを追加しました。また、lint チェックおよびガイダンスに従って、後置ラムダの名前として children を使用する一部の API を content に移行しました。(Iec48e
  • 以前にサポートが終了していた API が削除されました。
    • Modifier.onPositioned が削除されました。Modifier.onGloballyPositioned を使用してください。
    • Modifier.onDraw が削除されました。Modifier.onDrawBehind を使用してください。
    • Modifier.plus が削除されました。Modifier.then を使用してください。
    • Color.Unset が削除されました。Color.Unspecified を使用してください。
    • PxBounds クラスが削除されました。代わりに Rect を使用してください。
    • Ie9d02b/172562222
  • TestAnimationClock が MonotonicFrameClock によって作動するようにするオプションを一時的に追加しました。(I1403bb/173402197

バグの修正

  • Modifier.drawLayer の名前を Modifier.graphicsLayer に変更しました。また、API 評議会のフィードバックに従って、関連するクラスを GraphicsLayer に更新しました。(I0bd29b/173834241
  • Modifier.scale API / Modifier.rotate API を drawLayer 用のコンビニエンス API として追加しました。
    • Modifier.drawOpacity の名前を Modifier.alpha に変更しました。
    • Modifier.drawShadow の名前を Modifier.Shadow に変更しました。(I264cab/173208140
  • PointerInputData の uptime フィールドと position フィールドを null 値非許容にしました。(Id468a
  • offsetPx 修飾子の名前が offset に変更されました。現在は、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-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください

バグの修正

  • 基本の AmbientTextStyle、ProvideTextStyle、AmbientContentColor のサポートが終了しました。代わりに、マテリアル ライブラリにある新バージョンを使用してください。マテリアル以外のアプリの場合は、独自のコンポーネントで使用できる、独自のデザイン システム固有のテーマ設定アンビエントを代わりに作成する必要があります。(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-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれる commit については、こちらをご覧ください

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-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください

API の変更

  • 新しいアニメーション インターフェースとサブクラス: これらのクラスには、アニメーションの開始条件と終了条件が格納されます。そのため、値と速度のクエリは、プレイ時間中しか実施できません。(Ie95bdb/163329867

バグの修正

  • OnPositionedModifier が OnGloballyPositionedModifier という名前に、onPositioned() が onGloballyPositioned() という名前に変更されました。(I587e8b/169083903
  • contentColor() API と 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-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください

API の変更

  • rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled、textInputServiceFactory を @VisibleForTesting でアノテーションし、内部 API 化して kdoc を非表示にしました。(I554ebb/168308412

バグの修正

  • グラフィック API を多数更新しました。
    • スケール変換 API と回転変換 API を更新しました。これにより、DrawScope と DrawTransform の x 座標と y 座標に 2 つの float パラメータを使用してピボット座標を別個に示すのではなく、単一の Offset パラメータを使用するようにしました。
    • Rect.expandToInclude メソッドと Rect.join メソッドを削除しました。
    • 楕円に加えて長円を表示するように Radius のドキュメントを更新しました。
    • インライン Radius クラスのパブリック コンストラクタを直接呼び出すのではなく、関数コンストラクタを通じて Radius オブジェクトをインスタンス化する必要があることをドキュメントに記載しました。
    • topRight、bottomRight、bottomCenter などを照会するための RoundRect API を削除しました。
    • Rect.shift のサポートを終了して Rect.translate に置き換えました。
    • RoundRect.grow API と Rect.shrink API を削除しました。
    • RoundRect.outerRect の名前を Rect.boundingRect に変更しました。
    • RoundRect.middleRect/tallMiddleRect/wideMiddleRect と Rect.isStadium メソッドを削除しました。
    • RoundRect.longestSide の名前を RoundRect.maxDimension に変更しました。
    • RoundRect.shortestSide の名前を RoundRect.minDimension に変更しました。
    • RoundRect.center は、関数ではなくプロパティになりました。
    • RoundRect コンストラクタを更新し、x/y 半径の値の個々のパラメータではなく Radius プロパティを使用するようにしました。
    • 原点が(0,0)の長方形であると仮定していた Size API を削除しました。
    • Radius に記述解除 API を追加しました。
    • さまざまな RoundRect 拡張関数をプロパティに移行しました。
    • I8f5c7b/168762961
  • foundation.Box はサポートが終了しました。代わりに foundation.layout.Box を使用してください。(Ie5950b/167680279
  • Stack が Box に名前変更されました。compose.foundation.layout にある新しい Box を優先して、既存の Box はサポートが終了します。Box の子が複数ある場合、新しい Box は子を互いに重ね合わせるように動作します。これは、Column と同じように動作していた以前の Box とは異なります。(I94893b/167680279
  • Box 装飾パラメータのサポートは終了しました。Box に装飾やパディングを付ける場合は、代わりに修飾子を使用します。(Modifier.background、Modifier.border、Modifier.padding)(Ibae92b/167680279
  • レイアウト スコープのコンテンツ(RowScope の 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-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください

バグの修正

  • レイアウト 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-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください

API の変更

  • 特定のクロックのフレームを待機しているかどうかを確認するため、ManualFrameClock.hasAwaiters を追加しました。runWithManualClock は ManualFrameClock を必要とするテスト runBlocking に代わるものです。TestUiDispatcher.Main はテストのメイン UI ディスパッチャへのアクセスを容易にします。

    例:

    @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-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください

バージョン 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-dev17 がリリースされました。バージョン 0.1.0-dev17 に含まれる commit については、こちらをご覧ください

新機能

API の変更

  • オフセットがインライン クラスになりました。(Iaec70
  • IntOffset がインライン クラスになりました。(Iac0bf
  • IntSize がインライン クラスになりました。(I2bf42
  • AnimatedVisibilty composable は、子コンテンツの表示と非表示をアニメーション化します。

    AnimatedVisibilty composable と連携して 3 種類の表示と非表示のアニメーション(コンテンツのフェード、スライド、拡大 / 縮小)を提供するため、EnterTransition と ExitTransition が導入されました。さまざまな種類のアニメーションを組み合わせて、より特別なデザインを実現できます。(Idda11

  • PxBounds のサポートを終了して Rect に置き換えました。PxBounds のすべての使用を更新して Rect に置き換え、移行に役立つ適切なサポート終了およびアノテーションへの置き換えを追加しました。(I37038b/162627058

バグの修正

  • PlacementScope.placeAbsolute() の名前が PlacementScope.place() に変更され、以前の PlacementScope.place() の名前が PlacementScope.placeRelative() に変更されました。その結果、PlacementScope.place() メソッドは、右から左(RTL)へのコンテキストで、自動的に位置をミラーリングしなくなります。必要な場合は、代わりに PlacementScope.placeRelative() を使用してください。(I873acb/162916675
  • 明確化のため、state { ... } composable のサポートを終了し、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-dev16 がリリースされました。バージョン 0.1.0-dev16 に含まれる commit については、こちらをご覧ください

API の変更

  • 組み込みの単位を変換するための組み込みのベクター コンバーターに Foo.VectorConverter を介してアクセスできるようになりました。例: Dp.VectorConverterColor.VectorConverterFloat.VectorConverter など。(I3e273
  • サイズ変更アニメーションが終了するとき、アニメーションの開始 / 終了サイズとともにリスナーに通知されるように、Modifier.animateContentSize() で終了リスナーがサポートされます。(I277b2
  • 子修飾子のレイアウト サイズの変化をアニメーション化する新しい animateContentSize 修飾子。(Ieffdc
  • MonotonicFrameAnimationClock を追加して、MonotonicFrameClock を AnimationClockObservable として使用できるようにしました。これにより、新しいコルーチン ベースのクロックと、従来のコールバック ベースのクロックを使用している API とのギャップが解消されました。

    ManualAnimationClock に相当する MonotonicFrameClockManualFrameClock になりました。(I111c7b/161247083

バグの修正

  • 右から左(RTL)をサポートする 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-dev15 がリリースされました。バージョン 0.1.0-dev15 に含まれる commit については、こちらをご覧ください

依存関係の更新

  • 0.1.0-dev15 バージョンの Compose を使用するには、上記の依存関係の宣言で示されている新しいコード スニペットに従って、依存関係を更新する必要があります。

API の変更

  • Transition API が変更され、子に TransitionState を渡すのでなく、TransitionState を返すようになりました。これにより、この API と animate() API の一貫性が向上します。(I24e38
  • クロスフェード用の修飾子パラメータが追加されました。(I87cfeb/159706180
  • 静的アニメーション仕様のコンセプトを明確化するため、最上位レベルの API で AnimationBuilder ではなく AnimationSpec を使用するようになりました。
    • tween や spring などの AnimationSpec の作成に関するラムダ要件を削除することにより、遷移 DSL を改善しました。代わりに、それらはコンストラクタのパラメータを直接受け取ります。
    • AnimationSpec の使いやすさを全面的に改善し、ビルダーに依存するのではなくコンストラクタを利用するようにしました。
    • KeyFrames と Tween の期間と遅延を Int に変更しました。これにより、(Long と Int の両方をサポートするための)不要な型キャストとメソッドのオーバーロードがなくなります。(Ica0b4
  • IntPx の使用を Int に置き換えました。IntPxPosition を IntOffset に置き換えました。IntPxSize を IntSize に置き換えました。(Ib7b44
  • サイズ設定情報を示す際に使用するクラスの数を整理統合するため、PxSize ではなく Size クラスの使用を標準化しました。これにより、インライン クラスは long 値を利用して、float 値で表される幅と高さを示す 2 つの float 値をパックできるようになります。(Ic0191
  • 位置情報を示す際に使用するクラスの数を整理統合するため、PxPosition ではなく Offset クラスの使用を標準化しました。これにより、インライン クラスは long 値を利用して、float 値で表される x オフセットと y オフセットを示す 2 つの float 値をパックできるようになります。(I3ad98
  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I086f4
  • Dp、Px、Size、Position、Bounds、PxPosition、PxSize、PxBounds、IntPx、IntPxSize、IntPxPosition、IntPxBounds、AnimationVector に対する animate() のサポートを追加しました。(Ib7518
  • クロスフェードでオプションの AnimationBuilder パラメータを使用して、アニメーションを構成できるようになりました。(I6d6e0
  • API 内のすべての null 値許容型の Color が null 値非許容型に置き換えられ、null の代わりに Color.Unset が使用されるようになりました。(Iabaa7
  • ValueHolder クラスを削除しました。サブクラスで値の更新を監視できるよう、アニメーション値のフィールドを抽象化するために、AnimatedValue クラスと AnimatedFloat クラスを再構成しました。
    • AnimatedValue、AnimatedFloat などで使用するモデルクラスを追加しました。
    • 値を更新する間にアニメーションを表示するための、軽量の新しい @Composable API セットを追加しました。(I79530
  • アンビエント API を大幅に変更しました。詳細については、ログと Ambient<T> のドキュメントをご覧ください。(I4c7eeb/143769776
  • 新しいリピートモード(リバース)が追加されました。このモードでは、RepeatableSpec または VectorizedRepeatableSpec でアニメーションが繰り返されると、前回の繰り返しが逆再生されます。(Ibe0f5
  • ManualAnimationClock への API の追加: hasObservers: Boolean とコンストラクタ パラメータ dispatchOnSubscribe: Boolean。(Iaa134
  • AnimatedFloat で最小 / 最大境界を取得するための API が追加されました。(Icd9cc

バグの修正

  • runOnIdleCompose の名前が runOnIdle に変更されました。(I83607
  • いくつかのテスト API の名前がより直感的にわかりやすいものになりました。findXYZ API という名前はすべて onNodeXYZ に変更されました。doXYZ API という名前はすべて performXYZ に変更されました。(I7f164
  • 低レベルのステートレス アニメーション API が導入されました。(I63bf7
  • Recompose composable は、有用な抽象化ではなくなりました。ほとんどの場合、再コンポーズは、MutableState 割り当ての結果として生じます。それ以外の場合は、invalidate 関数を使用して、現在のスコープの再コンポーズをトリガーすることをおすすめします。(Ifc992
  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。Px クラス全体が削除されています。(I3ff33
  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(Id3434
  • クロスフェードの初期値として null を使用できるようになりました。(Iad6a4b/155947711
  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I19d02
  • CanvasScope の実装を整理統合し、DrawScope と ContentDrawScope のみとしました。CanvasScope の名前を DrawScope に変更しました。DrawScope を更新して Density インターフェースを実装し、LayoutDirection を提供しました。ContentDrawScope の DrawScope サブクラスを削除しました。Painter と PainterModifier が更新され、RTL プロパティを自身で維持しなくなりました。これは DrawScope ですでに提供されているため、手動で提供する必要はありません。(I1798e
  • キャンバスを公開するハイレベルの Compose API を更新して、代わりに CanvasScope を公開するようにしました。これにより、ユーザーが独自の Paint オブジェクトを維持管理する必要がなくなります。引き続きキャンバスの利用が必要なユーザーは、drawCanvas 拡張メソッドを使用できます。このメソッドにより、対象のキャンバスに対して Draw コマンドを実行するコールバックが行われます。(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
  • 修飾子と演算子を工場出荷時の拡張機能に置き換えました。(I225e4
  • Center composable は非推奨になりました。LayoutSize.Fill + LayoutAlign.Center 修飾子に置き換えるか、適切な修飾子が適用された Box composable または Stack composable に置き換える必要があります。(Idf5e0
  • LayoutFlexible の名前を LayoutWeight に変更しました。このパラメータを補うために tight パラメータの名前を変更しました。(If4738
  • コンポーズ可能な関数 Opacity が drawOpaity 修飾子に置き換えられました。(I5fb62
  • AndroidComposeTestRule を使用するテストでは、構成のルートにアニメーション クロックが提供され、手動での一時停止、再開、詳細設定が可能になりました。(Id54c5
  • LayoutPadding 修飾子で右から左方向をサポートするようになりました。(I9e8da
  • Density と DensityScope が 1 つのインターフェースに統合されました。ambientDensity() ではなく、DensityAmbient.current を使用できるようになりました。withDensity(density)ではなく、with(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 のサポートが終了しました。代わりに setContent または setViewContent を使用してください。Compose.disposeComposition のサポートが終了しました。代わりに、setContent が返す Compositiondispose メソッドを使用してください。androidx.compose.Compose.subcomposeInto は androidx.ui.core.subcomposeInto に移動されました。ComponentNode#emitInsertAt の名前が ComponentNode#insertAt に変更されました。ComponentNode#emitRemoveAt の名前が ComponentNode#removeAt に変更されました。ComponentNode#emitMode の名前が ComponentNode#move に変更されました。(Idef00