Android ViewAnimator: анимация при смене дочернего viewstub

Вот моя проблема:

У меня есть ViewAnimator, как:

<ViewAnimator
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/viewanimator">

    <ViewStub
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/form_viewstub"
        android:inflatedId="@+id/form_view"
        android:layout="@layout/form_layout"/>

    <ViewStub
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/history_viewstub"
        android:inflatedId="@+id/history_view"
        android:layout="@layout/history_layout"/>

    <ViewStub
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/call_viewstub"
        android:inflatedId="@+id/call_view"
        android:layout="@layout/call_layout"/>

</ViewAnimator>

Когда я анимирую viewstub, который идет после текущего, нет проблем. Проблема в том, что когда я пытаюсь анимировать viewstub раньше, я не вижу анимацию. Вот конкретный пример:

Когда я пытаюсь оживить id/history_viewstub со следующей анимацией и id/call_viewstub является текущим отображаемым макетом, я ничего не вижу (я представляю, что анимация воспроизводится в текущем представлении)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromXScale="0.0"
        android:toXScale="1.0"
        android:fromYScale="0.0"
        android:toYScale="1.0"
        android:pivotX="1.0"
        android:pivotY="0.0"
        android:fillAfter="true"
        android:duration="600"/>
    <translate
        android:fromXDelta="100%"
        android:toXDelta="0"
        android:duration="600"/>
</set>

Кто-нибудь уже сталкивался с этой проблемой?

Есть ли способ указать z-index в viewstubs, как в веб-разработке?


редактировать

С использованием ZAdjustment свойство не решает проблему

3 ответа

Я уверен, что вы уже решили эту проблему, но поскольку ответа нет... вы должны иметь возможность использовать android:zAdjustment="top",

Вы можете использовать этот View.bringToFront.

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

Мне кажется, что вы на самом деле не используете функциональность ViewAnimator класс, а скорее только унаследованный FrameLayout учебный класс.

Для анимации переходов просмотра необходимо установить android:inAnimation а также android:outAnimation свойства на ViewAnimator и инициировать переходы из вашего кода, используя либо setDisplayedChild() или же showNext() а также showPrevious(),

Другие вопросы по тегам