0

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

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

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

4

1 回答 1

2

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

1) 您可以layout_gravity将这两个项目的 设置为,top|left然后将两个图像设置为相对于 的左上角的位置。layout_marginToplayout_marginLeftFrameLayout

2)如果你想,说图像 A 上的中心图像 B,你可以将图像 A 设置为layout_gravity top|left, layout_marginLeft0, layout_marginTop0,然后将layout_gravity图像 B 设置为center。这种方法在各种设备上运行时更加稳健。您甚至可以使用边距相对于其居中位置偏移图像 B。

此时你应该明白了。您可以结合layout_gravity边距来根据需要定位图像。

一些警告:

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

2)您需要明确layout_gravity设置FrameLayout. 否则FrameLayout将忽略子视图的layout_marginTopandlayout_marginLeft属性。

最后,您可以使用 来执行相同的技巧RelativeLayout,使用它的属性来相对于彼此定位图像。就像FrameLayout,添加到布局的最后一个视图显示在其他视图之上。

于 2012-07-05T23:34:47.427 回答