popupWindow弹出窗口的完美实现(实现弹出背景变暗效果)

最近尝试使用popupWindow实现背景变暗效果,自己优化了一下,并封装成一个可以调用的方法,默认实现弹出窗口显示在传入view的下方,以下代码有详细注释,有问题可以留言

展示效果如下:

/**
     * 我封装的这个popupwindow的方法,
     * 第一个参数是他要显示在哪个控件下面
     * 第二个参数是要填充到popupWindow中的布局文件id
     * 第三个参数是要给popupWindow设置的背景资源id
     */
     private void showPopWindow(View v,int convertViewResource,int drawbelResource) {
        //创建一个popUpWindow
        if (popupWindow == null) {
            View popLayout = LayoutInflater.from(getActivity()).inflate(convertViewResource, null);
            //给popUpWindow内的空间设置点击事件
            popLayout.findViewById(R.id.tv_pop_notice).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getActivity(), FindGuanzhuActivity.class);
                    startActivity(intent);
                }
            });
            popLayout.findViewById(R.id.tv_pop_group).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getActivity(), GroupFindActivity.class);
                    startActivity(intent);
                }
            });
            //实例化一个popupWindow
            popupWindow = new PopupWindow(popLayout, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);

            //产生背景变暗效果
            WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();
            lp.alpha = 0.4f;
            getActivity().getWindow().setAttributes(lp);
            //点击外面popupWindow消失
            popupWindow.setOutsideTouchable(true);
            //popupWindow获取焦点
            popupWindow.setFocusable(true);
            //popupWindow设置背景图
            Drawable drawable = getResources().getDrawable(drawbelResource);
            popupWindow.setBackgroundDrawable(drawable);
            //popupWindow设置开场动画风格
            //popupWindow.setAnimationStyle(R.style.popupWindow_anim);
            //刷新popupWindow
            //popupWindow.update();

            //设置popupWindow消失时的监听
            popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
                //在dismiss中恢复透明度
                public void onDismiss() {
                    WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();
                    lp.alpha = 1f;
                    getActivity().getWindow().setAttributes(lp);
                }
            });
            popupWindow.showAsDropDown(v);

        }else {
            //如果popupWindow正在显示,接下来隐藏
            if (popupWindow.isShowing()) {
                popupWindow.dismiss();
            }else {
                //产生背景变暗效果
                WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();
                lp.alpha = 0.4f;
                getActivity().getWindow().setAttributes(lp);
                popupWindow.showAsDropDown(v);
            }
        }
       `
}
时间: 2024-08-24 19:11:46

popupWindow弹出窗口的完美实现(实现弹出背景变暗效果)的相关文章

jsp网页弹出窗口的多种办法

http://blog.csdn.net/huangfoxjava/article/details/2973033 登录|注册     huangfoxjava的专栏 目录视图 摘要视图 订阅 关于jsp网页弹出窗口[很多种方法......] 分类: JSP2008-09-24 14:22 5799人阅读 评论(0) 收藏 举报 jspjavascript框架html脚本浏览器 各种弹出页面的设计 [1.普通的弹出窗口] 其实代码非常简单: <SCRIPT LANGUAGE=javascript

JS弹出窗口代码大全(详细整理)

1.弹启一个全屏窗口 复制代码代码如下: <html> <body http://www.jb51.net','脚本之家','fullscreen');">; <b>www.jb51.net</b> </body> </html> 2.弹启一个被F11化后的窗口 复制代码代码如下: <html> <body 'http://www.jb51.net','脚本之家','channelmode');"

selenium webdriver学习(六)------------如何得到弹出窗口

在selenium 1.X里面得到弹出窗口是一件比较麻烦的事,特别是新开窗口没有id.name的时候.当时还整理了处理了几种方法,详见:http://seleniumcn.cn/read.php?tid=791 .在selenium webdriver中得到新开窗口相对简单的多,它无关新开窗口的id.name等属性.以下面的html为例: [html] view plaincopyprint? <span style="white-space: normal; background-col

[技术]打开网页弹出窗口的代码

经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项.版权信息.警告.欢迎光顾之类的话或者作者想要特别提示的信息.其实制作这样的页面效果非常的容易,只要往该页面的html里加入几段javascript代码即可实现.下面俺就带您剖析它的奥秘. [1.最基本的弹出窗口代码] 其实代码非常简单: <script language="javascript"> <!-- window.open ('pa

JS只弹出一个居中弹出窗口

var newWindow;//定义一个窗口,有利于窗口间的通讯function makeNewWindow(url) {   if (!newWindow || newWindow.closed) {        var width = 400;        var height = 300;        var left = parseInt((screen.availWidth/2) - (width/2));//屏幕居中        var top = parseInt((scr

HTML页面弹出窗口调整代码总结

弹出跟你当前的窗口有没有菜单工具栏没有关系,你只要在页面中写一个脚本它就弹出了.比如<a href=# onclick="window.open('xxx.aspx','窗口名称','参数');">xxxxx</a> 以下列出一些弹出窗口的参数,你可自行设定,参数之间用逗号分隔 可选.字符串--列出对象表并用逗号分开.每一项都有自己的值,他们将被分开(如:"fullscreen=yes, toolbar=yes").下面是被支持的各种特性.

弹出窗口代码大全

经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项.版权信息.警告.欢迎光顾之类的话或者作者想要特别提示的信息.其实制作这样的页面效果非常的容易,只要往该页面的HTML里加入几段Javascript代码即可实现.下面俺就带您剖析它的奥秘. [1.最基本的弹出窗口代码] 其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('pa

JavaScript 弹出窗口总结

1: window.open <!-- window.open('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no') //写成一行 --> 参数解释: window.open 弹出新窗口的命令: 'page.html' 弹出窗口的文件名: 'newwindow' 弹出窗

selenium +python 如何得到弹出窗口

捕获或者说定位弹出窗口的关键在于获得弹出窗口的句柄.我还是喜欢通过例子来说明: #-*-coding=utf-8 from selenium import webdriver import unittest class login(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://www.bai