2013-03-02 15 views
2

只要按住某個按鈕,我想要一遍又一遍地打印一封信。 例如,如果我把[R 2秒鐘,我應該看到: "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"按住按鈕時重複一個字符

我嘗試這樣做:

public void addListenerOnUP() { 
    Button b = (Button) findViewById(R.id.up); 
    b.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      String p = "R"; 

      //print ... 
      return true; 
     } 
    }); 
} 

但是,只有當用戶將其手指的工作,而不是在他們接觸屏幕。我怎樣才能讓「R」重複?

+0

請重新表述您的問題,因爲我不知道你在說什麼。 – 2013-03-02 15:55:32

回答

2

它的工作移到我想用它的手指
時沒有moveing

您需要使用一個回調。通過使用Handler和Runnable,您可以在用戶的​​手指停下時按設定的時間間隔打印出新的字母。 (每100毫秒一次也許?)

private Handler handler = new Handler(); 
private Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     // Print out your letter here... 

     // Call the runnable again 
     handler.postDelayed(this, 100); 
    } 
} 

只打印信件,而用戶的手指下降:

b.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch(event.getAction()){ 
     case MotionEvent.ACTION_DOWN: 
      // Start printing the letter in the callback now 
      handler.post(runnable); 
      break; 
     case MotionEvent.ACTION_CANCEL: 
     case MotionEvent.ACTION_UP: 
      // Stop printing the letter 
      handler.removeCallbacks(runnable); 
     } 
     return true; 
    } 
}); 
+0

哪裏可以加上這個代碼 – 2013-03-02 16:12:57

+0

'handler'和'runnable'是類變量。將它們添加到你的類中,但在'onCreate()'之外。 – Sam 2013-03-02 16:14:42

+3

Yesssssssssssss謝謝 – 2013-03-02 16:19:01