在Android中,我知道如何叠加两个图像并为它们制作动画。问题是如何在第一张图像上的特定位置叠加第二张图像。
例如,第一张图片是带有电源开关的设备的图像,第二张图片是动画时会发光的电源LED。
我想知道如何指定覆盖层中电源LED的位置,以便它覆盖电源开关。
答案 0 :(得分:2)
您可以做的一件事就是将两个图像放在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,然后设置{{图片B上的1}}到layout_gravity
。对于在各种设备上运行,这种方法更加健壮。您甚至可以使用边距来偏移图像B相对于其居中位置。
此时你应该明白这个想法。您可以将center
与边距结合使用,根据需要定位图像。
一些警告:
1)这不是一种非常有效的方法。如果它只是两个更大的布局图像,没什么大不了的。但是,如果在布局中多次执行此技术,渲染性能将受到影响。如果是这种情况,则应考虑改为创建自定义视图。
2)您需要在layout_gravity
中包含的项目上明确设置layout_gravity
。否则,FrameLayout
会忽略您的子视图中的FrameLayout
和layout_marginTop
属性。
最后,您可以使用layout_marginLeft
执行相同的操作,使用其属性将图像相对于彼此定位。与RelativeLayout
类似,添加到布局中的最后一个视图显示在其他视图之上。