Анимация перехода фрагмента при загрузке фрагментов из XML - PullRequest
5 голосов
/ 20 декабря 2011

В приложении для моего планшета есть одно действие и несколько разных макетов для разных режимов пользовательского интерфейса - каждый из этих макетов использует теги <фрагмент> для заполнения пользовательского интерфейса различными фрагментами (setContentView вызывается в действии для переключения режимов).

Как я могу использовать анимацию перехода, чтобы добавить новые фрагменты, когда они загружаются таким образом? Прямо сейчас переключение между режимами создает эффект мерцания при загрузке фрагментов.

Спасибо!

1 Ответ

1 голос
/ 13 сентября 2012

Я никогда раньше не работал с фрагментами, но нет причин, по которым наличие фрагментов повлияло бы на мое решение. По сути, вы реализуете анимацию, которая будет отображаться в первом макете чего-либо. Лучший пример - просмотр списка

Сначала вам нужно добавить пару дополнительных файлов анимации, добавленных в res / anim

layout_controller.xml:

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

Это определяет процесс выкладывания чего-либо.
Тогда bounce.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/bounce_interpolator">
<translate
    android:fromXDelta="40%"
    android:toXDelta="0%"
    android:fromYDelta="0%"
    android:toYDelta="0%" 
    android:duration="900"/>
<alpha
    android:fromAlpha="0"
    android:toAlpha="1"
    android:duration="1000"
    android:interpolator="@android:anim/linear_interpolator"
    />

Эта анимация будет подпрыгивать, а также постепенно исчезать.

Теперь, если у вас есть просмотр списка, установите его в виде XML (будет работать для просмотра текста, просмотра изображений и т. Д.)

<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:persistentDrawingCache="animation|scrolling"
android:layoutAnimation="@anim/layout_controller"
/>

поле layoutAnimation указывает представлению списка, что нужно обратиться к контроллеру размещения о том, как отображать представление списка. При первом отображении списка каждый элемент должен последовательно возвращаться. Вы можете легко настроить анимацию, изменив bounce.xml или изменив время ожидания, изменив задержку 50%, определенную в layout_controller.

...