禁用剪裁缩放视图?

时间:2018-01-26 17:13:51

标签: android view drawing

我正在创建一个游戏,其中包含一些地图(图像),顶部有一些功能(其他图像)。到目前为止,我正在使用子类视图并使用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....@ |
| @..........@ |
| @..........@ |
| @@@@@@@@@@@@ |
|              |
|              |
|              |
`--------------'

即将缩放应用于包含布局,但使其绘制“溢出”,而不是剪辑它。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:0)

This answer有我需要的东西:只需在外部容器(FrameLayout)上设置CREATE TABLE `bitcoinprice` ( `list_id` varchar(7) CHARACTER SET utf8 DEFAULT NULL, `list_name` varchar(7) CHARACTER SET utf8 DEFAULT NULL, `list_symbol` varchar(3) CHARACTER SET utf8 DEFAULT NULL, `list_rank` int(11) DEFAULT NULL, `list_price_usd` decimal(7,6) DEFAULT NULL, `list_price_btc` decimal(9,8) DEFAULT NULL, `list_24h_volume_usd` decimal(10,1) DEFAULT NULL, `list_market_cap_usd` decimal(12,1) DEFAULT NULL, `list_available_supply` decimal(12,1) DEFAULT NULL, `list_total_supply` bigint(20) DEFAULT NULL, `list_max_supply` int(11) DEFAULT NULL, `list_percent_change_1h` decimal(2,1) DEFAULT NULL, `list_percent_change_24h` decimal(3,2) DEFAULT NULL, `list_percent_change_7d` decimal(3,1) DEFAULT NULL, `list_last_updated` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;