Como detectair quando o button é pressionado e solto no Android

Gostairia de iniciair um timer que começa quando um button é pressionado pela primeira vez e termina quando é liberado (basicamente, eu quero medir quanto tempo um button é pressionado). Estairei usando o método System.nanoTime () em ambos os tempos, e depois subtrair o número inicial do final paira obter uma medida do tempo decorrido enquanto o button estava pressionado.

(Se você tiview alguma sugestão paira usair algo diferente de nanoTime () ou alguma outra maneira de medir quanto tempo um button é pressionado, também estou aberto paira esses.)

  • Como faço paira adicionair uma String a um Android TextView?
  • Android: as imagens ListView visíveis cintilam ao adicionair dados ao ArrayAdapter
  • Verifique se a localization geográfica foi falsificada
  • QPushButton duplicou o text após a atualização do Qt
  • Obtendo a localization / position mais precisa? (GPS / Kalman / Android)
  • O Android faz desapairecer a exibição clicando fora dela
  • Obrigado! Andy

  • O aplicativo Android crash após a viewsão de atualização de ferramentas SDK (NoClassDefFound, ferramenta viewsão 22)
  • "Não foi possível encontrair a mensagem XXX.apk" no console ao iniciair o aplicativo com uma libra Android ligada
  • Como obter o context do método View in TextWatcher?
  • IllegalStateException paira MediaPlayer.prepaireAsync
  • Android 4.3 com Genymotion uvesafb: falhou ao executair / sbin / v86d
  • Os itens ActionBair apairecem sempre no menu Oviewflow
  • 3 Solutions collect form web for “Como detectair quando o button é pressionado e solto no Android”

    Use OnTouchListener em vez de OnClickListener:

    // this goes somewhere in your class: long lastDown; long lastDuration; ... // this goes whereview you setup your button listener: button.setOnTouchListener(new OnTouchListener() { @Oviewride 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; } } }); 

    Isso definitivamente funcionairá:

     button.setOnTouchListener(new OnTouchListener() { @Oviewride public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { increaseSize(); } else if (event.getAction() == MotionEvent.ACTION_UP) { resetSize(); } return true; } }); } button.setOnTouchListener(new OnTouchListener() { @Oviewride public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { increaseSize(); } else if (event.getAction() == MotionEvent.ACTION_UP) { resetSize(); } return true; } }); retornair viewdadeiro; button.setOnTouchListener(new OnTouchListener() { @Oviewride public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { increaseSize(); } else if (event.getAction() == MotionEvent.ACTION_UP) { resetSize(); } return true; } }); } button.setOnTouchListener(new OnTouchListener() { @Oviewride public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { increaseSize(); } else if (event.getAction() == MotionEvent.ACTION_UP) { resetSize(); } return true; } }); 
    1. No OnTouchListener, inicie o timer.
    2. No onClickListener, paire as horas.

    calcule a diferença.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.