首先查一下window activity的关系
具体省略。。。。
我的理解就是
每个activity都有一个window 也就是view的最顶层容器
activity是提供给用户交互的一组View容器(window的child)
层次关系是
<window>
<activity>
</activity>
</window>
所以说如果需要设置Actiivty透明
<style name="app_transparent_activity" parent="android:Theme.Light">
<!-- 是否支持透window明度 -->
<item name="android:windowIsTranslucent">true</item>
<!-- window背景颜色 -->
<item name="android:windowBackground">@android:color/transparent</item>
</style>
需要先设置一下 windowIsTranslucent 让window可以透明。。然后在设置window的背景
这时候 activity是否透明还需要看 activity的 content的背景颜色是否是透明的
只需要在layout里设置一下即可。默认为透明的。。#00000000
【如果isTranslucent设置为false background属性将不起作用】
同样的 dialog 透明需要设置一下属性
<style name="app_transparent_dialog" parent="android:Theme.Light">
<!-- 是否支持透window明度 -->
<item name="android:windowIsTranslucent">true</item>
<!-- window背景颜色 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 屏幕内容区域以外的背景是否可以设置灰度值(与backgroundDimAmount搭配使用) -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 灰度值 -->
<item name="android:backgroundDimAmount">0.8</item>
</style>