使叠加层从自动隐藏(半透明)导航栏中接收运动事件?

时间:2018-11-14 19:16:06

标签: android input navigationbar android-windowmanager motionevent

我在屏幕底部有一个小的覆盖层,可以正常使用。但是,当自动隐藏的导航栏暂时暴露(也就是半透明)时,叠加层将不再接收运动事件。我可以在正确的底部看到它,但是导航栏会记录所有事件。我注意到有些自夸“导航手势”的应用程序能够以某种方式获取运动事件,这意味着即使暴露了导航栏,用户也可以向上滑动,而该应用程序仍将获取事件。这怎么可能?我已经尝试过所有我能想到的标志组合,但是没有任何效果。

Point screen_size = new Point();
WindowManager.LayoutParams mParams;

WindowManager mWindowManager = getSystemService(WINDOW_SERVICE);
        mWindowManager.getDefaultDisplay().getRealSize(screen_size);

layout = new LinearLayout(getApplicationContext());
layout.setOnTouchListener(this);

// color for debug.
layout.setBackgroundColor(0x55ff0000);

mParams = new WindowManager.LayoutParams(
        screen_size.x,
        40,
        0,
        0,    
        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
        Wi    ndowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);
mParams.gravity = Gravity.BOTTOM;
mWindowManager.addView(layout, mParams);    

0 个答案:

没有答案