То, что вы хотите использовать, это:
OnTouchListener touchListener = new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
Log.d(LOG_TAG, "Action is: " + action);
switch (action){
case MotionEvent.ACTION_DOWN:
timeAtDown = SystemClock.elapsedRealtime();
break;
case MotionEvent.ACTION_UP:
long durationOfTouch = SystemClock.elapsedRealtime() - timeAtDown;
Log.d(LOG_TAG, "Touch event lasted " + durationOfTouch + " milliseconds.");
break;
}
return false;
}
};
button.setOnTouchListener(touchListener);
timeAtDown - это long
, определенное как поле класса, поскольку оно должно сохраняться между вызовами touchListener. Используя это, вы не мешаете нормальной работе кнопки; Вы можете установить прослушиватель щелчка, который будет работать правильно. Примечание. Операция «щелчка» не происходит до тех пор, пока действие касания не изменится с ВНИЗ (или ПЕРЕМЕЩЕНИЕ) на ВВЕРХ.