Статьи

Android-анимация — Краткое руководство

Краткое руководство в мире анимации для Android от Чандана , одного из наших партнеров по JCG.

(ПРИМЕЧАНИЕ: оригинальный пост был слегка отредактирован для улучшения читабельности)

Установка анимации для макета программно описана ниже. Вот так:

Создайте файл XML с именем, например, «bottom_out.xml» и поместите его в папку с именем «anim» внутри папки «res». Содержимое файла «bottom_out.xml» должно быть следующим:

01
02
03
04
05
06
07
08
09
10
<?xml version="1.0" encoding="utf-8"?>
<set
    android:interpolator="@android:anim/accelerate_interpolator">
    <translate
        android:fromYDelta="0%"
        android:toYDelta="60%"
        android:duration="700">
    </translate>
</set>

Значения указывают процент относительно родительского макета. Интерполятор используется, чтобы указать, как должна продолжаться анимация. Это существенно определяет скорость изменения анимации. Это позволяет ускорять, замедлять, повторять и т. Д. Базовые эффекты анимации (альфа, масштаб, перевод, вращение). Например, здесь мы используем AccelerateInterpolator , поэтому анимация будет ускорена в конце. Другой интерполятор, который мы могли бы использовать, это LinearInterpolator , где скорость изменения постоянна.

Давайте посмотрим, как это можно использовать внутри класса Android.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private void startAnimationPopOut() {        
    LinearLayout myLayout = (LinearLayout) findViewById(R.id.anim_layout);
 
    Animation animation = AnimationUtils.loadAnimation(this,R.anim.bottom_out);
 
    animation.setAnimationListener(new AnimationListener() {                 
        @Override
        public void onAnimationStart(Animation animation) {
 
        }
 
        @Override
        public void onAnimationRepeat(Animation animation) {
 
        }
 
        @Override
        public void onAnimationEnd(Animation animation) {
 
        }
    });
 
    myLayout.clearAnimation();
    myLayout.startAnimation(animation);
 
}

Переменная «myLayout» (указывающая на R.id.anim_layout) — это простой LinearLayout, определенный в xml-файле в папке «layout». Класс AnimationUtils можно использовать для загрузки объекта Animation из ресурса. Мы также можем прикрепить AnimationListener s и получать уведомления на различных этапах анимации. Обратите внимание, что, как правило, рекомендуется очищать любые ранее установленные анимации перед установкой новой анимации, как показано в конце фрагмента.

Ниже приведены некоторые примеры, которыми я хотел бы поделиться:

Тонущий в:

1
2
3
4
5
<translate
     android:fromYDelta="70%"
     android:toYDelta="0%"
     android:duration="700">
</translate>

Слайд с левой стороны:

1
2
3
4
5
<translate
     android:fromXDelta="-100%p"
     android:toXDelta="0%"
     android:duration="600">
</translate>

Слайд с правой стороны:

1
2
3
4
5
<translate
     android:fromXDelta="100%p"
     android:toXDelta="0%p"
     android:duration="600">
</translate>

Поворот от 0 до 180 градусов:

1
2
3
4
5
6
7
<rotate
    android:fromDegrees="180"
    android:toDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="600">
</rotate>

Здесь pivotX и PivotY — это координаты x и y центра, вокруг которого вы хотите, чтобы вид вращался.

Масштаб (здесь это увеличение):

01
02
03
04
05
06
07
08
09
10
11
12
13
<scale                
    android:toXScale="1.1"              
    android:fromXScale="1.0"            
      
    android:toYScale="1.1"
    android:fromYScale="1.0"
    
    android:pivotX="0%"
    android:pivotY="0%"
    
    android:startOffset="100"
    android:duration="2000">
 </scale>

Здесь 1.0 подразумевает исходный размер представления; так как шарнир установлен на 0, вид будет масштабироваться, принимая его начало координат в качестве центра.

Узнайте больше на странице ресурсов анимации . Удачного кодирования!

Статьи по Теме: