用户按下主屏幕或菜单键时,windowmanager视图的dispatchKeyEvent()不起作用

时间:2018-08-29 12:06:04

标签: android android-windowmanager

问题::当用户按下其设备上的主屏幕或菜单键时,则不会触发dispatchKeyEvent(),但是当用户按下其设备上的后退按钮时,就会调用dispatchKeyEvent()方法。

这是我的代码片段:

 viewHolder = new RelativeLayout(context) {
        @Override
            public boolean dispatchKeyEvent(KeyEvent event) {
            Log.e(TAG, "dispatchKeyEvent: ");
            if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == 0) {
                Log.e(TAG, "dispatchKeyEvent: KEYCODE_BACK");
                if (viewHolder != null) {
                    if (viewHolder.getWindowToken() != null) {
                        mWindowManager.removeView(viewHolder);
                        mOverlayView.setVisibility(VISIBLE);
                    } else {
                        return super.dispatchKeyEvent(event);
                    }
                }
            }

            if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
                Log.e(TAG, "dispatchKeyEvent: KEYCODE_HOME");
                if (viewHolder != null) {
                    if (viewHolder.getWindowToken() != null) {
                        mWindowManager.removeView(viewHolder);
                        mOverlayView.setVisibility(VISIBLE);
                    } else {
                        return super.dispatchKeyEvent(event);
                    }
                }
            }

            if (event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
                Log.e(TAG, "dispatchKeyEvent: KEYCODE_MENU");
                if (viewHolder != null) {
                    if (viewHolder.getWindowToken() != null) {
                        mWindowManager.removeView(viewHolder);
                        mOverlayView.setVisibility(VISIBLE);
                    } else {
                        return super.dispatchKeyEvent(event);
                    }
                }
            }
            return super.dispatchKeyEvent(event);
        }
    };

此处的viewHolder是相对布局,它已添加到窗口管理器中。

现在,我想在用户按下设备上的主页,菜单和返回键时从windowmanager中删除视图

当用户按下后退按钮时,此方法会很好地触发,并且还从窗口管理器中删除了相对布局,但是当按下home键时,该设备上的菜单键不被调用

0 个答案:

没有答案