【AndroidのDrawableリソースでいろいろする】Animation List/AnimationDrawable

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

AnimationDrawableの使い方を説明します。
AnimationDrawableは「画像」をリスト化し、設定した時間間隔で表示を切り替えます。
使いどころは、一定時間で画像を切り替える必要がある場合です。
例は「アイコンを一定間隔で切り替えてアニメーションしたい」や「ギャラリーで画像を切り替えたい」などなど。
xmlで設定する属性は下記の2つです。

  • drawable:表示する画像
  • duration:表示時間[ms]
今回はサンプルとして下記の仕様を持ったコードを作成しました。
  • AnimationDrawableを使って表示する。
  • xmlで50ms毎に画像を切り替える設定をする。
  • Javaコードで1000ms表示する画像を設定をする。
  • アニメーション停止中にボタンをクリックするとAnimationDrawableのアニメーションが開始します。
  • アニメーション開始中にボタンをクリックするとAnimationDrawableのアニメーションが停止します。
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:variablePadding="true"
    android:oneshot="false">

    <item
        android:drawable="@android:drawable/ic_dialog_alert"
        android:duration="50" />

    <item
        android:drawable="@android:drawable/ic_dialog_dialer"
        android:duration="50" />

    <item
        android:drawable="@android:drawable/ic_dialog_email"
        android:duration="50" />

    <item
        android:drawable="@android:drawable/ic_dialog_info"
        android:duration="50" />

    <item
        android:drawable="@android:drawable/ic_dialog_map"
        android:duration="50" />
</animation-list>
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        linearLayout.setBackgroundColor(Color.BLACK);
        linearLayout.setGravity(Gravity.CENTER_HORIZONTAL);
        //AnimationDrawableを表示するImageView
        final ImageView imageView = new ImageView(this);
        imageView.setLayoutParams(new ViewGroup.LayoutParams(500, 500));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        //AnimationDrawableを設定する
        imageView.setImageResource(R.drawable.animation_drawable);
        //動的に画像を追加する
        final AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_input_add);
        animationDrawable.addFrame(new BitmapDrawable(getResources(), bitmap), 1000);
        //AnimationDrawableのアニメーションを開始・停止するボタン
        final Button button = new Button(getApplicationContext());
        button.setText("アニメーション開始");
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                final AnimationDrawable drawable = (AnimationDrawable) imageView.getDrawable();
                if (drawable.isRunning()) {
                    //AnimationDrawableのアニメーションを停止する
                    drawable.stop();
                    button.setText("アニメーション開始");
                } else {
                    //AnimationDrawableのアニメーションを開始する
                    drawable.start();
                    button.setText("アニメーション停止");
                }
            }
        });
        linearLayout.addView(imageView);
        linearLayout.addView(button);
        setContentView(linearLayout);
    }
}

Androidゲームプログラミング A to Z

新品価格
¥4,968から
(2017/2/27 22:58時点)


AndroidエンジニアのためのモダンJava

新品価格
¥3,456から
(2017/2/27 23:01時点)


AndroidNDKネイティブプログラミング第2版

中古価格
¥1,893から
(2017/2/28 00:04時点)


Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

新品価格
¥3,024から
(2017/2/28 00:06時点)


Android Studio ではじめる Android プログラミング入門 第3版 Android Studio 2対応

新品価格
¥3,240から
(2017/2/28 00:11時点)


アプリを作ろう! Android入門 Android Studio版 Android5対応

新品価格
¥2,160から
(2017/2/28 00:31時点)


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)