Android ScaleAnimation在View上不移动下面视图的位置

时间:2017-04-26 14:50:38

标签: android listview animation android-animation

我正在尝试使用以下代码在我的Android应用中为视图的高度设置动画:

Animation anim = new ScaleAnimation(
                1f, 1f, 
                1f, 2f,
                Animation.RELATIVE_TO_SELF, 0f, 
                Animation.RELATIVE_TO_SELF, 0f);
anim.setFillAfter(true);
anim.setDuration(500);
mSearchHeader.startAnimation(anim); 

这样可以很好地设置mSearchHeader的高度,但是,我的标题下面有一个ListView控件。我的期望是mSearchHeader的高度扩展会压低列表视图(有效地降低列表视图高度以补偿标题的较大高度。

但是,listview的大小仍然是静态的。如何将列表视图转换为"收缩"标题扩展时?我是否还要在列表视图中添加动画?

我的XML是:

<android.support.percent.PercentRelativeLayout
    android:id="@+id/main_layout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/windowBackground">

    <RelativeLayout
        android:id="@+id/search_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/buttonBackground">

     <ListView
        android:id="@+id/provider_search_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/search_view" />

....

1 个答案:

答案 0 :(得分:0)

Animation会产生动画幻觉,只会更改View的矩阵,而不会更改实际视图坐标。

相反,使用另一个动画API:

mSearchHeader.animate()
    .y(100)
    .setDuration(500);

这会将y值设置为100像素并更改View坐标,最终会影响其下方的ListView