安卓activity 设置Activity背景色为透明

通过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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值