2012-03-27 90 views

回答

3

這是否對你的工作:

public class ButtonDownListener implements OnTouchListener{ 

    boolean pressed = false; 

    public boolean onTouch(View v, MotionEvent event){ 
     if(event == MotionEvent.ACTION_DOWN){ 
      pressed = true; 
     } 
     else if(event == MotionEvent.ACTION_UP){ 
      pressed = false; 
     } 

     return true; 
    } 
} 

註冊按鈕:

button.setOnTouchListener(new ButtonDownListener()); 
+0

我不能得到它的工作:( – user1293780 2012-03-28 12:39:48

+0

JRaymond和我有幾乎相同的建議...什麼不適合你? – 2012-03-28 14:42:39

+0

現在我發現了一個解決方案,我不得不將「MotionEvent.Action_UP」更改爲「 MotionEvent.1「 – user1293780 2012-03-29 11:05:07

1

像這樣:

public void foo() { 
    Button mButton = (Button) findViewById(R.id.mButton) 

    mButton.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch(event.getAction() & MotionEvent.ACTION_MASK) { 
     case MotionEvent.ACTION_DOWN: 
      mBoolean = true; 
      return true; 
     case MotionEvent.ACTION_UP: 
      mBoolean = false; 
      return true; 
     default: 
      return false; 
     } 
    } 
    }); 
} 

誠然有一些問題與多線程操作與上面的代碼(例如,所討論的布爾應該可能是原子等),但這是典型的實現n單觸式聽衆。多點觸控監聽器爲交換機增加了幾個例子,但這個想法仍然是一樣的。

+0

我無法實現它的工作 – user1293780 2012-03-28 12:49:02

+0

你是什麼意思?不會編譯?不會改變布爾值?應該受此布爾值影響的代碼沒有運行? – JRaymond 2012-03-28 16:44:31