Статьи

Учебник по настройке анимации активности Android

Если вы думаете о настройке анимации перехода «Активность», то, вероятно, вам следует искать класс ActivityOptions, представленный в Android 4.1 (Jelly Bean). Этот класс предоставляет три метода, которые могут помочь вам настроить анимацию активности. Они приведены в таблице ниже.

Методы класса ActivityOptions

Имя функции Описание
makeCustomAnimation Этот метод позволяет передавать пользовательскую анимацию, и когда Atyctivi запускается, он отображается соответствующим образом. Здесь вы можете передать анимацию для перехода из Activity, а также для перехода в Activity
makeScaleUpAnimation Этот метод масштабирует действие от начального размера до его окончательного размера представления. Его можно использовать для масштабирования действия из представления, которое запустило это действие.
makeThumbnailScaleUpAnimation В этой анимации миниатюра действия масштабируется до конечного размера действия.
toBundle Этот метод возвращает объект Bundle, который можно передать в метод startActivity () для нужной анимации.

Для получения дополнительной информации о ActivityOptions вы можете обратиться сюда .

Информация о проекте: метаданные о проекте.
Версия платформы: Android API Level 16.
IDE: Eclipse Helios Service Release 2
Эмулятор: Android 4.1 (API 16)

Предварительное условие: предварительное знание инфраструктуры приложений Android и Intent.

Образец исходного кода:

Мы создаем проект, используя eclipse, а затем создаем папку anim (Animation) в папке res (resource). Теперь мы определим атрибуты анимации в файлах xml и поместим их в папку anim. Здесь мы собираемся определить две анимации, которые будут использоваться в методе makeCustomAnimation (). makeCustomAnimation принимает два файла анимации, один для входящей активности и другой для исходящей активности. Любая из анимаций может быть нулевой, и в этом случае анимация не будет выполняться для этого конкретного действия. Теперь мы определим fade_in.xml для входящей активности. Здесь мы собираемся изменить значение Alpha с 0 на 1, что делает деятельность прозрачной или непрозрачной.

1
2
3
4
   android:interpolator='@android:anim/anticipate_interpolator'
   android:fromAlpha='0.0' android:toAlpha='1.0'
   android:duration='@android:integer/config_longAnimTime' />

Теперь мы собираемся определить другой файл с именем fade_out.xml для перехода из Activity. Здесь мы изменим значение Alpha с 1 на 0.

1
2
3
4
   android:interpolator='@android:anim/anticipate_interpolator'
   android:fromAlpha='1.0' android:toAlpha='0.0'
   android:duration='@android:integer/config_longAnimTime' />

Теперь мы собираемся определить файл макета для основной деятельности. Назовите этот файл как acitivity_main.xml. В этом файле мы добавим три кнопки для соответствующей анимации.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<LinearLayout xmlns:android='http://schemas.android.com/apk/res/android'
    xmlns:tools='http://schemas.android.com/tools'
    android:layout_width='match_parent'
    android:layout_height='match_parent'
    android:orientation='vertical' >
 
    <Button
        android:layout_width='match_parent'
        android:layout_height='wrap_content'
        android:onClick='fadeAnimation'
        android:text='@string/btFadeAnimation' />
    <Button
        android:layout_width='match_parent'
        android:layout_height='wrap_content'
        android:onClick='scaleupAnimation'
        android:text='@string/btScaleupAni' />
   <Button
        android:layout_width='match_parent'
        android:layout_height='wrap_content'
        android:onClick='thumbNailScaleAnimation'
        android:text='@string/btThumbNailScaleupAni' />
 
</LinearLayout>

Как вы могли заметить, мы уже добавили метод onclick для каждой кнопки. Эти методы будут анимировать активность, когда она запускается с помощью метода startActivity (). Теперь давайте определим другой макет для целевого Activity с одним ImageView. Поместите изображение в папку для рисования, а затем используйте это изображение в качестве источника изображения. Здесь я поместил изображение «freelance2.jpg» в папку для рисования и использовал тег android: src для использования изображения. Назовите файл макета как activity_animation.xml

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android'
   android:layout_width='match_parent'
   android:layout_height='match_parent'
   android:orientation='vertical' >
   <ImageView
     android:id='@+id/imageView1'
     android:layout_width='match_parent'
     android:layout_height='match_parent'
     android:layout_marginRight='44dp'
     android:layout_marginTop='54dp'
     android:layout_centerInParent='true'
     android:src='@drawable/freelancer2' />
 
</RelativeLayout>

Как только этот макет определен, нам нужно определить соответствующий класс Activity. Давайте назовем этот класс как AnimationActivity. Исходный код выглядит следующим образом:

01
02
03
04
05
06
07
08
09
10
11
12
13
package com.example.jellybeananimationexample;
 
import android.app.Activity;
import android.os.Bundle;
 
public class AnimationActivity extends Activity {
 
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_animation);
    }
}

Теперь пришло время определить класс MainActivity, имеющий методы для настройки анимации Activity.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.example.jellybeananimationexample;
 
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
 
public class MainActivity extends Activity {
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }
 
 public void scaleupAnimation(View view) {
  // Create a scale-up animation that originates at the button
  // being pressed.
  ActivityOptions opts = ActivityOptions.makeScaleUpAnimation(view, 0, 0,
    view.getWidth(), view.getHeight());
  // Request the activity be started, using the custom animation options.
  startActivity(new Intent(MainActivity.this, AnimationActivity.class),
    opts.toBundle());
 }
 
 public void thumbNailScaleAnimation(View view) {
  view.setDrawingCacheEnabled(true);
  view.setPressed(false);
  view.refreshDrawableState();
  Bitmap bitmap = view.getDrawingCache();
  ActivityOptions opts = ActivityOptions.makeThumbnailScaleUpAnimation(
    view, bitmap, 0, 0);
  // Request the activity be started, using the custom animation options.
  startActivity(new Intent(MainActivity.this, AnimationActivity.class),
    opts.toBundle());
  view.setDrawingCacheEnabled(false);
 }
 
 public void fadeAnimation(View view) {
  ActivityOptions opts = ActivityOptions.makeCustomAnimation(
    MainActivity.this, R.anim.fade_in, R.anim.fade_out);
  // Request the activity be started, using the custom animation options.
  startActivity(new Intent(MainActivity.this, AnimationActivity.class),
    opts.toBundle());
 }
 
}

Как только вы закончите с кодом, выполните его. При нажатии на кнопку приложения вы увидите настроенную анимацию активности.

Вы можете получить обновленный исходный код Android-анимации здесь .

Для учебника Android посетите здесь .

Ссылка: Учебник по настройке Android Activity Animation от нашего партнера по JCG Ракеша Кусата в блоге Code4Reference .