14. Разработка приложений для ОС Android. Покадровая анимация

1) Добавляем в drawable раскадрированную анимацию (можно взять любой .GIF и провести раскадровку в любом продвинутом графическом редакторе или онлайн).
2) Создаем новый XML файл animation.xml типа Drawable (animation-list) для создания анимации:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/frame1" android:duration="30" />
    <item android:drawable="@drawable/frame2" android:duration="30" />
    <item android:drawable="@drawable/frame3" android:duration="30" />
    <item android:drawable="@drawable/frame4" android:duration="30" />
    <item android:drawable="@drawable/frame5" android:duration="30" />
    <item android:drawable="@drawable/frame6" android:duration="30" />
    <item android:drawable="@drawable/frame7" android:duration="30" />
    <item android:drawable="@drawable/frame8" android:duration="30" />
    <item android:drawable="@drawable/frame9" android:duration="30" />
    <item android:drawable="@drawable/frame10" android:duration="30" />
</animation-list>

duration - длительность изображения этого кадра
Для того чтобы анимация проигрывалась только один раз можно добавить android:oneshot="true" к animation-list.
Этот XML файл описывает анимацию и к нему можно обращаться как к одному изображению.
3) Создадим ImageView и сделаем его абсолютно пустым удалив все из свойства Src. Изменим Main.java следующим образом:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
            
    // final потому что анимация ссылается на ресурсы        
    final ImageView image1 = (ImageView) findViewById(R.id.imageView1); 
    image1.setBackgroundResource(R.drawable.animation);     
    
    // будем запускать анимацию по клику
    image1.setOnClickListener(new OnClickListener() {           
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub                              
            
            // ссылка на анимацию 
            AnimationDrawable anim1 = (AnimationDrawable) image1.getBackground();
            anim1.start();
        }
    });
}