1、第一种方案:
// 设置屏幕透明度
public void backgroundAlpha(float bgAlpha) {
WindowManager.LayoutParams lp = act.getWindow().getAttributes();
lp.alpha = bgAlpha; // 0.0~1.0
act.getWindow().setAttributes(lp); //act 是上下文context
//Android10 以后需要加上 否则无效
act.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
//设置背景颜色变暗
private void addBackground() {
backgroundAlpha(0.4f);
mPopupWindow.setOnDismissListener(() -> {
backgroundAlpha(1f);
});
}
2、第二种方案:
-第一步 布局文件
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--省略代码 -->
<!--黑色背景遮罩层,平时隐藏-->
<!--背景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);
网友评论