13

我有以下代码创建一个 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 上的图像在您按下它时发生变化。OnTouchListener 似乎覆盖了触摸并且不允许图像更改。一旦我删除 OnTouchListener,ImageButton 就会在按下时切换到不同的图像。关于如何在仍然使用 OnTouchListener 的同时更改 ImageButton 上的图像的任何想法?非常感谢你!

4

2 回答 2

35
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;
    }
});
于 2011-02-28T18:59:06.083 回答
4

我认为解决方案很简单:return true从 ontouchlistener 中删除。因为这会阻止响应触摸和输入的所有进一步操作。也做吧return false

这样,它将允许其他操作也响应触摸。

于 2010-04-11T17:39:31.673 回答