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之前设置自setCustomAnimation
。 add
, replace
等,否则它不。 所以,应用相同的逻辑, 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,因为在不同的文件中嵌套布局时很难注意到。