(アクティビティ遷移)では、共通する要素の間での動作や変化を通じて、状態の切り替えに視覚的なつながりを持たせます。前後のActivityで共通する要素がある場合などには、スムーズな切り替えを提示してあげよう!ということでしょうか。Lollipop)以上からであること。バックポートライブラリも提供されてないので、minSdkVersionによっては処理を分岐させる必要がありますね。ActivityTransitionの種類アクティビティ遷移にもいくつか種類があります。Enterどのようにして画面に登場するか。Activityが表示される際のアニメーションをつけたい場合に使います。Exitどのようにして画面から退場するか。画面遷移の発生などでActivityから離れる際のアニメーションをつける場合に使います。Elements画面上にある共通の要素(例えばImageViewとか)をどのようにアニメーションさせるか。PlayStoreの例がわかりやすいでしょうか。アプリアイコンが前後のAcitivityで共通要素で、画面遷移時にはアイコンが動くようなアニメーションが入ってます。Transitionでは、transitionNameというviewのアトリビュートを使ってどのviewが共通要素なのかを指定しています。このtransitionNameの指定は、レイアウトxmlに直接記述する方法とコードから動的に指定する方法があります。android:transitionName)binding.image.setTransitionName("image_code");3.Intentに必要な情報を詰めて遷移先に渡すアニメーションさせるviewの指定が済んだら、必要な情報をIntentに乗っけます。必要な情報とはActivityOptionsのことで、ActivityならActivityOptions、AppCompatActivityならActivityOptionsCompatを使います。各クラスに実装されているstaticメソッドmakeSceneTransitionAnimation()でActivityOptionsインスタンスが取得できます。binding.image.getTransitionName());ActivityOptionsCompatの準備ができたらstartActivity(Context,Bundle)で遷移を開始します。compat.toBundle());ActivityOptionsCompatはtoBundle()でBundle型にして第2引数に渡します。下の2つが簡単な導入例です。transitionsamples/simple_sharedではアニメーション対象viewをレイアウトXMLで指定しています。transitionsamples/simple_shared_codeではアニメーション対象viewをコードから指定しています。transitionを定義して使うここからが本番。今回、上にあるPlayStoreのgifのようなアニメーションを実現したかったのだけど、問題発生。PlayStoreをマネてみようストアを見ていると、こんなトランジションを発見。丸い図形(ピンクの丸)に変形させることで、操作への反応速度を保証ヘッダー画像が取れ次第ヘッダー画像をフェードインさせることで、スムーズな遷移を演出Googleが導いた解を信じ、このアニメーションの実現を目指します。Developersの解説を参考にしながら実装します。Transitionを継承して自作するときには、少なくとも以下の3メソッドをoverrideします。{}}でもこれだけではさっぱりわからないので、Fadeクラスを覗いてみます。}...どうやら、captureStartValuesに渡ってきた値を保存して、createAnimationで最終的なアニメーションを生成して返しているっぽいです。実装したコード全体はgithubで見ていただければと思いますが、重要なのはcreateAnimation内でのアニメーション生成部分。fadeInStartBallView);...ここでの最終的な返り値はAnimator型です。アニメーション対象のviewや一時的に登場するviewに対してAnimatorでアニメーションを個別に定義してあげ、それらをうまく組み合わせることで一連のアニメーションを実現することができます。個々のAnimatorの使い方については説明を省きますが、viewなどの移動、変形、透過などができます。今回実装したPlayStoreTransitionは、3つのアニメーションを逐次実行しています。円形の図形を遷移先view全体が隠れるまで拡大させる遷移先viewをフェードインさせる実際にアニメーションさせてみます。あとはこれを画像取得のタイミングとうまくリンクさせれば良さそうです。ステータスバーをアニメーション対象外にしたいexcludeTargetを利用することで、指定したviewを対象外とすることができます。サンプルでは、XMLで除外定義しています。/></transitionSet>この状態だと、ステータスバーやナビゲーションバーに変化がつかなくなります。gifのステータスバー(一番上の通知とか出る部分)とナビゲーションバー(一番下のホームキーとかの部分)に注目して見てもらえれば違いがわかると思いますサンプルコードとか実装中に、PlayStoreっぽいトランジションの先人がいることに気がつきました。参考にさせていただいてます。https://github.com/naman14/PlayAnimationsまた、https://github.com/satsukies/AnimationSamplesに自分のサンプルコードもあります。最後にこれだけ説明しておいてアレですが、実はこれではまだ解決しませんでした。いうのも、アニメーションの継ぎ目でviewがちらついてしまったり、隠しているはずの部分が見えてしまったりしていて、このままではバグっぽく見えるのです。OMG...RAMに余裕のある端末やCPUパワーのある端末では起きにくいですが、実用するとなればそれなりのスペックの端末も存在するので、最適化なり別の方法なりを考える必要がありそう。requestStockLike70@satsukiesFollow株式会社サイバーエージェントサイバーエージェントは「21世紀を代表する会社を創る」をビジョンに掲げ、インターネットテレビ局「AbemaTV」の運営や国内トップシェアを誇るインターネット広告事業を展開しています。インターネット産業の変化に合わせ新規事業を生み出しながら事業拡大を続けています。upLoginユーザーは見つかりませんでした。