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

Koc*_*cus 7 animation android 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>
Run Code Online (Sandbox Code Playgroud)

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

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

layoutParams = view.getLayoutParams()
layoutParams.height = scaleTo;
layout.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)

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

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

Mac*_*rse 1

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

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

由于您需要的只是视觉效果,因此我不会更改视图,而是对LayoutParameters底部的视图进行动画处理,并使用android:fillAfter两者的翻译。