Android弹出popupWindow 背景变暗(背景半透明)(两种写法)

小葵花课堂开课了 哈哈,开个玩笑.

今天在网上搜了一下弹出popupWindow背景半透明 基本上都是用WindowManager.LayoutParams来写的(也就是今天咱们讲的第一种写法)
但是这样写确实简单 但是会把全屏幕都会变半透明(一般弹出popupWindow都会有一个标题栏也会变暗).这样写就不够美观了 下面我贴代码!

第一种写法

先来看一下效果图:
Android弹出popupWindow 背景变暗(背景半透明)(两种写法)_第1张图片

代码如下:

调用这个方法传入的参数 0.0~1.0f
backgroundAlpha(0.4f);

    // 设置屏幕透明度
    public void backgroundAlpha(float bgAlpha) {
        WindowManager.LayoutParams lp = act.getWindow().getAttributes();
        lp.alpha = bgAlpha; // 0.0~1.0
        act.getWindow().setAttributes(lp); //act 是上下文context

    }

这种写法虽然简单 但是没达到理想效果 公司UI画的设计图是让”如图 区域1”半透明 其他导航栏还是保持着高亮状态

下面就想到用一张半透明的图片把”如图 区域1”盖住 (也就是下面我说的第二种写法) 下面来看下效果图 这样就完美了.

第二种写法

效果图

Android弹出popupWindow 背景变暗(背景半透明)(两种写法)_第2张图片

首先先准备一张半透明的图片(和公司UI要一张)

下面来贴代码
第一步 布局文件

 <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        
        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/list"
            />
        
        
        <View
            android:id="@+id/view_transparent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone"
            android:background="@drawable/bg_transparent"/>
    RelativeLayout>

第二步 activity里
在弹出popupWindow的的时候让其显示,在关闭popupWindow的时候让其隐藏就可以了


         private View transparent;
         transparent = findViewById(R.id.view_transparent);
         //在弹出popupWindow的的时候让其显示
         transparent.setVisibility(View.VISIBLE);
         //在关闭popupWindow的时候让其隐藏就可以了
         transparent.setVisibility(View.GONE);

这样写就把我的问题解决了
如果没解决你的问题 或者你还有什么更好的方法 可以留言互相交流

你可能感兴趣的:(Android)