Выполнить двойной щелчок на кнопке в Android
Как я могу реализовать двойной щелчок для кнопки в Android? Должен ли я использовать OnDoubleTapListener?
5 ответов
int i = 0;
btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        i++;
        Handler handler = new Handler();
        Runnable r = new Runnable() {
            @Override
            public void run() {
                i = 0;
            }
        };
        if (i == 1) {
            //Single click
            handler.postDelayed(r, 250);
        } else if (i == 2) {
            //Double click
            i = 0;
            ShowDailog();
        }
    }
});
Это, вероятно, хорошее место для начала:
Android: Как обнаружить двойное нажатие?
Я рекомендую перейти на более родной способ, как длительное нажатие (ответ на связанный вопрос) или что-то более творческое (с помощью мультитач), если вы не склонны к Windows по умолчанию дважды щелкните способ делать вещи?
У вас может быть веская причина, хотя - двойным нажатием is в конце концов быстрее, чем длительное нажатие.
Я написал это для всплывающего сообщения тоста двойным щелчком мыши в приложении отображения:
private long lastTouchTime = -1;
@Override
public boolean onTouchEvent(MotionEvent e, MapView mapView) {
   GeoPoint p = null;
   if (e.getAction() == MotionEvent.ACTION_DOWN) {
      long thisTime = System.currentTimeMillis();
      if (thisTime - lastTouchTime < 250) {
         // Double click
         p = mapView.getProjection().fromPixels((int) e.getX(), (int) e.getY());
         lastTouchTime = -1;
      } else {
         // too slow
         lastTouchTime = thisTime;
      }
   }
   if (p != null) {
      showClickedLocation(p);// Raise a Toast
   }
   return false;
}
Это хороший сайт для выполнения двойного щелчка... Я использовал его и работал.
http://mobile.tutsplus.com/tutorials/android/android-gesture/
private long lastTouchTime = 0;
private long currentTouchTime = 0;
..
         @Override
                public void onClick(View view) {
                    lastTouchTime = currentTouchTime;
                    currentTouchTime = System.currentTimeMillis();
                    if (currentTouchTime - lastTouchTime < 250) {
                        Log.d("Duble","Click");
                        lastTouchTime = 0;
                        currentTouchTime = 0;
                    }
                }
