我正在尝试动画TextView
从ImageView
后面向下滑动。我有以下布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:layout_margin="16dp"
android:layout_marginTop="-10dp"
android:background="@drawable/image_background"
android:visibility="invisible"
android:layout_below="@id/image"
/>
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/image_background"
android:adjustViewBounds="true"
android:layout_margin="6dp"
android:layout_below="@id/question"
/>
</RelativeLayout>
我使用的是RelativeLayout
而非LinearLayout
,以使description TextView
显示在ImageView
后面(z-index-wise)。
请注意,TextView
的文字长度可能会有所不同,填写时文字的长度通常比图片长。 RelativeLayout
上方和下方还有其他观点。
我试过这个动画
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%p" android:toYDelta="0"
android:duration="@android:integer/config_longAnimTime"/>
<scale android:fromYScale="0.0" android:toYScale="1.0"
android:duration="@android:integer/config_longAnimTime" />
</set>
...并使用
descriptionView.Visibility = ViewStates.Visible;
Animation a = AnimationUtils.LoadAnimation(this, Resource.Animation.push_down);
descriptionView.StartAnimation(a);
然而,这是不稳定的,并没有从我认为它开始的地方开始,nore做缩放工作。我已经阅读了有关布局动画的内容,并且当可见性发生变化时动画可以自动触发,但我不知道如何。
如何让动画工作,是否有更简单的解决方案?