如何缩放View / ViewGroup - 以适当的方式设置动画布局?

时间:2011-04-19 14:35:23

标签: android animation android-layout layout-animation

简而言之,我想缩放视图 - 就像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上尝试了各种动画/ LayoutAnimations(通过view.setAnimation(), view.setLayoutAnimation()ScaleAnimation),但效果总是一样的:视图动画,但缩放后它是真正的layout_height仍然相同(所以其他视图的位置,取决于给定的FrameLayout,保持不变)。

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

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

我有动画,市场般的观点,但成本(性能!!!)是很高的......

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

1 个答案:

答案 0 :(得分:1)

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

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

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