6

我正在使用ObjectAnimator向上滑动背景图像以显示listView以下内容。有listView一个weightof0.7f以便它在所有屏幕尺寸上的比例相同。

使用ObjectAnimator是否可以以相同0.7的比例向上滑动我的背景图像,在所有屏幕上都相同?

背景图像和listView

<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:weightSum="1" >

 <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_weight="0.3" >
 </LinearLayout>

 <ListView
     android:id="@+id/listView"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_weight="0.7"
     android:background="#303030"
     android:divider="#555555"
     android:dividerHeight="1dp" >

 </ListView>

 </LinearLayout>

动画代码:

FrameLayout mainView = (FrameLayout)findViewById(R.id.mainView);
ObjectAnimator mover = ObjectAnimator.ofFloat(mainView, "translationY", !historyShown ? -500 : 0);
mover.setDuration(300);
mover.start();
4

1 回答 1

8

实际上想出了一个更快更简单的方法。由于我listView正在使用它的weight设置,0.7f因此它始终与所有屏幕尺寸成比例。所以,我只需要获取 的高度listView并在我的ObjectAnimator:

 // Figure out where listView is
 int listViewHeight = list.getHeight();

 FrameLayout mainView = (FrameLayout)findViewById(R.id.mainView);
 ObjectAnimator mover = ObjectAnimator.ofFloat(mainView, "translationY", !historyShown ? -listViewHeight : 0);
 mover.setDuration(300);
 mover.start();

工作完美!

于 2013-09-23T04:36:51.383 回答