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()
,