动画片段事务动画的麻烦

时间:2014-09-14 19:22:51

标签: android animation android-fragments

我在尝试将自定义动画设置为片段事务时遇到了一些麻烦。我知道这有几个步骤,我已经尝试了所有的解决方案,我仍然无法让这个工作。这是动画xml文件:

slide.down.xml(退出)

<set xmlns:android="”http://schemas.android.com/apk/res/android”"
android:shareInterpolator="false" >

<translate
    android:duration="700"
    android:fromXDelta="0%"
    android:fromYDelta="-100%"
    android:toXDelta="0%"
    android:toYDelta="0%" />

slide_up.xml(用于输入)

<set xmlns:android="”http://schemas.android.com/apk/res/android”"
android:shareInterpolator="false" >

<translate
    android:duration="700"
    android:fromXDelta="0%"
    android:fromYDelta="0%"
    android:toXDelta="0%"
    android:toYDelta="-100%"/>      

和我的片段交易代码:

getFragmentManager().beginTransaction()
                            .setCustomAnimations(R.anim.slide_up , R.anim.slide_down,R.anim.slide_up , R.anim.slide_down)
                            .replace(R.id.container, list)
                            .addToBackStack(null)
                            .commitAllowingStateLoss();

所有解决方案都形成了我尝试的其他类似线程:

  • 确保setCustomAnimations
  • 之前replace
  • 在清单中将android:hardwareAccelerated设置为true。
  • 确保我的测试设备上的开发人员选项中未禁用动画

我似乎在弄乱一些非常明显和重要的东西,但我无法弄清楚那是什么。

我的问题:为什么我的服装动画不起作用?如何让它运作?

1 个答案:

答案 0 :(得分:4)

因此,Android中有两种类型的动画。 查看动画(Animation)和属性动画(Animator)。你的动画是前者,而FragmentTransaction.setCustomAnimations期望后者。您有2个选项可以解决此问题:

  1. 使用支持库。
    • 子类android.support.v4.app.Fragment
    • 使用getSupportFragmentManager()创建FragmentTransaction
  2. 使用动画师
    • 创建自定义父ViewGroup(解释为here
    • 创建objectAnimator(XML)
  3. 第一个选项肯定是更容易的选项,特别是因为您要进行开/关屏幕翻译,并且它期望您已经定义的动画类型。

    要详细了解两种动画之间的区别,请参阅here