2011-04-19 146 views
7

简而言之,我想要扩展视图 - 就像Android电子市场一样,当您点击“更多”按钮时,在示例“说明”上。
我弄明白,认为Android市场具有以下结构的布局:(通过view.setAnimation(), view.setLayoutAnimation()ScaleAnimation如何缩放View/ViewGroup - 以正确的方式动画布局?

<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> 

所以,我已经试过各种动画/ LayoutAnimations上的FrameLayout,但效果总是相同的:视图动画,但它是真正的layout_height缩放后仍然是相同的(所以其他视图的位置,依赖于给定的FrameLayout,保持不变)。

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

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

我有它得到了动画,类似市场的看法,但成本(性能! !)是高...

所以,问题是:是否有任何其他适当的方式来缩放(例如高度从50dip改变为200dip)给定的View/ViewGroup,以便下面的视图的位置动画视图也改变了?

+0

我一直在尝试做同样的事情。这是我的一半尝试:https://gist.github.com/947574它在'Animation'的子类中设置布局参数。表现还不错。正在调整大小的错误,没有完成 - 在追赶怪癖时耗尽了预算。 – 2011-04-28 23:41:49

+0

也是类似的SO问题与类似的解决方案:http://stackoverflow.com/questions/4946295/android-expand-collapse-animation – 2011-04-29 00:00:07

回答

1

切特·哈泽说,在这个博客帖子:http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

” ......最后,以前的动画改变了目标对象的视觉外观...但他们并没有真正改变物体本身.. ”

由于您的需求是唯一的视觉,而不是改变视图的LayoutParameters我将动画视图在底部,以及用什么翻译使用android:fillAfter两种。