Android实现暗透明背景的页面


项目要求做一个对话框样式的页面,仅页面上的文字和按钮可见,背景效果和对话框类似。下面看看怎么实现:

方案一:
首先实现一个继承自对话框样式的主题:

    

@android:color/transparent的值为#00000000。前两个00表示透明度,后6位为RGB值。#00000000表示全透明的黑色。

然后把这个主题应用到activity:

        <activity  android:name=".activity.TestActivity" android:theme="@style/DarkTransParent" />

这个activity不用做别的设置,布局文件里仅包含一个TextView和一个Button。
如果在布局文件里给它们设置了背景色,则背景色也会显示出来。

效果如下:

但是这个方法有缺点:
1. 页面布局会被自动调整,不易控制。
2. 背景的暗色不好改。

所以尝试了一种新的方案:

方案二:
继承系统的透明主题,然后自定义windowBackground属性:

    <style name="DarkTransParent" parent="android:style/Theme.Translucent"> <item name="android:windowBackground">@color/lock_bg style>

看下Theme.Translucent的定义:

    

然后,lock_bg即为我们想要设置的背景的颜色,我们可以在colors.xml中自定义其值:

 <color name="lock_bg">#cc000000

然后把这个主题应用到activity即可:

        <activity  android:name=".activity.TestActivity" android:theme="@style/DarkTransParent" />