繁体   English   中英

ImageButton-按下时切换颜色

[英]ImageButton - toggle color when pressed

我怎样才能触发一个颜色ImageButton当用户按下ImageButton

我希望ImageButton在按下时在红色(关闭电源)和绿色(关闭电源)之间切换。

码:

    ImageButton star, power;
Intent i;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    star = (ImageButton)findViewById(R.id.ibStar);
    star.setOnClickListener(this);

    power = (ImageButton)findViewById(R.id.ibPower);
    power.setOnTouchListener(this);


}

public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN ) {
        power.setImageResource(R.drawable.power);

    }
     else if (event.getAction() == MotionEvent.ACTION_UP ) {
        power.setImageResource(R.drawable.power_off);

    }

    return true;
}

我认为这就是您所需要的。

ImageButton star, power;
Intent i;
boolean isOn=false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    star = (ImageButton)findViewById(R.id.ibStar);
    star.setOnClickListener(this);

    power = (ImageButton)findViewById(R.id.ibPower);
    power.setOnTouchListener(this);


}

public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN ) {
        isOn=!isOn; // change its state to the oposite one

        if(isOn)
            power.setImageResource(R.drawable.power);
        else
            power.setImageResource(R.drawable.power_off);
    }

    return true;
}

尝试使用OnClickListener而不是OnTouch 您可以通过几种方法来处理这种情况。

一种方法是让一个booleantruefalse之间切换,以表示电源是打开还是关闭。 然后在按下ImageButton时检查该值,并相应地更改ImageButton的颜色。

/* The boolean below is
 * declared in the 
 * class and not in a method. 
 * Whatever default value you need, i assumed false. */
private boolean isPowerOn = false;

power = (ImageButton)findViewById(R.id.ibPower);
power.setOnClickListener(new OnClickListener() {
    @Override
        public void onClick(View v) {
            if (isPowerOn) {
                /* set color to red */
                isPowerOn = false;
            } else {
                /* set power to green */
                isPowerOn = true;
            }
        }
    });

要么

您可以在按下ImageButton时检查其颜色,然后相应地更改其颜色。 这样看来有点时髦。 使用boolean方法。

如果要让按钮按下事件显示不同的颜色(即在按下事件期间),请使用选择器,如按钮背景选择器所示。

如果要在onClick事件之后使按钮颜色在红色和绿色之间切换,请使用onClickListener()(伪代码):

onClick(ImageButton ib)
{
 if (button is green)
  ib.setImageResource(red)
 else
  ib.setImageResource(green)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM