0

移動アクションを実行するタイミングと、MapView でジオポイントを単にタップするタイミングを定義する方法に問題があります。問題は、タップすると次の evEnts が表示されるということです: ACTION_DOWN(1 発火)、ACTION_MOVE(3 発火)、ACTION_DOWN(1 発火)。移動すると、次のイベントが表示されます: ACTION_DOWN(1 回の火災)、ACTION_MOVE(LOT FIRES)、ACTION_DOWN(1 回の火災)。

そのように定義する方法と、ジオポイントの alertDialog がある onTap 関数をブロックしないようにする方法は?

私がやったことですが、少し混乱しています:

  @Override
    protected boolean onTap(int index) {
    Log.i("Tapped? ", "TAP!");
    if (mOverlays.get(index) != null && !touchStarted) {
        OverlayItem item = mOverlays.get(index);
        alert.showAlertDialog(mContext, item.getTitle(), item.getSnippet(), true);
        return true;
    } else {
        return false; // Null GeoPoint
    }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event, MapView mapView) {

    Log.e("Touch", Integer.toString(event.getAction()));

    int action = event.getAction();
    if (action == MotionEvent.ACTION_DOWN) {
        touchStarted = true;
    } else if (action == MotionEvent.ACTION_MOVE) {
        // movement: cancel the touch press

        touchStarted = false;

        if (event.getPointerCount() > 3)
        Log.e("Movement", "Yeee");
        return true;

    }
    return true;
    }
4

1 に答える 1

0

アクティビティでは、タップイベントを見つけるためのonDoubleTapListenerを実装し、実行したようにonTouchEventで、Moveイベントを処理できるようになります。パフォーマンスを向上させるために、ifステートメントの代わりにmoveおよびその他のアクションをチェックするためにswitchcaseを使用します

たとえば、abcがアクティビティクラスの場合、

public class abc extends Activity implements OnDoubleTapListener{
    //Double tap listener

    public boolean onSingleTapConfirmed(MotionEvent event) {
       //your code
    }
}
于 2012-10-22T10:23:30.103 に答える