android中popupwindow弹出后,屏幕背景变成半透明

本文介绍了一种简单的实现PopupWindow弹出时背景变为半透明的方法,并提供了完整的代码示例,包括如何设置背景透明度及如何在PopupWindow关闭时恢复背景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android中popupwindow弹出后,屏幕背景变成半透明这个效果很普通。实现的方法也很多。我使用的可能是最简单的一种,就是设置一下getWindows的透明度。不多说上代码

  1. /** 
  2.      * 设置添加屏幕的背景透明度 
  3.      * @param bgAlpha 
  4.      */  
  5.     public void backgroundAlpha(float bgAlpha)  
  6.     {  
  7.         WindowManager.LayoutParams lp = getWindow().getAttributes();  
  8.             lp.alpha = bgAlpha; //0.0-1.0  
  9.                 getWindow().setAttributes(lp);  
  10.     }  
之所以设置成方法,是因为当popwindow关闭的时候我们还要将这个透明度改回来。
  1.        popWin = new PopupWindow(popAddNoteType, mScreenWidth *8 /10, ViewGroup.LayoutParams.WRAP_CONTENT);  
  2. //在PopupWindow里面就加上下面代码,让键盘弹出时,不会挡住pop窗口。  
  3. popWin.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);           
  4. popWin.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);  
  5. //点击空白处时,隐藏掉pop窗口  
  6. popWin.setFocusable(true);  
  7. popWin.setBackgroundDrawable(new BitmapDrawable());  
  8. backgroundAlpha(1f);  
  9.   
  10.       //添加pop窗口关闭事件  
  11.       popWin.setOnDismissListener(new poponDismissListener());  

这里可能有人就要问了,当我点击屏幕空白处时,pop窗口是没了,可是背景还是半透明的,这不行啊。这里我们就用到一个事件
  1. /** 
  2.      * 添加新笔记时弹出的popWin关闭的事件,主要是为了将背景透明度改回来 
  3.      * @author cg 
  4.      * 
  5.      */  
  6.     class poponDismissListener implements PopupWindow.OnDismissListener{  
  7.   
  8.         @Override  
  9.         public void onDismiss() {  
  10.             // TODO Auto-generated method stub  
  11.             //Log.v("List_noteTypeActivity:", "我是关闭事件");  
  12.             backgroundAlpha(1f);  
  13.         }  
  14.           
  15.     }  
上面
  1. popWin.setOnDismissListener(new poponDismissListener());  
的代码就是调用这个事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值