2011-07-22 92 views
1

當我按住Android活動中的按鈕時,如何實現快速增量?例如,當我按住一個按鈕時,我已經在EditText中設置的一個數字將以很快的速度增加。單擊按鈕時快速增加

您的幫助將不勝感激。

+0

回到以前提出的一些問題,並將有用答案標記爲正確 - 問一個問題,永遠不回報幫助你的人不會讓你走得很遠。 – mopsled

回答

0

那麼,我會在onTouch方法中使用System.currentTimeMillis()。在TouchEvent.ACTION_DOWN的情況下:啓動毫毫計數(使用您的自定義數學函數使用毫秒)並停止TouchEvent.ACTION_UP中的計數。

0

您可以擴展TimerTask類並使用您想要執行的操作覆蓋「run」方法。在這種情況下,「運行」會增加EditText的文本。然後製作一個Timer並給它重載的TimerTask類。

例子:

import java.util.TimerTask; 

public class MyTask extends TimerTask { 
    private Integer mIncrement = 0; 

    public MyTask() { 
    } 

    @Override 
    public void run() { 
     mIncrement++; 

     // Then notify the GUI somehow (Maybe with a Handler) 
    } 
} 

現在你只需要安排 「MyTask」 運行時,你按鍵時:

 mButton.setOnTouchListener(
      new OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        if (event.getPointerCount() > 0 && !mIncrementing) { 
         mIncrementing = true; 
         MyTask task = new MyTask(); 
         mTimer = new Timer(); 
         mTimer.scheduleAtFixedRate(task, 0, 10); 
        } else { 
         mIncrementing = false; 
         mTimer.cancel(); 
        } 
        return true; 
       } 
      } 
     ); 

我希望這有助於。有關更多信息,請參閱計時器上的文檔: http://developer.android.com/reference/java/util/Timer.html

此外,您可能會注意到無法在MyTask.run中設置EditText的文本值。這是因爲Android不允許跨線程訪問GUI元素。要更新你的EditText,你需要傳遞一個Handler消息來告訴主線程更新它的值。