您的位置:首页 > 移动开发 > Android开发

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

2017-08-29 17:09 495 查看
小葵花课堂开课了
4000
哈哈,开个玩笑.

今天在网上搜了一下弹出popupWindow背景半透明 基本上都是用WindowManager.LayoutParams来写的(也就是今天咱们讲的第一种写法)

但是这样写确实简单 但是会把全屏幕都会变半透明(一般弹出popupWindow都会有一个标题栏也会变暗).这样写就不够美观了 下面我贴代码!

第一种写法

先来看一下效果图:



代码如下:

调用这个方法传入的参数 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”盖住 (也就是下面我说的第二种写法) 下面来看下效果图 这样就完美了.

第二种写法

效果图



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

下面来贴代码

第一步 布局文件

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

<!--我的列表是listview写的 -->
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list"
/>
<!--黑色背景遮罩层,平时隐藏 -->
<!--背景bg_transparent 就是一张半透明的图片 -->
<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);


这样写就把我的问题解决了

如果没解决你的问题 或者你还有什么更好的方法 可以留言互相交流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: