В данном посте рассматривается работа с анимацией в Android.
Для начала необходимо в папке Res создать папку anim и выбрать Resource type anim. Затем добавлять файлы Animation Resourse File в эту папку.
Далее рассмотрим примеры анимаций.
Анимация прозрачности
<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="3000"> </alpha>
Анимация перемещения
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="-150" android:toXDelta="0" android:fromYDelta="-200" android:toYDelta="0" android:duration = "3000"> </translate>
Анимация поворота
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:toDegrees="360" android:duration = "3000"> </rotate>
Анимация масштабирования
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:fromXScale="0.1" android:toXScale="1.0" android:fromYScale="0.1" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="3000">
Использование сразу нескольких эффектов анимаций
Объединяем анимации разворота и масштабирования:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:fromDegrees="0" android:toDegrees="360" android:duration="3000" android:pivotY="50%" android:pivotX="50%"> </rotate> <scale android:fromXScale="0.1" android:toXScale="1.0" android:fromYScale="0.1" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="3000"> </scale> </set>
Запуск анимации через контекстное меню
В приведенном ниже коде описанные анимации запускаются через контекстное меню:
package razilov.ru; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView textView; private final int MENU_ALPHA_ID = 1; private final int MENU_SCALE_ID = 2; private final int MENU_TRANSLATE_ID = 3; private final int MENU_ROTATE_ID = 4; private final int MENU_COMBO_ID = 5; @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { switch (v.getId()){ case R.id.textView: menu.add(0, MENU_ALPHA_ID, 0, "Alpha"); menu.add(0, MENU_SCALE_ID, 0, "Scale"); menu.add(0, MENU_TRANSLATE_ID, 0, "Translate"); menu.add(0, MENU_ROTATE_ID, 0, "Rotate"); menu.add(0, MENU_COMBO_ID, 0, "Combo"); } super.onCreateContextMenu(menu, v, menuInfo); } //Работа с анимацией @Override public boolean onContextItemSelected(MenuItem item) { Animation anim = null; switch (item.getItemId()){ case MENU_ALPHA_ID: anim = AnimationUtils.loadAnimation(this, R.anim.myalpha); break; case MENU_SCALE_ID: anim = AnimationUtils.loadAnimation(this, R.anim.myscale); break; case MENU_TRANSLATE_ID: anim = AnimationUtils.loadAnimation(this, R.anim.mytrans); break; case MENU_ROTATE_ID: anim = AnimationUtils.loadAnimation(this, R.anim.myrotate); break; case MENU_COMBO_ID: anim = AnimationUtils.loadAnimation(this, R.anim.mycombo); break; } textView.startAnimation(anim); return super.onContextItemSelected(item); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.textView); registerForContextMenu(textView); } }
Код очень простой. Если есть вопросы, задавайте.
Результат приведенного кода привожу по ссылке.