studio saber presionado nivel metodos manejo fue eventos diseño capturar botones boton animados alto java android button timer pressed

java - saber - Cómo detectar cuándo se presiona y suelta un botón en Android



onclicklistener android studio (3)

Me gustaría iniciar un temporizador que comienza cuando se presiona un botón por primera vez y termina cuando se suelta (básicamente quiero medir cuánto tiempo se mantiene presionado un botón). Estaré usando el método System.nanoTime () en esos dos momentos, luego restaré el número inicial del último para obtener una medición del tiempo transcurrido mientras se mantenía presionado el botón.

(Si tiene alguna sugerencia para usar algo que no sea nanoTime () o alguna otra forma de medir cuánto tiempo se mantiene presionado un botón, también estoy abierto a ellos).

¡Gracias! Andy


  1. En onTouchListener inicia el temporizador.
  2. En onClickListener detén los tiempos.

calcular la diferencia.


Esto definitivamente funcionará:

button.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { increaseSize(); } else if (event.getAction() == MotionEvent.ACTION_UP) { resetSize(); } return true; } });


Use OnTouchListener lugar de OnClickListener:

// this goes somewhere in your class: long lastDown; long lastDuration; ... // this goes wherever you setup your button listener: button.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { lastDown = System.currentTimeMillis(); } else if (event.getAction() == MotionEvent.ACTION_UP) { lastDuration = System.currentTimeMillis() - lastDown; } return true; } });