简易实现:popupWindow背景渐变变暗
"这篇资源主要讲述了如何在Android开发中实现使popUpWindow背景变暗的效果。作者通过创建两个popUpWindow,一个用于显示主要内容,另一个作为半透明的黑色背景,来达到所需效果。" 在Android应用开发中,popUpWindow通常用于在界面上弹出临时的、浮动的视图,比如下拉菜单、提示框等。有时我们希望在弹出popUpWindow时,让其背后的界面变暗,以增强弹窗的视觉焦点。这个资源提供的方法就是解决这个问题的一个实例。 首先,我们需要创建两个popUpWindow实例:`pop` 和 `backPop`。`pop` 用于展示实际的内容,而 `backPop` 用于作为背景,使屏幕变暗。为了实现背景变暗,我们可以创建一个颜色drawable对象 `dw`,并设置其颜色为半透明黑色(0x00000000表示完全透明,数值越大,颜色越深,这里设置为0x00,即16进制的0,代表最深的黑色,全不透明)。 接下来,我们分别初始化两个popUpWindow,并设置它们的属性。`setBackgroundDrawable(dw)` 是用来设置popUpWindow的背景颜色。`setFocusable(true)`、`setTouchable(true)` 和 `setOutsideTouchable(true)` 用于确保popUpWindow可以接收触摸事件,这样用户可以点击popUpWindow或其外的区域来关闭它。 对于 `pop`,我们使用 `LayoutParams.WRAP_CONTENT` 来自适应内容大小,而对于 `backPop`,我们设置为 `LayoutParams.MATCH_PARENT`,使其填充整个屏幕,从而形成背景效果。 然后,我们还需要找到需要显示内容的布局并将其添加到 `pop` 中,以及设置 `backPop` 的背景布局。在这个例子中,`R.layout.xxx` 需要替换为你实际的布局资源ID。 最后,我们需要在合适的时机调用 `showAsDropDown()` 或 `showAtLocation()` 方法来显示这两个popUpWindow,确保 `backPop` 先于 `pop` 显示,这样 `backPop` 就会覆盖在背景上,达到变暗的效果。 这个资源提供了一种简单易行的方法来实现popUpWindow背景变暗的功能,对于开发者来说是一个实用的技巧,可以在自己的项目中进行参考和应用。在实际开发中,根据具体需求,可能需要对颜色透明度、布局等进行调整以达到最佳视觉效果。
双popUpWindow前方是需要的popUpWindow,背景用一个黑色的popUpWindow,设为半透明
public void showPop(){
PopupWindow pop,backPop;
TextView test;
LinearLayout container;
View view = LayoutParams.from(this).inflate(R.layout.xxx(需要的布局),null);
View backView = LayoutParams.from(this).inflate(R.layout.xxx(背景布局就是一个线性布局就可以),null);
//背景线性布局的id获取
container = (LinearLayout) bgView.findViewById(R.id.ll_order_pop_bg);
//测试代码 布局中加载一个测试文本框
test = (TextView) view.findViewById(R.id.tv_order_main_pop_scanning);
//以下代码非测试代码
ColorDrawable dw = new ColorDrawable(0x00000000);
pop = new PopupWindow(view, LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
pop.setBackgroundDrawable(dw);
pop.setFocusable(true);
pop.setTouchable(true);
pop.setOutsideTouchable(true);
backPop = new PopupWindow(bgView,LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
backPop.setBackgroundDrawable(dw);
backPop.setFocusable(true);
backPop.setTouchable(true);
backPop.setOutsideTouchable(true);
//设置父布局
View v = LayoutInflater.from(this).inflate(R.layout.xxx(父布局), null);
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦