通过Activity间的转场动画overridePendingTransition可以实现Activity之间的跳转动画,这里分析的是alpha动画引起的透析桌面的问题。
在闪屏页展示完毕后,跳转到主页,这之间通过转场动画实现一个第一个页面渐渐消失,第二个页面慢慢展现的动画效果。
overridePendingTransition(R.anim.activity_fade_in,R.anim.activity_fade_out);
activity_fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
activity_fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="1000"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
首先想到将fromAlpha变大
依然会透析,除非fromAlpha也变成1.0,呵呵,肯定不行
其次想到把第二个页面的主题设置背景色为白色,并且设置不透明
一如既往,这也验证了动画是对第一个页面进行的,第二个页面设置其实并没有任何作用。
<item name="android:windowBackground">@color/white</item>
<item name="android:windowIsTranslucent">false</item>
所以结论很直接了,对第一个页面设置不透明属性,并且设置背景色为白色
结果验证了我的推论,跳转动画执行的过程中不再透析到桌面。
1.从中也可以得到一些结论,overridePendingTransition执行的过程中,是对Window层级执行的动画,如果设置了android:windowIsTranslucent为true,将会透析到桌面。
2.动画是针对第一个Activity执行的,而不是第二个。