【AndroidのViewを制する】 ImageSwitcherを使いこなしてImageViewを切り替える
今回、紹介するImageSwitcherはViewSwitcherを継承しています。
ViewSwitcherとの違いはImageViewを切り替えることに特化していることです。
ImageView以外を設定すると例外で強制終了します。
ImageSwitcher#setImageResourceを使って次のImageViewを表示する
ImageSwitcher#setImageResourceは次のImageViewにリソースIDを使って画像を設定し、表示を切り替えるメソッドです。この時にインアニメーションとアウトアニメーションが設定されていると実行されます。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
// ImageSwitcherをインスタンス化
final ImageSwitcher imageSwitcher = new ImageSwitcher(this);
// ImageSwitcherにTextViewを設定する。
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
return new ImageView(ImageSwitcherActivity.this);
}
});
// インアニメーションを設定する。
AlphaAnimation inAnimation = new AlphaAnimation(0,1);
inAnimation.setDuration(500);
inAnimation.setStartOffset(500);
imageSwitcher.setInAnimation(inAnimation);
// アウトアニメーションを設定する。
AlphaAnimation outAnimation = new AlphaAnimation(1,0);
outAnimation.setDuration(500);
imageSwitcher.setOutAnimation(outAnimation);
// ImageSwitcher.setImageResourceを使って次のViewを表示する。
Button setImageResourceButton = new Button(this);
setImageResourceButton.setText("リソースを使ってImageViewを変更する");
setImageResourceButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// リソースを指定する
imageSwitcher.setImageResource(android.R.drawable.ic_menu_search);
}
});
linearLayout.addView(imageSwitcher);
linearLayout.addView(setImageResourceButton);
setContentView(linearLayout);
ImageSwitcher#setImageDrawableを使って次のImageViewを表示する
ImageSwitcher#setImageDrawableは次のImageViewにDrawableを使って画像を設定し、表示を切り替えるメソッドです。この時にインアニメーションとアウトアニメーションが設定されていると実行されます。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
// ImageSwitcherをインスタンス化
final ImageSwitcher imageSwitcher = new ImageSwitcher(this);
// ImageSwitcherにTextViewを設定する。
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
return new ImageView(ImageSwitcherActivity.this);
}
});
// インアニメーションを設定する。
AlphaAnimation inAnimation = new AlphaAnimation(0,1);
inAnimation.setDuration(500);
inAnimation.setStartOffset(500);
imageSwitcher.setInAnimation(inAnimation);
// アウトアニメーションを設定する。
AlphaAnimation outAnimation = new AlphaAnimation(1,0);
outAnimation.setDuration(500);
imageSwitcher.setOutAnimation(outAnimation);
// ImageSwitcher.setImageDrawableを使って次のViewを表示する。
Button setImageDrawableButton = new Button(this);
setImageDrawableButton.setText("Drawableを使ってImageViewを変更する");
setImageDrawableButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Drawableを指定する
Bitmap bitmap = BitmapFactory.decodeResource(getResources() , android.R.drawable.ic_menu_camera);
BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources() , bitmap);
imageSwitcher.setImageDrawable(bitmapDrawable);
}
});
linearLayout.addView(imageSwitcher);
linearLayout.addView(setImageDrawableButton);
setContentView(linearLayout);
ImageSwitcher#setImageURIを使って次のImageViewを表示する
ImageSwitcher#setImageURIは次のImageViewにURIを使って画像を設定し、表示を切り替えるメソッドです。この時にインアニメーションとアウトアニメーションが設定されていると実行されます。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
// ImageSwitcherをインスタンス化
final ImageSwitcher imageSwitcher = new ImageSwitcher(this);
// ImageSwitcherにTextViewを設定する。
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
return new ImageView(ImageSwitcherActivity.this);
}
});
// インアニメーションを設定する。
AlphaAnimation inAnimation = new AlphaAnimation(0,1);
inAnimation.setDuration(500);
inAnimation.setStartOffset(500);
imageSwitcher.setInAnimation(inAnimation);
// アウトアニメーションを設定する。
AlphaAnimation outAnimation = new AlphaAnimation(1,0);
outAnimation.setDuration(500);
imageSwitcher.setOutAnimation(outAnimation);
// ImageSwitcher.setImageURIを使って次のViewを表示する。
Button setImageUriButton = new Button(this);
setImageUriButton.setText("Uriを使ってImageViewを変更する");
setImageUriButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Uriを指定する
imageSwitcher.setImageURI(Uri.parse("android.resource://" + getPackageName() +"/" + android.R.drawable.ic_menu_help));
}
});
linearLayout.addView(imageSwitcher);
linearLayout.addView(setImageUriButton);
setContentView(linearLayout);