要实现Activity的透明效果,查了点儿资料。发现有两种实现方法

其一,直接在相应的xml中进行一下配置即可。

其二,是通过代码进行设置。相对于第一种来说,复杂许多,但是效果也比较自由。

首先,来试一下通过配置得到的效果。

配置是通过安卓的样式来实现的,具体的做法是在AndroidManifest.xml找到要实现透明的Activity,在想要实现透明的activity中添加如下的代码:

android:theme="@android:style/Theme.Translucent

只这一句就完成了。下面是我工程的截图。


Android view 透明 安卓 透明activity_Activity透明



这样打开应用可以直接看到手机桌面的应用图标,但是却无法点击。因为这是在你的Activity中,就算透明了,依旧是存在的,可以通过上面的标题栏确定你是否还在你的应用界面中,还有一个缺点就是透明度必须是100%,无法设置透明度。


第二种:

先上效果图:

Android view 透明 安卓 透明activity_组件_02

如何实现。

第一步,先自定义我们的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);

这样就是上图的最终效果了。

下面附上最终的工程的代码

工程Demo