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

Tween анимация - это анимация использующая промежуточные картинки и программные методы.
1) Создадим проект и добавим кнопку в центр.
2) Создадим новый XML файл tweenanimation.xml типа Tween Animation (параметр set - означает что мы можем задавать параметры для разных видов анимации) для описания анимации.

Анимация scale

Параметры android:pivotX и android:pivotY обозначают центр анимации.

tweenanimation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale 
        android:fromXScale="2.0" 
        android:toXScale="0.5" 
        android:fromYScale="2.0" 
        android:toYScale="0.5"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="2000" />

</set>

В Main.java добавляем:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final Button but1 = (Button) findViewById(R.id.button1);
    but1.setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Animation anim1 = 
                AnimationUtils.loadAnimation(Main.this, 
                    R.anim.tweenanimation);
            but1.startAnimation(anim1);
        }
    });
}

Анимация rotate

Пункт set позволяет описывать разные варианты анимации. interpolator позволяет ускорить или замедлить анимацию на устройстве (на эмуляторе не заметно).

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
    <scale         
        android:fromXScale="2.0" 
        android:toXScale="0.5" 
        android:fromYScale="2.0" 
        android:toYScale="0.5"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="2000" />

    <scale         
        android:fromXScale="0.5" 
        android:toXScale="2.0" 
        android:fromYScale="0.5" 
        android:toYScale="2.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="2000" 
        android:startOffset="2000" />
    
    <rotate 
        android:pivotX="50%"
        android:pivotY="50%"
        android:fromDegrees="0"
        android:toDegrees="360"
        android:duration="2000"  
        android:startOffset="4000" />
</set>