Android的 - 自定义动画片段上的交易没有运行(Android - Custom Animat

2019-06-25 12:07发布

我使用谷歌API 8(Android 2.2版),支持包V4。

它不给任何错误或动画。

交易:

FragmentTransaction transaction = manager.beginTransaction();       
transaction.replace(R.id.content, myFragment);
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.commit();

动画:

slide_in_left.xml

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

slide_out_right.xml

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

有谁知道这里发生了什么?

Answer 1:

该经理被堆积在我的交易之前,我设置了动画,所以它不叠加动画(可悲的,但真正的)交易,那就算我提交后的交易发生setCustomAnimations()

解决的办法是首先设置动画:

FragmentTransaction transaction = manager.beginTransaction();       
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.replace(R.id.content, myFragment);
transaction.commit();


Answer 2:

正如上文所述,单独的报表肯定会工作。 但这里关键是要setCustomAnimation设置交易类型即之前。 addreplace等,否则它不会。 因此,应用相同的逻辑, method chaining也适用。 例如。

getSupportFragmentManager()
        .beginTransaction()
        .setCustomAnimations(R.anim.a_slide_up,
                             R.anim.a_slide_down,
                             R.anim.a_slide_up,
                             R.anim.a_slide_down)
        .add(R.id.root_layout, 
             MyFrag.newInstance())
        .addToBackStack("MyFrag")
        .commit();

把他们放在这里,让别人谁喜欢method chaining发现它有帮助。 干杯!



Answer 3:

离开这里这个,因为它是最流行的问题。 我曾与片段交易不是动画同样的问题。 罪魁祸首是具有属性android:animateLayoutChanges设置为true在含布局。

我希望它可以帮助别人节省一些时间寻找一个解决方案,因为它可能很难有在不同的文件嵌套布局时,需要注意。



Answer 4:

另一个原因可以是不必要地放置fragmentTransaction.show()之前提交。 这使得流行音乐的转换没有显示在部分Android API版本。



文章来源: Android - Custom Animation on fragment transaction not running