7

简而言之,我想缩放视图 - 就像 Android Market 一样,当您单击“更多”按钮时,例如“描述”。
我发现,Android Market 具有以下结构的布局:

    <FrameLayout
    android:id="@+id/artists_frame"
    android:layout_width="fill_parent"
    android:layout_height="64dip"
    android:layout_below="@id/something1"
    android:layout_above="@id/something2"

    >

<!-- Some view there, which height >> 64dip -->

    </FrameLayout>

所以,我在 FrameLayout 上尝试了各种动画/布局动画(通过view.setAnimation(), view.setLayoutAnimation()ScaleAnimation),但效果总是一样的:视图动画,但缩放后的真实 layout_height 仍然相同(所以其他视图的位置,即取决于给定的 FrameLayout,保持不变)。

之后,我想 - 我在循环中更改给定 FrameLayout 的 layout_height:

layoutParams = view.getLayoutParams()
layoutParams.height = scaleTo;
layout.setLayoutParams(layoutParams);

我有动画,类似市场的视图,但是成本(性能!!!)太高了……

所以,问题是:是否有任何其他正确的方法来缩放给定的 View / ViewGroup (例如将高度从 50dip 更改为 200dip),以便动画视图下方的视图位置也会发生变化?

4

1 回答 1

1

正如 Chet Haase 在这篇博文中所说:http ://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

“……最后,之前的动画改变了目标对象的视觉外观……但实际上并没有改变对象本身……”

由于您的需要只是视觉上的,而不是更改视图,LayoutParameters我会在底部为视图设置动画,并使用android:fillAfter两者进行翻译。

于 2011-05-03T11:48:14.533 回答