Веб-сайт разработчиков Android предоставляет вам 2 предопределенных метода анимации, которые вы можете использовать в своих приложениях — анимация анимации и покадровая анимация . Они очень просты в реализации и работают довольно хорошо.
Если вы используете Android 3.0 или выше, вы должны проверить метод анимации свойств .
Но что, если вам нужно создать собственную настроенную анимацию и вы используете более старые версии? Не волнуйтесь, это легко сделать, вот как вы это делаете.
Для создания индивидуальной анимации вам необходимо выполнить следующие 3 шага.
Для пояснения мы создадим простую анимацию, которая постепенно меняет фон кнопки с черного на красный.
Шаг 1 — Расширение класса Animation и установка свойств.
Создайте класс, который расширяет класс Android Animation .
Этот класс будет содержать логику вашей анимации.
Смотрите мой пример:
public class BGColorAnimation extends Animation {
private View view;
private int currentRedColor;
//The steps to skip between colors
private static int STEP_SIZE=30;
private static int ANIMATION_DURATION=50;
public BGColorAnimation(View view) {
this.view=view;
setDuration(ANIMATION_DURATION);
setRepeatCount(255/STEP_SIZE);
setFillAfter(true);
setInterpolator(new AccelerateInterpolator());
setAnimationListener(new MyAnimationListener());
}
}
- Как видите, в этом классе не так много, так как моя анимация не так сложна.
- Обратите внимание, что я произвел инициализацию всех необходимых параметров анимации внутри конструктора, но вы можете демонстративно инициализировать их извне класса.
- Есть 2 важных параметра, которые определяют поведение анимации:
- RepeatCount — количество шагов, которые имеет эта анимация.
- Длительность — время сна между 2 шагами.
- На каждом шаге слушатель анимации будет запущен.
Шаг 2. Реализация интерфейса AnimationListener
Создайте класс, который реализует Animation.AnimationListener .
Как уже упоминалось, он запускается на каждом шаге анимации.
class MyNumbersAnimationListener implements AnimationListener{
private int index;
class MyAnimationListener implements AnimationListener{
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
// Change color of the view
view.setBackgroundColor(
Color.rgb(currentRedColor+=STEP_SIZE, 0, 0));
}
@Override
public void onAnimationStart(Animation animation) {
view.setBackgroundColor(Color.BLACK);
currentRedColor=0;
}
}
На самом деле, я не вижу причин, почему бы не выполнить оба шага в одном классе:
public class BGColorAnimation extends Animation implements
Animation.AnimationListener {
private View view;
private int currentRedColor;
// The steps to skip between colors
private static int STEP_SIZE= 30;
private static int ANIMATION_DURATION = 50;
public BGColorAnimation(View view) {
this.view = view;
setDuration(ANIMATION_DURATION);
setRepeatCount(255 / STEP_SIZE);
setFillAfter(true);
setInterpolator(new AccelerateInterpolator());
setAnimationListener(this);
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
view.setBackgroundColor(
Color.rgb(currentRedColor += STEP_SIZE, 0, 0));
}
@Override
public void onAnimationStart(Animation animation) {
view.setBackgroundColor(Color.BLACK);
currentRedColor = 0;
}
}
Шаг 3 — Запустите анимацию из представления.
Анимации запускаются из представления.
Пример:
Button button = (Button)findViewById(R.id.b_colors);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
button.startAnimation(new BGColorAnimation(button));
}
});
Источник: http://www.aviyehuda.com/2011/07/android-development-custom-animation/