ActivityとFragmentの回転アニメーション

6002 ワード

新しいページを追加するので、突然アニメを試してみたいと思っています.終わったらメモを取って、後で忘れてしまうのを防いでいます.
1.ActivityとActivityのターンテーブルアニメーション
5.0以上でなければなりませんが、携帯電話に5.0がない場合はデフォルトの一般的な状況が実行されます.
1.1通常の3種類のActivity遷移アニメーション
次の3つの効果があります.
  • explode(分解)-画面の真ん中から入ったり出たりして、ビュー
  • を移動します.
  • slide(スライド)-画面の端から入ったり出たりして、ビュー
  • を移動します.
  • fade(フェードアウト)-スクリーンビューの不透明度を変更してビューを追加または削除します.

  • 栗を挙げる:Activity AからActivity B Activity Aへのジャンプ方法
    startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

    Activity Bの設定は、Activity BのonCreate()ライフサイクルのsetContentView()の前に設定します.
    getWindow().requestFeature(Window.FRATURE_CONTENT_TRANSITIONS);

    またはstyleファイルに属性を追加する
    <item name="android:windowContentTransitions">trueitem>

    同時に必要な遷移アニメーションに基づいて設定(getWindow()に設定.requestFeature()メソッドの後、setContentView()メソッドの前)
    getWindow().setEnterTransition(new Explode());
    getWindow().setEnterTransition(new Slide());
    getWindow().setEnterTransition(new Fade());

    1.2共有要素のActivityのターンテーブルアニメーション
    これはハイエンドと呼ばれています.これはcoooooolに見えます.
    共有要素は次のとおりです.
  • changeBounds:ビューの位置とサイズを変更する
  • changeClipBounds:ターゲットビュー境界を切り取る
  • changeTransform:ターゲットビューのズームおよび回転を変更する
  • changeImageTransform:画像のサイズを変更し、
  • をスケールします.
    やはり栗を挙げます:例えば2つのActivityは1つのButtonを共有します.それでは2つのActivityのButtonに同時に追加する必要があります
    android:transitionName = "xxx";

    2つのActivityのButtonのこの属性の一致に値することを覚えておく.最後にActivity AがActivity Bにジャンプした場合:
    startActivity(intent,
            ActivityOptions.makeSceneTransitionAnimation(
                    this,
                         ,
                    "         ").toBundle());

    複数の要素を共有する必要がある場合は、Pairを使用します.create()を使用して複数の要素を作成します.
    startActivity(intent,
            ActivityOptions.makeSceneTransitionAnimation(
                    this,
                    Pair.create(    1,"       1"),
                    Pair.create(    2,"       2"))
                    .toBundle());

    2.FragmentとFragmentの間のターンオーバーアニメーション(共有要素)
    http://www.jianshu.com/p/e9f63ead8bf5参考にしたのはこれです.
    簡単で乱暴な栗を挙げる:共有要素の間に約束の
    android:transitionName = "xxx";

    ジャンプが必要なFragmentの作成=>XXFragment
    XXFragment fragment =new XXFragment();
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        detailFragment.setSharedElementEnterTransition(new DetailTransition());
        setExitTransition(new Fade());
        fragment.setEnterTransition(new Fade());
        fragment.setSharedElementReturnTransition(new   DetailTransition());
                 }
    
    getActivity().getSupportFragmentManager().beginTransaction()
        .addSharedElement(    ,"       ")
        .replace(Activity   id, fragment)
        .addToBackStack(null)
        .commit();
    }

    カスタムアニメーション:
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public class DetailTransition extends TransitionSet {
        public DetailTransition() {
            init();
        }
    
    //         
    public DetailTransition(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
    private void init() {
            setOrdering(ORDERING_TOGETHER);
            addTransition(new ChangeBounds()).
                    addTransition(new ChangeTransform()).
                    addTransition(new ChangeImageTransform());
        }
    }