2014-01-26 129 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;