【问题标题】:Disable clipping of a scaled view?禁用缩放视图的剪辑?
【发布时间】:2018-01-26 17:13:50
【问题描述】:

我正在创建一个游戏,该游戏将有一张地图(一张图片),上面有一些特征(其他图片)。到目前为止,我使用子类视图并在onDraw 方法中绘制所有内容,但我想将图像保留为ImageView-s,以便我可以为它们设置动画(创建时淡入,移动,等)使用 Android 内置方法。

所以我有以下结构:

FrameLayout (match_parent)
    AbsoluteLayout (match_parent)
        map: ImageView
        feature1: ImageView
        ...

由于地图比视口大,我想对其应用比例。虽然可以对每个单独的图像应用相同的比例,但我想保持所有特征图像的坐标相对于地图的规范大小,并将主比例应用到一个地方,即 AbsoluteLayout。问题是当我设置scaleXscaleY 时,子图像被剪裁:唯一显示的部分是如果不应用比例尺将显示的部分。

这是没有应用比例的样子:

  device screen
,--------------.
| @@@@@@@@@@@@ | @@@@@
| @........... | .....
| @........... | imaginary map continues
| @........... | .....
| @...big map. | .....
| @........... | .....
| @........... | .....
| @........... | .....
| @........... | .....
| @........... | .....
`--------------'
  @...........   .....
  @...........   .....

当我应用比例时,我看到:地图的同一部分是可见的,但已缩放。

,--------------.
| @@@@         |
| @...         |
| @...         |
| @...         |
|              |
|              |
|              |
|              |
|              |
|              |
`--------------'

我想实现这个:

,--------------.
| @@@@@@@@@@@@ |
| @..........@ |
| @..scaled..@ |
| @...map....@ |
| @..........@ |
| @..........@ |
| @@@@@@@@@@@@ |
|              |
|              |
|              |
`--------------'

即对包含的布局应用缩放,但让它绘制“溢出”,而不是剪裁它。

有没有简单的方法可以做到这一点?

【问题讨论】:

  • 这个问题的原标题是“Don't clip a scaled view”,因为我想禁用对缩放视图的裁剪(即不裁剪缩放视图)。新标题对这个问题没有意义。
  • 你玩过ImageView's ScaleType吗?设置这些可能会达到您想要的效果。

标签: android view drawing


【解决方案1】:

This answer 有我需要的东西:只需在外部容器(FrameLayout)上设置setClipChildren(false)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 2014-11-12
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多