1

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;
}
4

3 に答える 3

2

これがあなたに必要なものだと思います。

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;
}
于 2012-08-16T19:36:36.927 に答える
1

OnClickListenerの代わりにを使用してみてくださいOnTouch。この状況に対処する方法はいくつかあります。

1つの方法は、電源がオンかオフかbooleanを切り替えるtrueと表示することです。falseそして、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ます。

于 2012-08-16T19:36:41.027 に答える
0

ボタンのプレスイベントに別の色を表示させたい場合(つまり、プレスイベント中)、ボタンの背景セレクターに示されているようなセレクターを使用します。

onClickイベントの後でボタンの色を赤と緑の間で切り替えたい場合は、onClickListener()(擬似コード)を使用します。

onClick(ImageButton ib)
{
 if (button is green)
  ib.setImageResource(red)
 else
  ib.setImageResource(green)
}
于 2012-08-16T19:32:36.883 に答える