Android 双击按钮的动作,如何做好呢

Android 双击按钮的动作,如何做好呢,android,Android,我为双击创建了这个 private int pos = 0; private void changeImageVolumeOffOn() { buttonMuteVolume.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (pos == 0) {

我为双击创建了这个

private int pos = 0;

    private void changeImageVolumeOffOn() {
        buttonMuteVolume.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (pos == 0) {
                    pos++;
                    buttonMuteVolume.setBackgroundResource(R.drawable.volume_off);
                } else {
                    pos--;
                    buttonMuteVolume.setBackgroundResource(R.drawable.volume_on);
                }
            }
        });
    }

但我认为这不是一个好办法。我需要紧急更改图像,仅用于将其显示给我的朋友。如何为单击执行双重操作?

使用可绘制两种状态的选择器xml。
boolean clicked = false;

private void changeImageVolumeOffOn() {
    buttonMuteVolume.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            clicked = !clicked;
            if (clicked) {
                buttonMuteVolume.setBackgroundResource(R.drawable.volume_off);
            } else {
               buttonMuteVolume.setBackgroundResource(R.drawable.volume_on);
            }
        }
    });
}
已选择-卷打开 未选择-音量关闭

如果有任何点击发生 布尔newState=button.isSelected()?false:true; 按钮。选择设置(新闻状态)


这将解决您的问题

您也可以这样尝试

int isClicked=false

    buttonMuteVolume.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (isClicked) {
                buttonMuteVolume.setBackgroundResource(R.drawable.volume_off);
                  isClicked=false;
            } else {
               buttonMuteVolume.setBackgroundResource(R.drawable.volume_on);
                 isClicked=true;
            }
        }
    });
 private void changeImageVolumeOffOn() {
        buttonMuteVolume.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               String backgroundImageName = String.valueOf(v.getTag());
               if(backgroundImageName=="volume_off" ){
                   buttonMuteVolume.setBackgroundResource(R.drawable.volume_on);
                }else {
                       buttonMuteVolume.setBackgroundResource(R.drawable.volume_off);
              }
    }


            }
        });
    }

要删除if语句,可以使用


你只是想在每次单击时更改图像吗?是的,我的逻辑是这样做的,但我认为代码是错误的,因为你的代码不工作???@Rodriquez你也可以像获取图像名称字符串imageName=(String)img.getTag();工作,但这代码是像“疯狂”的mecan u说更多?我创建了如下内容:将该选择器设置为按钮的背景。buttonMuteVolume.setOnClickListener(新视图.OnClickListener(){@Override public void onClick(视图v){boolean isSelected=v.isSelected();v.setSelected(!isSelected;}});为什么需要整数?您无法将true/false实现为int
boolean clicked = false;

private void changeImageVolumeOffOn() {
    buttonMuteVolume.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            clicked = !clicked;
            buttonMuteVolume.setBackgroundResource(clicked ? R.drawable.volume_off : R.drawable.volume_on);
        }
    });
}