2012-03-27 4 views
0

私はボタンが を押したまま、それがAndroidのボタンリスナー

を実現している。しかし、私はそれをどのように行うことができるときはfalseに設定されている場合は、真の値を設定し、ボタンのリスナーを実装しようとしていますか?

答えて

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

+0

JRaymondと私はほぼ同じ提案をしています...あなたのために働いていないものは –

+0

今私は "MotionEvent.Action_UP" MotionEvent.1 " – user1293780

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

+0

どういう意味ですか?コンパイルされません。ブール値は変更されません。このブール値の影響を受けるコードは実行されていませんか? – JRaymond

関連する問題