Главная » Разработка для Android » Применение анимации, основанной на расчете промежуточных кадров

0

Анимация может использоваться в сочетании с любым Представлением. Делается  это с помощью метода startAnimation, которому в качестве пара- метров передаются объекты Animation  или AnimationSet.

Анимационные последовательности остановятся после первого воспро- изведения,  однако такое поведение  можно изменить,  используя методы setRepeatMode и setRepeatCount, вызываемые из тех же объектов Animation и AnimationSet. Вы можете зациклить анимацию  или заставить  ее повто- ряться в обратном порядке, используя режимы RESTART и REVERSE соот- ветственно. Параметр для метода setRepeatCount будет указывать, сколько раз анимация  должна повториться.

В листинге 15.14 показана анимация, повторяющаяся бесконечно.

Листинг 15.14. Применение непрерывно повторяющейся анимации

myAnimation.setRepeatMode(Animation.RESTART); myAnimation.setRepeatCount(Animation.INFINITE); myView.startAnimation(myAnimation);

Использование AnimationListener

Интерфейс AnimationListener позволяет  создать обработчик  событий, который срабатывает  в начале или при завершении анимации.  Используя его, вы можете совершать какие-либо операции, прежде чем (или после того как) анимация закончит работу. Это может быть изменение содержимого Представления или последовательный показ нескольких  анимаций.

Вызовите метод setAnimationListener из объекта Animation и передайте ему в качестве параметра  реализацию интерфейса AnimationListener, при необходимости переопределив методы onAnimationEnd, onAnimationStart и onAnimationRepeat.

В листинге  15.15 наглядно  продемонстрирована простая  реализация интерфейса AnimationListener.

Листинг 15.15. Создание реализации AnimationListener

myAnimation.setAnimationListener(new AnimationListener() {

public void onAnimationEnd(Animation _animation) {

// TODO Какие-то действия после завершения анимации.

}

public void onAnimationRepeat(Animation _animation) {

// TODO Какие-то действия при повторении анимации.

}

public void onAnimationStart(Animation _animation) {

// TODO Какие-то действия при запуске анимации.

}

});

Пример изменения пользовательского интерфейса с помощью анимации

В этом примере1  вы создадите  новую Активность, в которой  анимация используется для плавного  изменения содержимого  пользовательского интерфейса в зависимости от направления, куда повернут  манипулятор D-pad.

1. Начните  с создания  нового проекта  ContentSlider и одноименной

Активности для него.

package com.paad.contentslider;

import android.app.Activity; import android.view.KeyEvent; import android.os.Bundle;

import android.view.animation.Animation;

import android.view.animation.Animation.AnimationListener;

import android.view.animation.AnimationUtils;

import android.widget.TextView;

public class ContentSlider extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

}

}

2. Отредактируйте ресурс с разметкой main.xml. Он должен содержать один элемент TextView  с жирным  центрированным текстом относи- тельно большого размера.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">

<TextView android:id="@+id/myTextView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:textStyle="bold" android:textSize="30sp" android:text="CENTER" android:editable="false" android:singleLine="true" android:layout_margin="10dp"

ПРИМЕЧАНИЕ

В качестве дополнения можете подключить акселерометр вместо ис- пользования манипулятора D-pad.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии