Android ViewAnimator:更改viewstub子项时的动画

时间:2011-10-20 15:19:42

标签: android android-layout z-index android-animation viewanimator

这是我的问题:

我有一个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设置动画时,我看不到动画。这是一个具体的例子:

当我尝试使用以下动画为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>

有人已经遇到过这个问题吗?

有没有办法在web开发中为viewstubs指定z-index


修改

使用ZAdjustment属性无法解决问题

3 个答案:

答案 0 :(得分:1)

我确定你已经解决了这个问题,但由于没有答案......你应该可以使用android:zAdjustment="top"

答案 1 :(得分:0)

您可以使用此View.bringToFront

此方法会将您的视图移动到子项列表的末尾。所以它和其他观点指数会发生变化。小心这个。

答案 2 :(得分:-1)

在我看来,您实际上并没有使用ViewAnimator类的功能,而只是继承了FrameLayout类。

要为视图转换设置动画,您需要在android:inAnimation上设置android:outAnimationViewAnimator属性,并使用setDisplayedChild()或{{1}启动代码转换}和showNext()