在我的MainActivity中,我想实现一个具有4个片段的FragmentContainer。
我希望用户能够在片段之间滑动,但要采用另一种方式。
1-2-
| ..... |
3-4
因此总结:
片段1向左滑动以获得片段2
片段1向上滑动以获得片段3
片段2向上滑动以获得片段4
片段3向左滑动以获得片段4
反之亦然。
您认为实现此目标的最佳方法是什么?
答案 0 :(得分:0)
您必须创建动画文件才能在片段之间执行幻灯片动画。将所有这些xml文件放入
res文件夹内的anim文件夹
创建文件right_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="@integer/default_transaction_animation_duration"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
创建文件left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="@integer/default_transaction_animation_duration"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="100%"
android:toYDelta="0%" />
</set>
创建文件left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="@integer/default_transaction_animation_duration"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
创建文件left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="@integer/default_transaction_animation_duration"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="-100%"
android:toYDelta="0%" />
</set>
现在创建一种方法来调用您的片段
public void openFragment1() {
Fragment_1 fragment = new Fragment_1();
getSupportFragmentManager().beginTransaction()
.setCustomAnimations(R.anim.right_in, R.anim.left_out, R.anim.left_in, R.anim.right_out)
.add(R.id.container_between, fragment, Fragment_1.TAG)
.addToBackStack(Fragment_1.TAG).commit();
}
以类似的方式,为片段的自上而下的动画创建另外两个xml文件top.xml和bottom.xml。