滑动以退出沉浸式模式是由画布触摸事件引起的

时间:2018-10-01 11:52:28

标签: android android-canvas surfaceview android-immersive

我有一个SurfaceView,它使用画布基于触摸事件进行渲染。 该活动还使用沉浸式模式使其全屏显示。

问题在于,当用户从屏幕顶部滑动以退出沉浸式模式时,滑动会被画布拾取。

如何避免在画布中处理这些触摸事件?

SurfaceView类

public class PEQSurfaceView extends SurfaceView implements 
SurfaceHolder.Callback
{

   @Override
   public void surfaceCreated(SurfaceHolder holder)
   {
       // make the GamePanel focusable so it can handle events
       requestFocus();
       setFocusable(true);
       setFocusableInTouchMode(true);
   }

   @Override
   public boolean onTouchEvent(MotionEvent event)
   {...}

布局在侧面也有一些标准控件,我注意到这些控件也以相同的方式受到影响。即如果向下滑动触摸进度条,则进度条将会前进

1 个答案:

答案 0 :(得分:0)

不确定它是否符合您的期望,但作为建议,我会这样做:
  1)在屏幕顶部留出一些空间,以保持沉浸式移动手势。
  2)然后在onTouchEvent方法中检查Y坐标是否在该顶部区域内(我认为10dp就足够了),然后返回false(这将禁用处理SurfaceView中的事件)

因此,如果用户从屏幕顶部边缘swipe down开始使用

可能您需要设置一些布尔变量,并在该特殊区域内的ACTION DOWN上将其设置为true,然后在ACTION_UP和ACTION_CANCEL上释放它,然后在ACTION_MOVE内释放它flag == true,因为特殊手势尚未完成,您需要返回true。