【发布时间】:2014-05-28 15:48:44
【问题描述】:
所以我的问题实际上与动画有关。我想在这个线性(水平)布局中为红色方块设置动画:http://image.noelshack.com/fichiers/2014/22/1401291148-stck.jpeg
我想使用放大红色方块的动画,所以我想得到这个: http://image.noelshack.com/fichiers/2014/22/1401291147-stck2.jpeg (红色方块越过左右灰色方块。我不在乎它被线性布局的高度裁剪,我知道如何处理)
现在,如果我启动动画,它会越过左侧的灰色方块,但在右侧的下方...我希望红色的方块位于其他两个上方。
无论如何我可以做到这一点吗?我尝试了 myImageView.BringToFront() 但它破坏了线性布局,将红色方块带到了最右边。
注意:它必须是线性布局,我知道如何使用相对布局来做到这一点,但我还有其他限制,使我需要线性布局...
PS:如果这根本不可能,我是否可以在相对布局中实现线性布局中的“权重”? (我希望我的 4 个方格均匀放大,以便它们填充用户屏幕的宽度。我可以在线性布局中实现这一点,但它让我回到了我的第一个问题......)
【问题讨论】:
-
您应该更改 z 顺序。还要检查这个 developer.android.com/reference/android/view/View.html#bringToFront 如果你不使用 Canvas,这当然是。
-
z 顺序是绘制它们的顺序。在线性布局中,先绘制第一个元素,然后绘制第二个,以此类推;这就是为什么第三个元素被绘制在第四个元素之下的原因。线性布局这样做是因为它计算第一个项目的大小,然后是第二个,依此类推;因此,bringToFront 正在改变这个顺序,这就是为什么它会影响你的布局。您使用什么类型的动画和动画类?你确定你不能使用RelativeLayout或者FrameLayout吗?是您需要的布局权重吗,因为对于 4 个子视图,有很多方法可以解决这个问题。
-
@Chris:感谢您对 z 顺序的解释。关于动画,我还不知道。例如:
RotateAnimation anim = new RotateAnimation(0f, 350f,125f, 125f); anim.setInterpolator(new LinearInterpolator()); anim.setDuration(1400);我需要的是权重和动画,以便在所有内容之上/之前/之上播放。如果你能告诉我如何在相对布局中使用权重来解决我的问题。 (它增加了一些工作,但应该没问题) -
我不能顺便重绘特定的 imageView 吗?如果我不重绘整个布局,它应该做对吗?哦,如果有助于找到实现相对布局权重的最佳解决方案,我的项目中有 16 个子视图。
标签: android android-layout android-animation