Android 碎片事务设置自定义动画不工作
我正在尝试使用新的android兼容包将片段包含到我的项目中。 我试图在添加新片段时包含过渡动画。这只是我的动画作品之一。In动画工作,但Out动画不工作。 我在某个地方读到它是兼容包中的一个bug。但我也读到,这个bug在兼容性软件包的第三版中得到了修复。有人能帮我解决这个问题吗 动画中Android 碎片事务设置自定义动画不工作,android,android-fragments,android-support-library,Android,Android Fragments,Android Support Library,我正在尝试使用新的android兼容包将片段包含到我的项目中。 我试图在添加新片段时包含过渡动画。这只是我的动画作品之一。In动画工作,但Out动画不工作。 我在某个地方读到它是兼容包中的一个bug。但我也读到,这个bug在兼容性软件包的第三版中得到了修复。有人能帮我解决这个问题吗 动画中 <translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@andr
<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"/>
这在当前版本的库中是有效的,但之前它肯定被破坏了。您可以使用以下内容:
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\u up是您的in动画,R.anim.slide\u down是您的out动画。setCustomAnimations的第二对参数(3和4)允许您指定弹出backbackback的弹出/弹出动画(例如,当用户按back时,片段将以指定为第四个参数的动画进行动画制作)。我找到了解决方法。在片段类中重写onCreateAnimation(int transit、boolean enter、int nextAnim),然后就可以正常工作了
@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
return enter ? AnimationUtils.loadAnimation(getActivity(), R.anim.grow_fade_in_center) : AnimationUtils.loadAnimation(getActivity(), R.anim.shrink_fade_out_center);
}
我也面临同样的问题,以下是我的情况:
在第三版中没有关于解决动画问题的信息:我暂时有点放弃了片段,因为我觉得它不够成熟,无法在大型项目中实现;s回复我未知动画师姓名:翻译。。。错误…知道我是否遗漏了什么吗?幻灯片动画似乎不适合我。相反,片段只是被删除并消失,没有幻灯片动画。@MAGx2您可以将setCustomAnimations与getSupportFragmentManager()一起使用。但是,在API 11之后,必须使用ObjectAnimators(通常存储在R.animator中),而不是translate animators。请注意,在当前版本的支持库(21.0.2)中,不能使用“setCustomAnimations”。这是一个已知问题:。对于'com.android.support:support-v4:21.0.3':动画正在工作,但在添加/替换之前调用setCustomAnimations很重要。您的意思是'onCreateAnimator'?方法名称与上述代码段中提到的相同,其片段方法只是覆盖此。退出动画对我仍然不起作用。第一个片段被替换,然后它的进入动画被播放,但退出动画不会为之前的片段播放,并且nextAnim参数始终为0!
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();
@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
return enter ? AnimationUtils.loadAnimation(getActivity(), R.anim.grow_fade_in_center) : AnimationUtils.loadAnimation(getActivity(), R.anim.shrink_fade_out_center);
}