web-dev-qa-db-ja.com

OnTouchListenerを使用しているときに、AndroidのImageButtonの画像を変更するにはどうすればよいですか?

ImageButtonを作成し、クリックするとサウンドを再生する次のコードがあります。

ImageButton SoundButton1 = (ImageButton)findViewById(R.id.sound1);
SoundButton1.setImageResource(R.drawable.my_button);

SoundButton1.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN ) {
            mSoundManager.playSound(1);
            return true;
        }

        return false;
    }
});

問題は、ImageButtonを押したときにImageButtonの画像を変更したいということです。 OnTouchListenerはタッチをオーバーライドし、画像の変更を許可していないようです。 OnTouchListenerを削除するとすぐに、ImageButtonを押すと別の画像に切り替わります。 OnTouchListenerを使用しながらImageButtonで画像を変更する方法についてのアイデアはありますか?どうもありがとうございました!

12
codeman

解決策は簡単だと思います。ontouchlistenerからreturn trueを削除します。それは、タッチと入力に応答するそれ以降のすべての操作をブロックするためです。 return falseにもしてください。

このようにして、他のアクションもタッチに応答できるようになります。

4
Peterdk
SoundButton1.setOnTouchListener(new OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN ) {
            mSoundManager.playSound(1);
            btnmode.setImageResource(R.drawable.modeitempressed);

        }
         elseif (event.getAction() == MotionEvent.ACTION_UP ) {
            btnmode.setImageResource(R.drawable.modeitemnormal);

        }

        return false;
    }
});
33
user632905