我尝试使用新的 android 兼容性包将 fragment 包含到我的项目中。 当我添加一个新 fragment 时,我试图包含一个过渡动画。这只是我的动画作品之一。 In 动画有效,但 Out 动画无效。 我在某处读到它是兼容性包中的一个错误。但我还读到该错误已在兼容性包的第三版中得到修复。谁能帮我解决这个问题
在动画中
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/anticipate_interpolator"
android:fromXDelta="0"
android:toXDelta="0"
android:fromYDelta="100%"
android:toYDelta="0%"
android:duration="1000"/>
出动画
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0"
android:toXDelta="0"
android:zAdjustment="top"
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="1000"/>
这是我用来添加 fragment 的代码
newFragment = new HelloWorldFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.bottom_top_animation, R.anim.top_bottom_animation);
ft.add(R.id.outer_layout, newFragment);
ft.addToBackStack(null);
ft.commit();
最佳答案
这适用于当前版本的库,但之前肯定被破坏了。你可以使用这样的东西:
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_up, R.anim.slide_down, R.anim.slide_up, R.anim.slide_down)
.add(R.id.fragment_container, new SomeFragment(), FRAGMENT_TAG)
.addToBackStack(FRAGMENT_TAG)
.commit();
其中 R.anim.slide_up 是您的输入动画,而 R.anim.slide_down 是您的输出动画。 setCustomAnimations 的第二对参数(3 和 4)允许您指定弹出回栈的弹出/弹出动画(例如,当用户按下返回时, fragment 将使用指定为第四个参数的动画进行动画处理)。
关于android - FragmentTransation setCustomAnimations 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993863/