Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Compose Animation

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

構造

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

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

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

依存関係の宣言

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

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

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.0"
        kotlinCompilerExtensionVersion "1.0.0-alpha07"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
    }
}

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

フィードバック

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

新しい問題を報告する

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

バージョン 1.0.0

バージョン 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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • レイアウト 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 に含まれるコミットについては、こちらをご覧ください

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 に含まれるコミットについては、こちらをご覧ください

バージョン 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 に含まれるコミットについては、こちらをご覧ください

新機能

API の変更

  • Offset がインライン クラスになりました。(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 に含まれるコミットについては、こちらをご覧ください

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 に含まれるコミットについては、こちらをご覧ください

依存関係の更新

  • 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