指定图像叠加的屏幕位置

时间:2012-07-05 23:10:22

标签: android android-layout

在Android中,我知道如何叠加两个图像并为它们制作动画。问题是如何在第一张图像上的特定位置叠加第二张图像。

例如,第一张图片是带有电源开关的设备的图像,第二张图片是动画时会发光的电源LED。

我想知道如何指定覆盖层中电源LED的位置,以便它覆盖电源开关。

1 个答案:

答案 0 :(得分:2)

您可以做的一件事就是将两个图像放在FrameLayout内,宽度/高度都设置为wrap_content。您添加到FrameLayout的最后一个将位于顶部。然后,您可以通过以下几种方式之一独立定位两个图像:

1)您可以将两个项目的layout_gravity设置为top|left,然后设置layout_marginToplayout_marginLeft以将两个图片相对于左上角定位FrameLayout

2)如果你想,在图像A的顶部说中心图像B,你可以将图像A设置为layout_gravity top|leftlayout_marginLeft 0,layout_marginTop 0,然后设置{{图片B上的1}}到layout_gravity。对于在各种设备上运行,这种方法更加健壮。您甚至可以使用边距来偏移图像B相对于其居中位置。

此时你应该明白这个想法。您可以将center与边距结合使用,根据需要定位图像。

一些警告:

1)这不是一种非常有效的方法。如果它只是两个更大的布局图像,没什么大不了的。但是,如果在布局中多次执行此技术,渲染性能将受到影响。如果是这种情况,则应考虑改为创建自定义视图。

2)您需要在layout_gravity中包含的项目上明确设置layout_gravity。否则,FrameLayout会忽略您的子视图中的FrameLayoutlayout_marginTop属性。

最后,您可以使用layout_marginLeft执行相同的操作,使用其属性将图像相对于彼此定位。与RelativeLayout类似,添加到布局中的最后一个视图显示在其他视图之上。