Android:我的片段转换animation有什么问题?

我只需要简单的滑入和滑出片段过渡animation,下面是我的代码:slide_in_left.xml:

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

slide_out_right.xml:

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

我使用的代码:

 SomeFragment frag = SomeFragment.newInstance(foo); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); ft.replace(R.id.the_fragment, frag); ft.addToBackStack(null); ft.commit(); 

结果看起来非常奇怪,当转换开始时,当前片段消失而没有animation,input片段像来自左侧的滚动纸一样。 我的animationXML代码有什么问题?

谢谢!

Solutions Collecting From Web of "Android:我的片段转换animation有什么问题?"

getSupportFragmentManager()意味着你正在使用片段的兼容性包,我猜。 我有同样的问题,这是根本没有animation发生。

请参阅http://groups.google.com/group/android-developers/browse_thread/thread/5ef5ba1be9f40c56/a846578d91a032c0?hide_quotes=yes#msg_8ca017c473818a04

Google已经更新了兼容性库,并且已经修复了转换。 你们应该从android sdk / avdpipe理器更新你的兼容库。

我在这里发现了一个很酷的post,关于片段兼容性库animation问题,我采取了第二种方法

…..调用FragmentTransaction.setCustomAnimations(),引用animation或animation(取决于您是否使用兼容性库)。 有趣的是,setCustomAnimations()影响在调用之后添加到事务中的所有片段转换。 所以你需要在你想使用setCustomAnimations()之前调用setCustomAnimations(),并且实际上可以在每个add()/ remove()/ attach()之前为每个事务部分设置多个不同的自定义animation(通过调用setCustomAnimations() /拆卸()/显示()/隐藏()/replace())……

喜欢这个

 FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.push_up_in,R.anim.push_up_out); ft.commit(); ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.push_up_in,R.anim.push_up_out); if (fragment1.isHidden()) { ft.show(fragment1); } else { ft.hide(fragment1); } ft.commit(); 

有了这个我解决了问题的API级别11希望它的作品!

如果您使用ViewPager

 mPager.setOffscreenPageLimit(YourFragmentsSize); 

这条线解决了我的问题,希望也适合你。 受此议题的支持