アプリに問題があります: Google Maps Android API (v2) の地図を含む Fragment を持つ FrameLayout と、地図の上にさまざまなボタンを表示するために使用するカスタマイズされたビューがあります。
マップの移動中にこれらの要素の一部を表示しないようにしたいので、 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;
さて、私の問題は戻り値にあります: false を入力すると、イベントが消費されなかったと言い、Android OS はタッチイベントが記録されたときに通知しなくなります。したがって、MotionEvent.ACTION_UP は検出されず、ボタンはそのままになります。隠れた。true にすると、今度はタッチ イベントが GoogleMap オブジェクトによって検出されなくなり、マップを移動できなくなります。最初のイベントを消費せずに、将来のすべてのタッチイベントを検出し続ける方法はありますか?