通过Theme.Translucent
有三种样式:
@android:style/Theme.Translucent
@android:style/Theme.Translucent.NoTitleBar
@android:style/Theme.Translucent.NoTitleBar.Fullscreen
在清单文件中设置在需要透明的activity上即可 如:
注意:如果直接使用了,你的程序也许会直接崩溃!原因可能是你的Activity继承的是V7包的AppCompatActivity,这时你所使用的主题要与Theme.AppCompat兼容,否则程序就会崩溃了。
解决方案:
使你的Activity继承android.app包的Activity。
第二种: 代码方式
private void translucentActivity(Activity activity) {
try {
activity.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
activity.getWindow().getDecorView().setBackground(null);
Method activityOptions = Activity.class.getDeclaredMethod("getActivityOptions");
activityOptions.setAccessible(true);
Object options = activityOptions.invoke(activity);
Class<?>[] classes = Activity.class.getDeclaredClasses();
Class<?> aClass = null;
for (Class clazz : classes) {
if (clazz.getSimpleName().contains("TranslucentConversionListener")) {
aClass = clazz;
}
}
Method method = Activity.class.getDeclaredMethod("convertToTranslucent",
aClass, ActivityOptions.class);
method.setAccessible(true);
method.invoke(activity, null, options);
} catch (Throwable t) {
t.printStackTrace();
}
}
第三种:
super.setTheme(android.R.style.Theme_Translucent_NoTitleBar);
写一个style 样式 让清单文件的所要透明的activity应用(这种方式可以防止闪白屏)
<style name="translucent"> <item name="android:windowIsTranslucent">true</item> </style>
清单文件:
注意,以上设置都需要activity继承activity