Выполнить двойной щелчок на кнопке в 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;
}
}