ActivityとFragmentの回転アニメーション
6002 ワード
新しいページを追加するので、突然アニメを試してみたいと思っています.終わったらメモを取って、後で忘れてしまうのを防いでいます.
1.ActivityとActivityのターンテーブルアニメーション
5.0以上でなければなりませんが、携帯電話に5.0がない場合はデフォルトの一般的な状況が実行されます.
1.1通常の3種類のActivity遷移アニメーション
次の3つの効果があります. explode(分解)-画面の真ん中から入ったり出たりして、ビュー を移動します. slide(スライド)-画面の端から入ったり出たりして、ビュー を移動します. fade(フェードアウト)-スクリーンビューの不透明度を変更してビューを追加または削除します.
栗を挙げる:Activity AからActivity B Activity Aへのジャンプ方法
Activity Bの設定は、Activity BのonCreate()ライフサイクルのsetContentView()の前に設定します.
またはstyleファイルに属性を追加する
同時に必要な遷移アニメーションに基づいて設定(getWindow()に設定.requestFeature()メソッドの後、setContentView()メソッドの前)
1.2共有要素のActivityのターンテーブルアニメーション
これはハイエンドと呼ばれています.これはcoooooolに見えます.
共有要素は次のとおりです. changeBounds:ビューの位置とサイズを変更する changeClipBounds:ターゲットビュー境界を切り取る changeTransform:ターゲットビューのズームおよび回転を変更する changeImageTransform:画像のサイズを変更し、 をスケールします.
やはり栗を挙げます:例えば2つのActivityは1つのButtonを共有します.それでは2つのActivityのButtonに同時に追加する必要があります
2つのActivityのButtonのこの属性の一致に値することを覚えておく.最後にActivity AがActivity Bにジャンプした場合:
複数の要素を共有する必要がある場合は、Pairを使用します.create()を使用して複数の要素を作成します.
2.FragmentとFragmentの間のターンオーバーアニメーション(共有要素)
http://www.jianshu.com/p/e9f63ead8bf5参考にしたのはこれです.
簡単で乱暴な栗を挙げる:共有要素の間に約束の
ジャンプが必要なFragmentの作成=>XXFragment
カスタムアニメーション:
1.ActivityとActivityのターンテーブルアニメーション
5.0以上でなければなりませんが、携帯電話に5.0がない場合はデフォルトの一般的な状況が実行されます.
1.1通常の3種類のActivity遷移アニメーション
次の3つの効果があります.
栗を挙げる: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に見えます.
共有要素は次のとおりです.
やはり栗を挙げます:例えば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());
}
}