Drawable Animation
Drawable animation lets you load a series of Drawable resources one after another to create an animation. This is a traditional animation in the sense that it is created with a sequence of different images , played in order, like a roll of film. TheAnimationDrawableclass is the basis for Drawable animations.
Drawable animation is a traditional method that loads a series of pictures one by one to create animations. Animation is actually a sequence of different images. AnimationDrawable is the base class of Drawable animations
While you can define the frames of an animation in your code, using theAnimationDrawableclass API, it's more simply accomplished with a single XML file that lists the frames that compose the animation. The XML file for this kind of animation belongs in the res/drawable/ directory of your Android project. In this case, the instructions are the order and duration for each frame of the animation.
Although it is possible to define frame animations in code using the AnimationDrawable class, it is better to use an XML file to list all the frames that make up the animation. This xml file is placed in the res/drawable/ directory. In fact, all the instructions are the order and duration of each frame of animation
The XML file consists of an
xml file consists of the root element
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <item android:drawable="@drawable/rocket_thrust1" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust2" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /></animation-list>
The above example is a 3-frame animation. By setting android:oneshot to true, it will only loop once and stay at the last frame. above, if it is false, it will run in a loop
AnimationDrawable rocketAnimation;public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = (AnimationDrawable) rocketImage.getBackground();}public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { rocketAnimation.start(); return true; } return super.onTouchEvent(event);}
Note: The start() method cannot be called in the onCreate() method of your Activity, because the AnimationDrawable is not fully attached to the window at that time. If you must call the animation immediately, without interaction, you can call it in onWindowFocusChanged(). Because this method is called when the window gains focus
For more information on the XML syntax, available tags and attributes, see Animation Resources.