Android 解决Dialog 样式的Activity 半透明背景失效问题

一、 设置透明主题

<style name="ActivityTransparent" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@color/color_00000000</item> <!-- 背景色透明度 -->
        <item name="windowNoTitle">true</item><!-- 无标题 -->
        <item name="android:windowActionBar">false</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowIsTranslucent">true</item><!-- 半透明,设置为false无透明效果 -->
        <item name="android:backgroundDimEnabled">true</item><!-- 模糊 -->
    </style>

需要注意的 因为我们的activity 都是继承自AppCompatActivity 所以我们的theme 也一定是AppCompat 样式的 ,我所使用的是 Theme.AppCompat.Light.NoActionBar

二、manifest里activity 引用主题

<activity
            android:name=".AudioRecordActivity"
            android:screenOrientation="portrait"
            android:theme="@style/ActivityTransparent" />
``


三、设置activity 的状态栏全透明,适配部分机型半透明失效问题

在这里插入图片描述

// 设置全透明状态栏
        setStatusBarFullTransparent()
        setContentView(R.layout.activity_chnc_audio_record)
        overridePendingTransition(R.anim.activity_translate_in, R.anim.common_none)
        // 部分手机设置透明主题 无效问题
        theme.applyStyle(R.style.ActivityTransparent,true)

设置状态栏全透明

     /**
     * 全透状态栏
     */
    private fun setStatusBarFullTransparent() {
        if (Build.VERSION.SDK_INT >= 21) { //21表示5.0
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    or View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            window.statusBarColor = Color.TRANSPARENT
        } else if (Build.VERSION.SDK_INT >= 19) { //19表示4.4
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            //虚拟键盘也透明
            //getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值