2012-08-15 15 views
16

ボタンを最初に押したときに始まり、リリースされたときに終了するタイマーを開始したいと思います(基本的には、これらの時間の両方でSystem.nanoTime()メソッドを使用し、最後のボタンから最初の数値を減算して、ボタンが押されている間の経過時間の測定値を取得します。ボタンが押されてアンドロイドでリリースされたときを検出する方法

は(あなたがnanoTime()またはボタンを押している時間の長さを測定する他の方法以外のものを使用するための提案があれば、私は同様のものに開いている。)

ありがとう! アンディ

+0

SOポスト:http://stackoverflow.com/q/4410362/2069407 –

答えて

28

利用代わりにOnClickListenerのOnTouchListener

// 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; 
    } 
    }); 
+0

は、私たちにこれを使用すると、残念ながら、ボタンクリック –

+0

のために行われているコードを提供キーボードでボタンを押しても機能しません。タッチされたときにのみ機能します。 –

+0

キーボードボタンが押されている時間を見たいと思っていますか? – Nick

4
  1. onTouchListenerでタイマーを起動します。
  2. onClickListenerでは時刻を停止します。

差分を計算します。

5

これは間違いなく動作します:

これと同様に
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; 
    } 
}); 
関連する問題