0

私はanimation-listのドキュメントを見ていて、XMLレイアウトは単純ですが、コードでそれらがどのように扱われるか混乱しています。

そのページには次のようなものがあります。

ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image);
 img.setBackgroundResource(R.drawable.spin_animation);

 // Get the background, which has been compiled to an AnimationDrawable object.
 AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();

 // Start the animation (looped playback by default).
 frameAnimation.start();

ただし、表示されているXMLのどこにもspinning_wheel_imageを参照することはなく、spin_animation....例のスピンスニペットのIDは「選択」されています。

それで、私はそれらの2つの参照がどこから来ているのか疑問に思っていますか?また、「選択された」XMLスニペットの実際のIDが使用されないのはなぜですか?

ありがとう!

編集:

アニメーションxmlをanimation.xmlというファイルに入れました

そして今コードで私はこれを持っています:

ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image);
        img.setBackgroundResource(R.drawable.animation);

        // Get the background, which has been compiled to an AnimationDrawable object.
        AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();

        // Start the animation (looped playback by default).
        frameAnimation.start();
4

2 に答える 2

1

ただし、表示されるxmlのどこでも spin_wheel_image を参照することはありません

spinning_wheel_imageは の ID でありImageView、おそらくsetContentView()またはとともに使用されるレイアウト リソースからのものLayoutInflaterです。

また、spin_animation ....例のスピンスニペットのIDは「選択」されています

これはおそらくタイプミスです。 android:idforはありませんAnimationDrawable。少なくとも、それはドキュメントにはありません。アニメーション リソースの名前はファイル名に基づいており、ファイル名はspin_animation .xml.

于 2012-09-05T17:22:08.913 に答える
1

アニメーションは、明示的に割り当てるまで、どのビューにも関連付けられません。実行する遷移の特定のセットを定義するだけです。次に、ビューを選択してアニメーションを適用します。これにより、同じアニメーションを多くのビューに適用できます。res/animアニメーション XML ファイルをフォルダに移動したい場合があります。

于 2012-09-05T17:24:17.163 に答える