アニメーションの概要

Compose を試す
Jetpack Compose は、Android で推奨される UI ツールキットです。Compose でアニメーションを使用する方法について学習します。
<ph type="x-smartling-placeholder"></ph> Compose のアニメーション →

アニメーションを使用すると、視覚的な手がかりを追加して、 。新しい通知の取り込み時など、UI の状態が変化した場合に特に便利です。 新しいアクションが利用可能になりますアニメーションを使えば より質の高い印象を与えることができます。

Android には、アニメーションのタイプに応じてさまざまなアニメーション API が用意されています。 できます。このドキュメントでは、Google Compute Engine で UI に動きを加えることができます

アニメーションを使用するタイミングについて詳しくは、マテリアル モーションに関するデザインガイド

ビットマップをアニメーション化する

図 1. アニメーション化したドローアブル。

アイコンやイラストなどのビットマップ グラフィックをアニメーション化するには、ドローアブル 説明します。通常、これらのアニメーションはドローアブル リソースを使用して静的に定義しますが、実行時のアニメーション動作を定義することもできます。

たとえば、2 つのアクションが関連していることをユーザーに伝えるには、 再生ボタンをアニメーション化し、再生ボタンを 見なされます。

詳細については、ドローアブル グラフィックをアニメーションにするをご覧ください。

UI の表示とモーションをアニメーション化する

図 2. ダイアログの表示 / 非表示を切り替える際に軽くアニメーション化することで、UI 変更の不快感を抑えることができます。

レイアウト内のビューの表示 / 非表示や位置を変更する必要がある場合は、 ユーザーが UI の状態を理解できるように、繊細なアニメーションを含めることをおすすめします。 学びます。

現在のレイアウト内でビューを移動、表示、非表示にするには、 android.animation パッケージに用意されているプロパティ アニメーション システム(Android 3.0 で利用可能) (API レベル 11)以降。これらの API は、View オブジェクトのプロパティを一定期間、継続的に更新します プロパティの変更に合わせてビューを再描画します。たとえば、位置プロパティを変更すると、ビューが画面上を移動します。アルファ プロパティを変更すると、ビューのフェードインやフェードアウトを実現できます。

このようなアニメーションを最も簡単に作成するには、レイアウトでアニメーションを有効にして、ビューの表示を変更したときにアニメーションが自動的に適用されるようにします。詳細については、レイアウトの更新を自動でアニメーションにするをご覧ください。

プロパティ アニメーション システムを使用してアニメーションを作成する方法については、プロパティ アニメーションの概要をご覧ください。マイページ また、次のページを参照して、一般的なアニメーションを作成することもできます。

物理学ベースのモーション

図 3. ObjectAnimator を使用して作成したアニメーション。

図 4. 物理学ベース API を使用して作成したアニメーション。

可能な限り、アニメーションには現実世界の物理学を適用して、自然に見えるようにすることをおすすめします。たとえば、目標が達成された時点で勢いを維持する必要があります。 変更時にスムーズに移行できます

このような動作を実現するため、Android サポート ライブラリには、物理学の法則に基づいてアニメーションの表示を制御する物理学ベース アニメーション API が用意されています。

最も頻繁に利用される物理学ベース アニメーションとしては、次の 2 つがあります。

物理学に基づいていないアニメーション(ObjectAnimator API で作成されたアニメーションなど)はかなり静的であり、 固定期間。そのため、ターゲット値が変更する場合は、ターゲット値の変更時にアニメーションを一度キャンセルして、新しい値を新しい開始値としてアニメーションを再作成し、新しいターゲット値を追加する必要があります。視覚的には、このプロセスにより、図 3 に示すように、アニメーションが突然停止し、その後につながりに欠けた動きが発生することになります。

次のような物理学ベースのアニメーション API を使用して構築されたアニメーション DynamicAnimation の推進要因 あります。ターゲット値の変化は、力の変化になります。既存の速度に新しい力が適用され、新しいターゲットが連続的に遷移します。このプロセスにより、図 4 に示すように、自然な動きのアニメーションになります。

レイアウトの変更をアニメーション化する

図 5. レイアウトの変更や新しいアクティビティの起動による詳細表示アニメーション

Android 4.4(API レベル 19)以降の場合、現在のアクティビティまたはフラグメント内でレイアウトを切り替える際に遷移フレームワークを使用することでアニメーションを作成できます。必要な作業は、開始レイアウトと終了レイアウト、使用するアニメーションのタイプを指定することだけです。すると システムは 2 つのレイアウト間のアニメーションですこの機能を使用して、UI 全体を切り替えたり、一部のビューだけ移動や置換を行ったりすることができます。

たとえば、ユーザーがアイテムをタップして詳細情報を表示する場合、図 5 に示すような遷移を適用することで、レイアウトをアイテム詳細画面に置き換えることができます。

開始レイアウトと終了レイアウトはそれぞれ Scene。ただし、開始シーンは 通常は現在のレイアウトから自動的に決定されますTransition を作成して、使用するアニメーションのタイプを指定し、TransitionManager.go() を呼び出すと、レイアウトを切り替えるアニメーションが実行されます。

詳細については、遷移を使用してレイアウト変更をアニメーションにするをご覧ください。サンプルコードについては、 BasicTransition をタップします。

アクティビティ間の切り替えをアニメーション化する

Android 5.0(API レベル 21)以降では、 アクティビティ間の移行時間を確保できます。これは、前のセクションで説明した同じ遷移フレームワークをベースとしていますが、個別のアクティビティ内のレイアウト間でアニメーションを作成できます。

新しいアクティビティが横からスライドインするものや、新しいアクティビティがフェードインしてくるものなどのシンプルなアニメーションを適用だけでなく、各アクティビティの共有ビュー間を遷移するアニメーションを作成することもできます。たとえば、ユーザーがアイテムをタップして詳細情報を表示する場合、図 5 に示すアニメーションのように、タップしたアイテムが画面いっぱいにシームレスに拡大するアニメーションによって、新しいアクティビティに遷移することができます。

通常どおり、startActivity() を呼び出しますが、ActivityOptions.makeSceneTransitionAnimation() で利用できるオプション バンドルを渡します。このオプション バンドルを使用して、アクティビティ間で共有するビューを指定することで、遷移フレームワークがアニメーション中にアクティビティを接続できるようになります。

その他のリソースについては、以下をご覧ください。