做安卓App时,常会设置Activity之间切换的动画。常用的方法有两种,一种是用Activity的overridePendingTransition方法;另一种是用style文件通过xml进行设置。
一开始使用style的时候,我只设置了Window的动画,在大部分手机上运行正常。后来有人反映在红米手机上会有两个动画同时播放,产生很奇怪的效果。然后又找了一下,发现Activity的动画也可以设置,于是对Activity的动画效果进行设置。但是我发现只有Window的动画设置了有效果,而Activity动画设置了完全没有效果。
这两个Window的动画属性设置了有效果:
<item name="android:windowEnterAnimation">@null</item>
<item name="android:windowExitAnimation">@null</item>
这四个Activity的动画属性设置了没有效果:
<!-- 新的Activity启动时Enter动画 -->
<item name="android:activityOpenEnterAnimation">@anim/slide_left_in</item>
<!-- 新的Activity启动时原有Activity的Exit动画 -->
<item name="android:activityOpenExitAnimation">@anim/keep</item>
<!-- 新的Activity退出时原有ActivityEnter动画 -->
<item name="android:activityCloseEnterAnimation">@anim/keep</item>
<!-- 新的Activity退出时Exit动画 -->
<item name="android:activityCloseExitAnimation">@anim/slide_right_out</item>
修改尝试了很多次都不行,还怀疑是手机系统被修改过的问题。但是别的程序在手机上运行似乎都很正常。后来又看了别的程序,发现就是那么设置的,并且运行正常。自己重新新建了一个项目,再次尝试发现竟然可以。
回到原来的工程中查看,终于找到了原因,我用的Activity在Manifest中设置了SingleInstance属性,所以Activity处于已经实例化的状态,不会再被实例化,于是Activity动画不会播放,只有Window动画会播放。把这个属性改成SingleTop就好了。
本文由PurpleSword(jzj1993)原创,转载请注明
原文网址 http://blog.csdn.net/jzj1993