要实现Activity的透明效果,查了点儿资料。发现有两种实现方法
其一,直接在相应的xml中进行一下配置即可。
其二,是通过代码进行设置。相对于第一种来说,复杂许多,但是效果也比较自由。
首先,来试一下通过配置得到的效果。
配置是通过安卓的样式来实现的,具体的做法是在AndroidManifest.xml找到要实现透明的Activity,在想要实现透明的activity中添加如下的代码:
android:theme="@android:style/Theme.Translucent
只这一句就完成了。下面是我工程的截图。
这样打开应用可以直接看到手机桌面的应用图标,但是却无法点击。因为这是在你的Activity中,就算透明了,依旧是存在的,可以通过上面的标题栏确定你是否还在你的应用界面中,还有一个缺点就是透明度必须是100%,无法设置透明度。
第二种:
先上效果图:
如何实现。
第一步,先自定义我们的style文件。
在res/values文件夹下,新建一个style.xml文件,写入下面的代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="translucent">
<item name="android:windowBackground">@color/translucent_background</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>
</resources>
再在该文件夹下面新建一个color.xml文件,写入下面的代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="translucent_background">#90000000</color>
</resources>
这里需要解释一下,这里的color参数,是两位数一个单位,前两位数是透明度,后面每两位一对是16进制颜色数字,这里的示例是白色的。
第二步,在AndroidManifest.xml找到要实现透明的Activity,在想要实现透明的activity中添加如下的代码:
android:theme="@style/translucent"
或者也可以在相应界面的oncreate()方法中添加如下的代码:
setTheme(R.style.translucent);
这个时候就可以实现Activity的透明了。包括标题栏也是一起透明的,很和谐。
但是,按钮的颜色还是很深,其实就是没一起透明。怎么办?
同样在oncreate()方法里面设置一下就行
Window window=getWindow();
WindowManager.LayoutParams wl = window.getAttributes();
wl.flags=WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
wl.alpha=0.6f;//这句就是设置窗口里控件的透明度的.0.0全透明.1.0不透明.
window.setAttributes(wl);
这样就是上图的最终效果了。
下面附上最终的工程的代码