windowIsTranslucent遇到的坑

首先介绍一下window 一些属性

<item name="android:windowFrame">@nullitem> :Dialog的windowFrame框为无
<item name="android:windowIsFloating">trueitem>:是否浮现在activity之上
<item name="android:windowIsTranslucent">falseitem>:是否半透明
<item name="android:windowNoTitle">trueitem>:是否显示title
<item name="android:windowBackground">@drawable/dia_bgitem>:设置dialog的背景
<item name="android:backgroundDimEnabled">falseitem>: 背景是否模糊显示

正如上述所说 windowIsTranslucent 是设置窗体是否半透明,那么什么时候需要用到这个属性呢,一般情况下是我们自定义Dialog对话框的时候会用到。那么它又是怎么影响到程序的正常使用的呢下面我们一起看个例子:

例子:
A activity 跳转到 B activity 本来是 A的生命周期是 OnPause()->OnStop()->onDestroy(),但是在B中加了android:windowIsTranslucent属性后,你可以把它理解成,B从Activity变成了Dialog,所以只是上浮在A activity上,所以A只调用OnPause()方法 。这个时候就有影响了,无论你在B中怎么设置launchMode吗,都是没有用的,因为A不可能走OnStop(),所以栈顶元素一直是A。这样就会影响一系列的操作,比如在A中双击按钮跳转到B,就会同时出现两个B
解决:
1.最好在做A 中有按钮到B的时候,别设置B的主题
2.最好在做A 中有按钮到B的时候,判断双击事件,详见http://blog.csdn.net/qq_28260521/article/details/78955456

你可能感兴趣的:(那些年安卓踩过的坑)