Android – 片段事务的自定义animation未运行

我正在使用支持包v4的Google API 8(Android 2.2)。

它不会给出任何错误或animation。

交易:

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

animation:

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> 

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

在设置animation之前,pipe理器正在堆叠我的事务,所以它没有animation堆叠事务(悲伤但是是真的),即使我在setCustomAnimations()之后提交事务,也会发生这种情况。

解决scheme是先设置animation:

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

如上所述,单独的陈述肯定会奏效。 但是这里技巧是在设置事务types之前设置自setCustomAnimationaddreplace等,否则它不。 所以,应用相同的逻辑, 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发现它有帮助。 干杯!

离开这里,因为这是最stream行的问题。 我有与片段交易相同的问题,而不是animation。 罪魁祸首是在包含布局中将属性android:animateLayoutChanges设置为true

我希望这可以帮助别人节省一些时间寻找解决scheme,因为在不同的文件中嵌套布局时很难注意到。