片段成交动画:滑入和滑出片段、滑出、滑入、动画

2023-09-06 13:18:43 作者:不特别、但却是唯一

我查了一些教程片段间动画的交易。我用这个方法动画:

i've check some tutorials for animate transaction between fragments. i've used this method for animation:

fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left,
                android.R.anim.slide_out_right);

和它的作品。但我想,动画它的倒置:旧片段滑出左侧,并以正确的新片段的幻灯片,但R.anim文件没有价值似乎是我的范围非常有用。我怎样才能做到这一点?

and it works. But i want that the animation it's inverted: old fragment slide out to the left, and new fragment slide in to the right, but no value of R.anim file seems to be useful for my scope. How can i do it?

推荐答案

您可以创建自己的动画。将动画XML文件中的水库>动画

You can create your own animations. Place animation XML files in res > anim

enter_from_left.xml

enter_from_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
  <translate 
      android:fromXDelta="-100%" android:toXDelta="0%"
      android:fromYDelta="0%" android:toYDelta="0%"
      android:duration="700"/>
</set>

enter_from_right.xml

enter_from_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
  <translate
     android:fromXDelta="100%" android:toXDelta="0%"
     android:fromYDelta="0%" android:toYDelta="0%"
     android:duration="700" />
</set>

exit_to_left.xml

exit_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
  <translate 
      android:fromXDelta="0%" android:toXDelta="-100%"
      android:fromYDelta="0%" android:toYDelta="0%"
      android:duration="700"/>
</set>

exit_to_right.xml

exit_to_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
  <translate
     android:fromXDelta="0%" android:toXDelta="100%"
     android:fromYDelta="0%" android:toYDelta="0%"
     android:duration="700" />
</set>

更新的完整性/澄清(感谢@moondroid)

UPDATE for completeness/clarification (thanks @moondroid)

使用有:

fragmentTransaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left);

fragmentTransaction.setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right);