左右移动片段的最佳方法

时间:2019-06-12 07:21:29

标签: android android-fragments animation

在我的MainActivity中,我想实现一个具有4个片段的FragmentContainer。

我希望用户能够在片段之间滑动,但要采用另一种方式。

1-2-

| ..... |

3-4

因此总结:

片段1向左滑动以获得片段2

片段1向上滑动以获得片段3

片段2向上滑动以获得片段4

片段3向左滑动以获得片段4

反之亦然。

您认为实现此目标的最佳方法是什么?

1 个答案:

答案 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。