我有一个问题与我的应用程序:我有一个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对象不再检测到触摸事件,并且我不能移动地图。是否有一种方法可以检测所有未来的触摸事件,而不消耗第一个事件?
使用onInterceptTouchEvent
或dispatchTouchEvent