项目中有个交互是点击Activity中的一个按钮,弹出全屏Dialog1,再点击Dialog1上的按钮,弹出Dialog2,按返回键回到Dialog1。关系图如下:
由于项目中所有的Dialog都是全屏的,在两个Dialog相互切换的时候,总是觉得会闪屏,一直很纳闷是为什么,后来一个同事说你把动画去掉试试,才想起来写代码的时候Dialog拉起和退出的动画都没有设置过,为默认值。
于是在styles.xml中加入一项,将拉起和退出的动画设置为null,去掉动画,代码如下:
<style name="NoAnimationDialog" parent="@android:style/Animation.Dialog">
<item name="@android:windowEnterAnimation">@null</item>
<item name="@android:windowExitAnimation">@null</item>
</style>
把该style应用到Dialog,代码如下:
Window window = getWindow();
window.setWindowAnimations(R.style.NoAnimationDialog); // 添加动画
设置后闪屏问题解决。