2013-07-03 90 views
0

我想使用一個按鈕(而不是一個鍵),就像退格鍵一樣,所以當它停止時,請重複執行某些操作。 我已經找到了正確的硬件密鑰代碼,但正如我所說我想要一個按鈕做這樣的事情。 謝謝Eclipse中的按鈕關閉事件(Android)

+0

您將需要響應觸摸事件而不是通常與按鈕一起使用的較高級別的「onClick()」事件。 –

回答

1

謝謝斯科特。最後我找到了答案並完成了這項工作。

public MyActivity extends Activity 
{ 
    private Handler mHandler = new Handler(); 

private Runnable mUpdateTask = new Runnable() 
{ 
    public void run() 
    { 
     Log.i("repeatBtn", "repeat click"); 
     mHandler.postAtTime(this, SystemClock.uptimeMillis() + 100); 
    } 
}; 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button repeatButton = (Button) findViewById(R.id.repeatButton); 
    repeatButton.setOnTouchListener(new OnTouchListener() 
    { 
     public boolean onTouch(View view, MotionEvent motionevent) 
     { 
      int action = motionevent.getAction(); 
      if (action == MotionEvent.ACTION_DOWN) 
      { 
       Log.i("repeatBtn", "MotionEvent.ACTION_DOWN"); 
       mHandler.removeCallbacks(mUpdateTask); 
       mHandler.postAtTime(mUpdateTask, SystemClock.uptimeMillis() + 100); 
      } 
      else if (action == MotionEvent.ACTION_UP) 
      { 
       Log.i("repeatBtn", "MotionEvent.ACTION_UP"); 
       mHandler.removeCallbacks(mUpdateTask); 
      } 
      return false; 
     } 
    }); 
} 
} 
1

您可以在Button實例上設置一個OnTouchListener。然後,您可以覆蓋偵聽器的onTouch方法,直到MotionEvent傳遞給onTouch方法的方法具有MotionEvent.getAction == MotionEvent.ACTION_UP。請參閱此鏈接的例子:

Android onTouch Listener event

switch語句是足夠的,只是定製它使用的是什麼我上面所說的,以滿足您的需求。 - 希望這可以幫助,斯科特

+0

謝謝你的Answer.But我不能重複做一些事情。它只發生一次,我沒有使用這樣做的循環,直到鑰匙啓動 – user2548538

+0

@ user2548538我假設你有一個開關或一個if else 'onTouch()'。如果您希望事件繼續發生,請確保您從代碼的一部分(case語句或if/else部分)返回false。當MotionEvent.getAction()== MotionEvent.ACTION_UP(這被稱爲使用運動事件)時,只從'onTouch()'返回true。 - 希望這可以幫助 – Scott