FragmentをAnimationさせて遷移する方法です。
フラグメントの画面遷移する際に右から左へアニメーションしています。
javaファイルから見て行きます。
1 2 3 4 5 |
InputDailyDataFragment inputDailyDataFragment = InputDailyDataFragment.newInstance(); getActivity().getSupportFragmentManager().beginTransaction() .setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left,R.anim.enter_from_left,R.anim.exit_to_left) .replace(R.id.container, inputDailyDataFragment, InputDailyDataFragment.TAG) .addToBackStack(InputDailyDataFragment.TAG).commit(); |
画面遷移をする際にreplace関数を使ってfragmentを切り替えていますが、
replaceの前に、setCustomAnimations関数を呼んで、アニメーションを設定したAnimファイルをセットしてあげればOKです。
setCustomAnimations
added in API level 13
1 2 3 4 |
<a href="https://developer.android.com/reference/android/app/FragmentTransaction.html">FragmentTransaction</a> setCustomAnimations (int enter, int exit, int popEnter, int popExit) |
Set specific animation resources to run for the fragments that are entering and exiting in this transaction. The popEnter
and popExit
animations will be played for enter/exit operations specifically when popping the back stack.
Parameters | |
---|---|
enter |
int |
exit |
int |
popEnter |
int |
popExit |
int |
Returns | |
---|---|
FragmentTransaction |
今回Fragmentを切り替える際にAddBackStackし、戻るボタンを押した際もアニメーションをさせたいので、
第3,4引数のあるsetCustomAnimations関数を呼んでいます。
では、animationファイルを見ていきます。
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:duration="250" android:fromXDelta="-100%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="0%" /> </set> |
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:duration="250" android:fromXDelta="100%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="0%" /> </set> |
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:duration="250" android:fromXDelta="0%" android:fromYDelta="0%" android:toXDelta="-100%" android:toYDelta="0%" /> </set> |
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:duration="250" android:fromXDelta="0%" android:fromYDelta="0%" android:toXDelta="100%" android:toYDelta="0%" /> </set> |
Translateの要素については公式ドキュメントでチェックしてください