Drawable Animation в приложении Android Печать
Добавил(а) microsin   

Drawable Animation позволяет Вам загрузить последовательность Drawable-ресурсов один за другим, чтобы в результате получилась анимация. Это традиционный способ анимации, созданной с последовательностью разных картинок, проигрываемых в определенном порядке, наподобие фильма. Класс AnimationDrawable является базовым для анимации такого типа.

Когда Вы задаете в коде фреймы анимации с использованием AnimationDrawable класса API, более просто это можно реализовать в одном файле XML, в котором перечислены фреймы, составляющие анимацию. Файл XML для такой анимации должен принадлежать директории res/drawable/ Вашего проекта Android. В этом случае в файле XML могут быть заданы инструкции по порядку воспроизведения и длительность для каждого фрейма в анимации.

Файл XML состоит из элемента < animation-list > в качестве корневого и последовательных дочерних узлов < item >, которые задают каждый фрейм: drawable-ресурс для фрейма и длительность фрейма. Вот пример файла XML для Drawable-анимации:

< 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 >

Эта анимация состоит только из 3 фреймов (кадров). Установкой атрибута android:oneshot списка в true, анимация проиграется один раз и остановится на показе последнего кадра. Если этот атрибут установить в false, то анимация зациклится. С этим XML, сохраненным как файл rocket_thrust.xml в директории res/drawable/ проекта, он может быть добавлен как фоновое изображение для View и затем вызван для проигрывания. Вот пример Activity, в которой анимация добавлена к ImageView, и затем запускается, когда происходит касание экрана:

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

Важное замечание - метод start() экземпляра AnimationDrawable не может быть вызван во время метода onCreate() Вашей Activity, потому что AnimationDrawable еще не полностью подключен к окну приложения. Если Вы хотите проиграть анимацию немедленно, без необходимости взаимодействия с пользователем, то Вы можете вызвать её из метода onWindowFocusChanged() Вашей Activity. Этот метод вызывается, когда окно приложения Android получает фокус.

Дополнительную информацию о синтаксисе XML, доступных тегах и атрибутах см. [2], раздел Animation Resources.

[Ссылки]

1. Drawable Animation site:developer.android.com.
2. Типы ресурсов приложения Android.
3. Класс Activity.
4AnimationDrawable: создание анимированной кнопки