
Android PopupWindow模拟Windows开始菜单显示消失效果DEMO下载:
具体下载目录在 /pub/Android源码集锦/2011年/11月/Android PopupWindow模拟Windows开始菜单显示消失效果/
其中有三点要注意:
1.PopupWindow的参数设置
2.当PopupWindow显示时焦点会落在其中,所以监听事件的是它里面的View,如例中的Touch事件。按键事件是占整个View的ListView监听的。很奇怪的是不是里面的LinearLayout,如果高人知道,请在下面留言,小弟不甚感激。
3.最后一点是注意按键事件。例子中重写了Activity的OnKeyDown事件,而在ListView中的OnKey方法必须拦截KeyDown事件。如果不拦截菜单出现就会消失,因为OnKey方法会因Down和Up调用两次;如果拦截的是Up事件,情况也是一样的,因为当菜单没有出现按Menu键时,先执行Activity里面的onKeyDown事件,菜单出现。注意菜单出现是Down事件,那Up呢?正好当PopupWindow出现时,ListView继续执行事件,会执行OnKey事件,如果是拦截的Action是Up则会执行,所以整个事件会两个地方执行。有人说在Activity里面的OnKeyDown事件return true进行拦截不就行了,这样事件就不会执行到PopupWindow上面,这样想没有错,如果真的是那样,那按Back键后,整个Activity就不会退出。
以上是第一种方法。