我的应用有问题:我有一个带有片段的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对象此时不再检测到触摸事件,我无法移动地图。有没有办法继续检测所有未来的触摸事件,同时不消耗第一个事件?
答案 0 :(得分:0)
使用onInterceptTouchEvent
或dispatchTouchEvent
。
您可以在此处阅读有关差异的内容:Android: Difference between onInterceptTouchEvent and dispatchTouchEvent?