【AndroidのViewを制する】 ImageSwitcherを使いこなしてImageViewを切り替える

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

今回、紹介する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);