消耗触摸事件阻止我检测未来事件

时间:2013-04-26 13:28:13

标签: android google-maps events listener google-maps-android-api-2

我的应用有问题:我有一个带有片段的FrameLayout,其中包含来自Google Maps Android APi(v2)的地图,以及一个用于在地图顶部显示各种按钮的自定义视图。 / p>

我想在移动地图时不显示其中一些元素,为此我使用View的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;

上绘制在地图上的元素

现在,我的问题在于:如果我放错了,我说事件没有被消耗,并且当记录触摸事件时Android OS不再通知我,因此未检测到MotionEvent.ACTION_UP并且按钮保持隐藏状态。如果我这样做,GoogleMap对象此时不再检测到触摸事件,我无法移动地图。有没有办法继续检测所有未来的触摸事件,同时不消耗第一个事件?

1 个答案:

答案 0 :(得分:0)

使用onInterceptTouchEventdispatchTouchEvent

您可以在此处阅读有关差异的内容:Android: Difference between onInterceptTouchEvent and dispatchTouchEvent?