带有叠加层的Android可缩放/可滚动ImageView是怎样的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (60)

我想显示图像(包括滚动和缩放功能)。另外,我需要为图片动态添加一些叠加层。叠加层与图像内的内容有关系。

  • 如果用户滚动,叠加层也应该移动
  • 如果用户缩放,则不应缩放叠加层,而应保持与图像的相对位置

换句话说:我想用一些标记来实现一个Map,但是我提供了我自己的地图材质。

我的主要问题是:我怎么能做到这一点?

我到目前为止所尝试过的

  • 我试图在WebView中实现它,因为它提供了基本的缩放和缩放功能。然而,我没有成功添加覆盖而没有使用Javascript和HTML(我认为这不是一个解决问题的非常方便的方法)
  • 有一些项目(即TouchImageView)正在实现滚动/缩放功能,但是从我的角度来看,它们更难以添加自己的叠加功能。

问题

有没有简单的解决方案或方法来解决我的问题?

提问于
用户回答回答于

我认为这可以帮助你 。

它具有自动滚动图像并缩放图像当您单击它时。

用户回答回答于

我建议扩展View类和覆盖onDraw方法。

你可能会有一个像下面这样的onDraw方法:

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.save();
    canvas.translate(mPosX, mPosY); //position of your actual data
    canvas.scale(mScaleFactor, mScaleFactor); // zoom factor
    map.draw(canvas); //you draw your map here
    canvas.restore(); //go back to saved state 
    //for each marker you have, do the same "save - translate - scale - draw" loop        
}

既然你不需要你的标记是可缩放的,你可能不需要缩放步骤,但你需要正确计算它们的位置。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励