0

ここでの目的は、Google マップにマーカーを配置することです。

ユーザーが longClick() を実行したときにマーカーを配置したい。

問題。ロング クリック リスナーには、ユーザーがクリックした場所に関するデータがありません。彼が実際にクリックしたことしかわかりません。また、タッチ イベントを使用し、それを消費しない場合 (マップがスクロールにデフォルト リスナーを使用する必要があります)、タッチがリセットされても、他のタッチ イベントをリッスンしません。(それは他のイベントでは起こりません、afaik)。

ユーザーがどこで longClick を行ったかを知るにはどうすればよいですか?

4

2 に答える 2

1
public boolean onTouchEvent(MotionEvent event) {
   switch(event.getAction()) {
   case MotionEvent.ACTION_DOWN:
       dosomething
       return true; // processed the event
   default:
       return false;
   }
}

これにより、ACTION_DOWN イベントを処理し、その他すべてのデフォルト処理を行うことができます。

于 2012-10-24T11:16:07.973 に答える
0

これが長いクリックの検出に役立つかどうかを確認します。のonFinish()メソッドは、CountdownTimerマーカーを追加するためにコードを配置する必要がある場所です。

長いクリックを検出するために機能しますが、スクロール動作をオーバーライドするかどうかはわかりませんMapView;)

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Log.d("action down", "action down started");
                countDownTimer = new CountDownTimer(2500, 1000) {

                    @Override
                    public void onTick(long millisUntilFinished) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onFinish() {
                        // TODO Auto-generated method stub
                        Toast.makeText(getApplicationContext(),
                                "long clicked", Toast.LENGTH_SHORT).show();
                    }
                };
                countDownTimer.start();
                Log.d("action down", "action down ended");
                break;

            case MotionEvent.ACTION_UP:
                countDownTimer.cancel();
                countDownTimer = null;
                break;

            default:
                break;
            }
            return false;
        }
于 2012-10-24T11:46:59.473 に答える