我正在创建一个游戏,它将在顶部显示带有某些功能(其他图像)的地图(图像)。到目前为止,我正在使用子类视图并在onDraw
方法中绘制所有内容,但我想将图像保持为ImageView
-s,以便我可以使用Android设置动画(在创建,移动等时淡入)内置方法。
所以我有以下结构:
FrameLayout (match_parent)
AbsoluteLayout (match_parent)
map: ImageView
feature1: ImageView
...
由于地图大于视口,我想对其应用比例。虽然可以对每个单独的图像应用相同的比例,但我希望保持所有特征图像的坐标相对于地图的规范尺寸,并将主比例应用于单个位置,即AbsoluteLayout。问题是,当我设置scaleX
和scaleY
时,子图像被剪裁:显示的唯一部分是如果未应用比例则显示的部分。
这是没有应用规模的情况:
device screen
,--------------.
| @@@@@@@@@@@@ | @@@@@
| @........... | .....
| @........... | imaginary map continues
| @........... | .....
| @...big map. | .....
| @........... | .....
| @........... | .....
| @........... | .....
| @........... | .....
| @........... | .....
`--------------'
@........... .....
@........... .....
当我应用比例时,我看到了这一点:地图的相同部分是可见的,但是缩放了。
,--------------.
| @@@@ |
| @... |
| @... |
| @... |
| |
| |
| |
| |
| |
| |
`--------------'
我想实现这个目标:
,--------------.
| @@@@@@@@@@@@ |
| @..........@ |
| @..scaled..@ |
| @...map....@ |
| @..........@ |
| @..........@ |
| @@@@@@@@@@@@ |
| |
| |
| |
`--------------'
即将比例应用于包含布局,但使其绘制“溢出”,而不是剪辑它。
是否有捷径可寻?
This answer有我需要的东西:只需在外部容器(FrameLayout)上设置setClipChildren(false)
。