Popupwindow边缘半透明的实现及一些其他解析
来源:互联网 发布:胡公子淘宝 编辑:程序博客网 时间:2024/05/14 07:15
首先Popupwindow和alertDialog是经常拿来比较的,其区别在于Popupwindow是阻塞的,alertDialog是不阻塞的,看情况适时的选用。
首先说怎么实现Popupwindow弹出时和alertDialog一样的边缘背景半透明的效果,实现方法如下:
在Popupwindow要显示之前设置窗体透明度
WindowManager.LayoutParams lp = getWindow().getAttributes();lp.alpha = 0.5f;getWindow().setAttributes(lp);
随后重写Popupwindow的setonDismissListener方法,监听Popupwindow的dismiss事件,在其中再回复窗体透明度
WindowManager.LayoutParams lp = getWindow().getAttributes();lp.alpha = 1f;getWindow().setAttributes(lp);
这两步就简单的实现了半透明的效果。
还有需要注意Popupwindow在创建之后需要设置背景setBackgroundDrawable();
如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框,即使是setOutsideTouchable(true);也没有用,而当我们设置了背景之后,即使setOutsideTouchable(false);点击非PopupWindow区域也会dismiss PopupWindow
最后我发现setOutsideTouchable方法并不是和alertDialog的setCancelable一样的作用(自以为是了一波),setOutsideTouchable方法的意思是,外部可点击,需要和setFocusable(false)配合使用,记住一定要是false,设置当PopupWindow弹出的时候父view依然可以获得焦点,否则即使你设置了setOutsideTouchable为true,父view也不会响应ontouchevent事件,设置了setFocusable(false)时候也有一个问题就是你按返回键的时候不会再dismiss PopupWindow,因为PopupWindow没有获得焦点,解决办法当然就是重写返回键的监听事件,也很简单。
基本上会有比较多不解的就上面这几个,好好理解理解
另如果想要实现点击外围不消失可参考:http://www.cnblogs.com/mengdd/p/3569127.html最后
本文还参考了:http://blog.csdn.net/hustpzb/article/details/7891803
- Popupwindow边缘半透明的实现及一些其他解析
- 实现半透明的popupwindow
- 实现半透明的popupwindow
- 实现半透明的popupwindow
- Android实现半透明的popupwindow
- 实现半透明的popupwindow的源码
- 实现半透明的popupwindow的源码
- 实现半透明的popupwindow的源码
- 实现半透明的popupwindow的源码
- 实现半透明的popupwindow的源码
- Android实现半透明的popupwindow的源码
- 实现半透明的popupwindow的源码
- 实现半透明的popupwindow的源码
- 实现半透明popupWindow
- popupWindow 实现悬浮半透明效果
- 划出一个半透明的PopupWindow
- popupwindow自定义半透明的菜单
- 关于图像处理中所涉及到的一些边缘概念及名词解析
- scanf()函数错误把输入缓存里的回车作为一次字符输入
- 《netty权威指南》私有协议栈开发中遇到的坑
- 手游登录支持
- UGUI 3d坐标转UI坐标
- 解决Android二维码扫描ZXing竖屏拉伸变长闪退扫描区域小等问题
- Popupwindow边缘半透明的实现及一些其他解析
- 【刷题笔记/剑指Offer】Part 2 (11-20)
- Win2008r2 AD域控+第三方CA USBKey智能卡登录实验
- Groovy入门教程
- 单引号和双引号所包围的字符串有什么区别
- java se 多线程下载
- iOS中获取各种文件的目录路径的方法
- chmod 与fchmod函数
- 数据中心网络虚拟化 隧道技术