我在运行Android 5(棒棒糖)的设备上使用默认布局动画时遇到了奇怪的行为。我正在使用一个带有多个片段的活动,这些片段在运行时使用默认片段管理器替换。当替换旧片段时,我想使用动画来实现平滑的UI流程。在早期版本的Android设备上,动画的效果如预期一样,但在运行最新操作系统的设备上,片段之间的动画出现故障:
我尝试使用默认的动画XML标记
android:animateLayoutChanges="true"
因为它不起作用,我使用了这段代码来更改它,但没有效果。
mTransaction = mManager.beginTransaction();
mTransaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
mTransaction.remove(mFragment);
mTransaction.add(R.id.container, mFragment, "fragment");
mTransaction.commit();
我已经在不同设备和安卓模拟器上测试了代码。奇怪的是,在运行早期版本的设备和最新操作系统(5.0.1)的安卓模拟器上,它的效果如预期般正常工作。但是,在运行安卓5.0的Nexus 4和Nexus 5等设备上无法正常工作。
有什么建议吗?需要帮助吗?
提前感谢!
编辑:
这似乎是一个取决于使用设备的错误。我已经在不同设备上测试了代码(三星Galaxy S4、HTC One mini2、One M8、Desire S、Nexus 4&5),只在Google Nexus设备上出现了此问题。
编辑
解决动画问题的一种方法是通过在应用程序清单中使用<application android:hardwareAccelerated="false">
标签来禁用硬件加速。但是使用该方法会使应用程序变得非常缓慢。
解决方案
解决这个问题的方法是为活动设置一个背景图像/颜色/可绘制对象。 详见