一. 实例说明

二. 关键技术
主要使用 PopupWindow
类的构造方法,View.OnTouchListener 接口中的 OnTouch事件,实现以上效果。
private void OnMenu() {
//获取自定义的菜单布局文件
final View popuWindow_view = getLayoutInflater().inflate(R.layout.menu, null, false);
//创建popupWindow实例,设置菜单宽度与高度为包裹自身
popupWindow = new PopupWindow(popuWindow_view, ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT, true);
//设置菜单显示在按钮上面
popupWindow.showAsDropDown(button,0,0);
//单击其他地方消失
popuWindow_view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
//如果菜单存在并且为显示状态,就关闭菜单并初始化
if(popupWindow !=null && popupWindow.isShowing()){
popupWindow.dismiss();
popupWindow = null;
}
return false;
}
});
}
三. github
https://github.com/Frioa/My200Application/tree/master/WeixinMenu
网友评论