Android布局动画无效

时间:2011-04-27 07:47:34

标签: android android-layout animation layout android-animation

我有一个LinearLayoutLayoutContentView),可以包含一个或两个视图(SubView1SubView2)(它们是TextView或{{ 1}})。 此ImageView位于另一个layoutLinearLayout)。

我想在MyScreenLayout制作一个动画,以便它可以移动并在LayoutContentView中显示其中的一部分。

这两个布局都有MyScreenLayout,所以它可以让它的孩子在自己之外画画。

根据不同的参数,我可以更改内容的大小以及我将显示的内容的大小。

基本上,我从上到下展示两个子视图,并从底部到顶部展开,仅显示第二个子视图。在我花费之前,我增加了setClipChildren(false);的大小,因此它可以显示两个子视图,并且在我未完成之后,我减小了LayoutContentView的大小,因此它只能显示第二个子视图,并且它在屏幕上留出了其他元素的空间。

以下是我花费和取消费用的方法LayoutContentView

LayoutContentView

我制作动画的方式我需要在mLayoutContentView.clearAnimation(); float yFrom = 0.0F; float yTo = 0.0F; float xFrom = 0.0F; float xTo = 0.0F; if (expend) { // if we expend // I change the height of my LayoutContentView so it we can show it's two subviews final android.view.ViewGroup.LayoutParams lp = mLayoutContentView.getLayoutParams(); lp.height = subView1H + subView2H; setLayoutParams(lp); invalidate(); // we start the animation so it shows only the second subview yFrom = -subView1H; // and we animate from top to bottom until it shows the two subviews yTo = 0; } else { // if we un-expend // we animate from bottom to top starting by showing the two subviews yFrom = 0; // and progressively hiding the first subview and showing only the second subview yTo = -subView1H; } Animation anim = new TranslateAnimation(xFrom, xTo, yFrom, yTo); anim.setDuration(1000); anim.setFillAfter(true); anim.setFillEnabled(true); anim.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { if (!expend) { // if we un expend at the end of the animation we can set the size of LayoutContentView to the size of the second subview again final android.view.ViewGroup.LayoutParams lp = mLayoutContentView.getLayoutParams(); lp.height = subView2H; mLayoutContentView.setLayoutParams(lp); invalidate(); } } }); mLayoutContentView.startAnimation(anim); 上应用它,包含两个子视图的布局,而LayoutContentView它不会动画。 我尝试使用startAnimation(),但不是在LayoutAnimationController上进行动画,而是在每个孩子上进行动画... 我也尝试自己动画每个孩子,但我不知道为什么,第二个子视图没有显示。

每次我尝试使用LayoutContentView时,都会看到动画所做的更改。

有没有人知道解决方案或遇到同样的问题并找到了一个好的解决方案?

编辑: 好吧,如果你为HierarchyViewer设置background颜色并用动画移动它们,TextView移动,但即使你已经为动画设置了填充后参数,背景也是如此回到它的原始位置或类似的东西,因此当我为我的background两个设置背景颜色时,SubView的背景中有一个隐藏了另一个背景。 。 还有一个问题,如果在动画之后,其中一个SubView仍在其布局之外,那么动画期间也会出现问题,所以我也在这里添加一个限制。

0 个答案:

没有答案