PopupWindow的dismiss()方法是将对象隐藏掉了,还是把对象销毁掉了?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PopupWindow的dismiss()方法是将对象隐藏掉了,还是把对象销毁掉了?相关的知识,希望对你有一定的参考价值。

我刚才在程序中试用了一下。该方法应该是隐藏掉了,并没有销毁对象。
<pre name="code" class="java">1.点击popwindow 以外的区域隐藏
使其聚焦
popupWindow.setFocusable(true);
设置允许在外点击消失
popupWindow.setOutsideTouchable(true);
2.点击"返回Back"也能使其消失,并且不会影响你的背景
popupWindow.setBackgroundDrawable(new BitmapDrawable());
3.点击popwindow自身的时候隐藏
popupWindow_view.setOnTouchListener(new OnTouchListener()

public boolean onTouch(View arg0, MotionEvent arg1)

if (popupWindow != null && popupWindow.isShowing())
popupWindow.dismiss();
return true;

return false;

);
参考技术A 想在popupwindow关闭之前进行一些操作。
对popupwindow设置onDismissListener监听器,要实现的操作可以写在onDismiss方法中
参考技术B 销毁掉追问

最后我在应用程序中试验了下,该方法应该是隐藏掉了,并没有销毁对象。

关于PopupWindow的一些备忘

1.有无背景对PopupWindow的影响。

设置了PopupWindow的background,点击Back键或者点击弹窗的外部区域,弹窗就会dismiss。相反,如果不设置PopupWindow的background,那么点击back键和点击弹窗的外部区域,弹窗是不会消失的。

原因是如果有背景,则会在contentView外面包一层PopupViewContainer之后作为mPopupView,如果没有背景,则直接用contentView作为mPopupView。而这个PopupViewContainer是一个内部私有类,它继承了FrameLayout,在其中重写了Key和Touch事件的分发处理

博文:http://www.cnblogs.com/mengdd/p/3569127.html 对它的源码进行了分析。

解决方法:

giftPopupWindow.setBackgroundDrawable(new BitmapDrawable());

 

2.部分型号的手机(如Nexus系列)有虚拟操作区域。如果PopupWindow操作区域为全屏,会遮挡住虚拟按键操作区。

giftPopupWindow.setBackgroundDrawable(new BitmapDrawable());

加入了这句话后,PopupWindow在计算全屏区域时将不会把虚拟操作区计算进去。

  

以上是关于PopupWindow的dismiss()方法是将对象隐藏掉了,还是把对象销毁掉了?的主要内容,如果未能解决你的问题,请参考以下文章

关于PopupWindow的一些备忘

popupwindow设置了消失动画,消失动画结束后有出现了。。。要怎么解决。。

Android PopupWindow 活动时背景模糊或变暗

我重写了一个popupwindow显示消息 并且在里面加了一个thread sleep两秒后执行d

dialog中含有editext,dialog消失以后,系统键盘怎么不消失

dialog的cancel和dismiss方法的异同