Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Класс AnimationUtils

В Android есть удобный класс AnimationUtils для созданий анимаций различных видов. Для разных анимаций нужно вызывать разные статические методы, которые возвращают класс Animation:

makeInAnimation(Context c, boolean fromLeft)
Используется для создания анимации сдвига и проявления из состояния невидимости. Второй параметр определяет направление сдвига.
makeOutAnimation(Context c, boolean toRight)
Используется для создания анимации сдвига или затемнения до полного исчезновения. Второй параметр определяет направление сдвига.
makeInChildBottomAnimation(Context c)
Вызывает анимацию сдвига снизу вверх.
loadAnimation(Context c, int id)
Загружает анимацию из ресурсов. Вы можете создать свой ресурс для анимации или воспользоваться готовыми системными ресурсами android.R.anim.fade_out, android.R.anim.fade_in, android.R.anim.slide_out_right и android.R.anim.slide_in_left.

Примеры использования метода loadAnimation()

Translate - Слайд-шоу

Alpha

Scale

Rotate

Пример использования

Рассмотрим простой пример использования некоторых методов анимации. Добавьте в разметку кнопку и компонент View:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hapticFeedbackEnabled="true"
        android:onClick="onClick"
        android:text="Я кнопка" />

    <View
        android:id="@+id/view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#00f" />

</LinearLayout>

Напишем код для щелчка кнопки:


package ru.alexanderklimov.animation;

import ...

public class TestActivity extends Activity {

	View viewToAnimate;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_test);

		viewToAnimate = findViewById(R.id.view);
	}

	public void onClick(View v) {
		if (viewToAnimate.getVisibility() == View.VISIBLE) {
			// если элемент видим, то сдвигаем вправо
			Animation out = AnimationUtils.makeOutAnimation(this, true);
			viewToAnimate.startAnimation(out);
			viewToAnimate.setVisibility(View.INVISIBLE);
		} else {
			// если элемент невидим, то выходим из сумрака
			Animation in = AnimationUtils.loadAnimation(this,
					android.R.anim.fade_in);
			viewToAnimate.startAnimation(in);
			viewToAnimate.setVisibility(View.VISIBLE);
		}
	}
}

Другие методы анимации попробуйте самостоятельно.

Реклама