清除FLAG_NOT_TOUCHABLE后接收过去的事件

jeg*_*umi 7 android

我有一项活动,我希望在一段时间内避开用户触摸按钮.

我这样做:

WindowManager.LayoutParams params = getWindow().getAttributes();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
            | WindowManager.LayoutParams.FLAG_FULLSCREEN);

getWindow().setAttributes(params);
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是当我回来接收触摸事件时:

WindowManager.LayoutParams params = getWindow().getAttributes();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
            | WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(params);
Run Code Online (Sandbox Code Playgroud)

我在不可触摸的时间段内收到用户触摸的所有事件亲属.

知道怎么放弃这个事件吗?

Yeu*_*ung 2

我面临同样的问题,但我想出了一个解决方法,而不会弄乱窗口标志。尝试这个:

@Override
public boolean dispatchTouchEvent (MotionEvent ev){
    if(activityTouchable == false)return true;
    else return super.dispatchTouchEvent(ev);
}

@Override
public boolean dispatchKeyEvent (KeyEvent event){
    if(activityTouchable == false)return true;
    else return super.dispatchKeyEvent(event);
}
Run Code Online (Sandbox Code Playgroud)