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

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

Шкодим

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

Анимация списков

Анимация при загрузке списка

Если вам хочется, чтобы список загружался с анимацией, то создайте папку res/anim, а в ней поместите два xml-файла:

list_layout_controller.xml


<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/scale"
    android:delay="50%" />

scale.xml


<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <scale
        android:duration="2000"
        android:fromXScale="0.1"
        android:fromYScale="0.1"
        android:pivotX="10%"
        android:pivotY="10%"
        android:startOffset="100"
        android:toXScale="1"
        android:toYScale="1.0" />

</set>

Теперь в java-файле после добавления адаптера вставьте две строчки кода:


// присваиваем адаптер списку
setListAdapter(adapter);

LayoutAnimationController controller = AnimationUtils
		.loadLayoutAnimation(this, R.anim.list_layout_controller);
getListView().setLayoutAnimation(controller);

Посмотреть эффект на видео

Также подключить анимацию можно через XML. Создадим другую анимацию - элемента списка при загрузке будут проявляться постепенно, начиная снизу и заканчивая наверху.

Опять создаём два xml-файла в папке res/anim.

translate.xml


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />

</set>

layout_bottom_to_top_slide.xml


<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/translate"
    android:animationOrder="reverse"
    android:delay="30%" />

Теперь у списка подключите анимацию.


<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layoutAnimation="@anim/layout_bottom_to_top_slide" >

Для управления скоростью анимации используйте атрибут android:delay во втором файле.

Реклама