首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有覆盖功能的安卓可缩放/滚动ImageView

具有覆盖功能的安卓可缩放/滚动ImageView
EN

Stack Overflow用户
提问于 2012-12-23 00:18:28
回答 5查看 3.5K关注 0票数 18

我想显示一个图像(包括滚动和缩放功能)。此外,我需要动态添加一些覆盖到图像。覆盖图与图像中的内容存在关系。

  • 如果用户滚动,覆盖图也应该移动
  • 如果用户缩放,覆盖图不应缩放,而是保持其相对于图像

的相对位置

换句话说:我想实现一个带有一些标记的Map,但我提供了我自己的地图材料。

我的主要问题是:我如何做到这一点?

到目前为止我已经尝试过的

  • 我尝试在WebView中实现它,因为它提供了基本的缩放和缩放功能。然而,如果不使用Javascript和HTML语言,我就无法成功地添加覆盖图(我认为解决problem)
  • There的方法不是一个非常方便的方法是实现滚动/缩放功能的项目(即TouchImageView),但从我的角度来看,它们使得添加自己的覆盖图功能变得更加困难。

问题

对于我的问题,有没有简单的解决方案或方法?

在Android运行时添加和移动视图的正确方式是什么?(通常,我会使用基本布局并调整页边距-这是最佳实践吗?)

请谁告诉我怎么走好吗?

最小空气污染指数水平: 10

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-01-07 21:40:07

经过很长一段时间,我找到了我的解决方案的确切答案:TileView

设置地图视图:

@Override
protected void onCreate( Bundle savedInstanceState ) {
  super.onCreate( savedInstanceState );
  TileView tileView = new TileView( this );
  tileView.setSize( 2000, 3000 );  // the original size of the untiled image
  tileView.addDetailLevel( 1f, "tile-%d-%d.png");
  setContentView( tileView );
}

添加标记的

tileView.addMarker( someView, 250, 500, -0.5f, -1.0f ); 

文档中的代码。

票数 1
EN

Stack Overflow用户

发布于 2013-01-02 14:09:21

我建议扩展View类并覆盖onDraw方法。看一看Canvas API

您可能会有一个如下所示的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        
}

因为你不需要你的标记是可缩放的,你可能不需要缩放步长,但是你需要正确地计算它们的位置。

根据你的对象数量等,你可能需要一种更优化的方式来绘制你的标记(例如,只重新绘制更改过的矩形区域)。请参阅View.invalidate(Rect)

票数 3
EN

Stack Overflow用户

发布于 2012-12-23 01:40:19

我想这个可以帮到你

请参阅此项目Link

它有一个自动滚动的图像和缩放图像时,你点击它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14004424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档