在 Android 中,我知道如何叠加两个图像并为它们设置动画。问题是如何在第一个图像的特定位置覆盖第二个图像。
例如,第一个图像是带有电源开关的设备的图像,第二个图像是在动画时会发光的电源 LED。
我想知道如何在覆盖层中指定电源 LED 的位置,以便它覆盖电源开关。
在 Android 中,我知道如何叠加两个图像并为它们设置动画。问题是如何在第一个图像的特定位置覆盖第二个图像。
例如,第一个图像是带有电源开关的设备的图像,第二个图像是在动画时会发光的电源 LED。
我想知道如何在覆盖层中指定电源 LED 的位置,以便它覆盖电源开关。
您可以做的一件事是将两个图像都放在 a 中FrameLayout
,并将两个图像的宽度/高度都设置为wrap_content
. 您添加到的最后一个FrameLayout
将在顶部。然后,您可以通过以下几种方式之一独立定位这两个图像:
1) 您可以layout_gravity
将这两个项目的 设置为,top|left
然后将两个图像设置为相对于 的左上角的位置。layout_marginTop
layout_marginLeft
FrameLayout
2)如果你想,说图像 A 上的中心图像 B,你可以将图像 A 设置为layout_gravity top|left
, layout_marginLeft
0, layout_marginTop
0,然后将layout_gravity
图像 B 设置为center
。这种方法在各种设备上运行时更加稳健。您甚至可以使用边距相对于其居中位置偏移图像 B。
此时你应该明白了。您可以结合layout_gravity
边距来根据需要定位图像。
一些警告:
1)这不是一种非常有效的处理方式。如果只是较大布局中的两个图像,那没什么大不了的。但是,如果您在布局中多次执行此技术,渲染性能将会受到影响。如果是这种情况,您应该考虑改为创建自定义视图。
2)您需要明确layout_gravity
设置FrameLayout
. 否则FrameLayout
将忽略子视图的layout_marginTop
andlayout_marginLeft
属性。
最后,您可以使用 来执行相同的技巧RelativeLayout
,使用它的属性来相对于彼此定位图像。就像FrameLayout
,添加到布局的最后一个视图显示在其他视图之上。