【发布时间】:2018-01-26 17:13:50
【问题描述】:
我正在创建一个游戏,该游戏将有一张地图(一张图片),上面有一些特征(其他图片)。到目前为止,我使用子类视图并在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....@ |
| @..........@ |
| @..........@ |
| @@@@@@@@@@@@ |
| |
| |
| |
`--------------'
即对包含的布局应用缩放,但让它绘制“溢出”,而不是剪裁它。
有没有简单的方法可以做到这一点?
【问题讨论】:
-
这个问题的原标题是“Don't clip a scaled view”,因为我想禁用对缩放视图的裁剪(即不裁剪缩放视图)。新标题对这个问题没有意义。
-
你玩过ImageView's ScaleType吗?设置这些可能会达到您想要的效果。