使用触摸事件使我无法检测未来的事件



我有一个问题与我的应用程序:我有一个FrameLayout与一个片段,其中包含从谷歌地图Android APi (v2)的地图,和一个自定义的视图,我用它来显示各种按钮在地图的顶部。

我希望其中一些元素在地图被移动时不显示,为此我使用视图的onTouchEvent()函数:

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getActionMasked()) {
    case MotionEvent.ACTION_DOWN:
        pressed = true;
        invalidate();
        break;
    case MotionEvent.ACTION_UP:
        pressed = false;
        invalidate();
        break;
    }
    return false;
}

onDraw()函数只显示绘制在地图上的元素,如果pressed == false;

现在,我的问题是在返回:如果我设置false,我说事件没有被消耗,并且Android操作系统不再通知我触摸事件被记录,因此MotionEvent。ACTION_UP没有被检测到,按钮保持隐藏状态。如果我设置为true,则这次GoogleMap对象不再检测到触摸事件,并且我不能移动地图。是否有一种方法可以检测所有未来的触摸事件,而不消耗第一个事件?

使用onInterceptTouchEventdispatchTouchEvent

Android: onInterceptTouchEvent和dispatchTouchEvent之间的差异?

最新更新