【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);