Методы класса 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
|
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
|
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 .