2014-01-26 125 views
0

我在Android中使用「onTouchListener」作爲按鈕。Android按鈕isPressed

B.setOnTouchListener(

  new OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        Log.d(G.AN,"ButtonID: "+B.getId()); 
        mEvent = event.getAction(); 
        Log.d(G.AN,"Event: " + mEvent); 
         H.post(RN); 
         return false; 
       } 
      } 
     ); 

「RN」是一個可運行的,我要檢查定期如果按鈕仍然按下。然而,當我使用isPressed()函數,它總是返回我「假」

@Override public void run() { 
      Log.d(G.AN,"ButtonID: "+B.getId()); 
      switch(mEvent) { 


      case MotionEvent.ACTION_UP: 
       H.removeCallbacks(RN); 
       break; 

      case MotionEvent.ACTION_DOWN: 
       Delay = 300; 

      default: 
       **if(!B.isPressed())** { 
        Log.d(G.AN,"Button is not pressed"); 
        return; 
       } 
       if(!IsIndex) { ........................ 

是否isPressed功能真的有用嗎?任何androiders那裏誰使用這種方式呢?

在此先感謝...

+0

isPressed()沒有問題 - 按預期工作 – pskink

+0

其罰款isPressed() –

回答

0

我不知道......也許ü應onTouch法上ACTION_UP調用setpressed(真)上ACTION.DOWN motionevent和setpressed(假)

0

儘量實現這一點:

B.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       Delay = 300; 
       return true; 
      } 
      else if (event.getAction() == MotionEvent.ACTION_UP){ 
       H.removeCallbacks(RN); 

      } 

      return false; 
     } 
    }); 

和您必須導入:

import android.view.MotionEvent;