2015年3月24日火曜日

[Android] ImageViewに設定されている画像を切り替える

状態を二つだけ持つ(画像の)ボタンであればToggleButtonを使えばよいのですが、3つ以上の状態を持ち、さらにその時に設定されている画像の状態に応じて処理や画像を切り替える場合、ToggleButtonでは対応できないので、次のようにします。

public class SomeActivity extends ActionBarActivity {
private ImageView imageView;
private int imageViewId = R.drawable.status1; // ImageViewに初期設定されているdrawableのIDを保持しておく
@Override
protected void onCreate(Bundle savedInstanceState) {
imageView = (ImageView) findViewById(R.id.lock_button);
imageView.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
switch (imageViewId) {
case R.drawable.status1:
// 画像がstatus1の時にクリックしたらstatus2に変更
imageView.setImageDrawable(getResources().getDrawable(R.drawable.status2));
imageViewId = R.drawable.status2;
break;
case R.drawable.status2:
// 画像がstatus2の時にクリックしたらstatus3に変更
imageView.setImageDrawable(getResources().getDrawable(R.drawable.status3));
imageViewId = R.drawable.status3;
break;
case R.drawable.status3:
// 画像がstatus3の時にクリックしたらstatus1に変更
imageView.setImageDrawable(getResources().getDrawable(R.drawable.status1));
imageViewId = R.drawable.status1;
break;
}
}
}
);
}
}
view raw gistfile1.java hosted with ❤ by GitHub
Preferencesを使ってステータス管理する方法もありますが、この方法の方が状態の情報が二重化しませんし、直感的なのでより良いと私は考えます。

0 件のコメント:

コメントを投稿