android - 如何使用平移/缩放在某种表面上绘制大量图像?

标签 android image zooming pan

我是 Android 新手,但我有一些 Java 知识,并且我已经开始阅读 Android 文档和一些书籍,但我才刚刚开始。但即使我阅读了更多内容,如果没有 Android 编程的实际经验,也很难知道推荐的方法来完成我想做的事情......

我需要的是某种表面,我可以在其中绘画/绘制/任何大量图像,可能是具有透明度的PNG。我需要能够使用所有这些图像平移和缩放该表面。我还需要能够单击其中任何图像并知道单击了哪一个。

我一直在阅读 One Finger Zoom Tutorial来自索尼爱立信开发人员,它看起来对于我想做的事情来说是一个很好的解决方案。但我有点困惑,因为该代码适用于单个位图图像,我需要在某些表面/ Canvas 上绘制很多位图图像。

我正在考虑两种方法来实现这一目标:

  1. 以某种方式调整代码,以便我可以在 Canvas 上绘制每个图像(来自 onDraw()),但这就是我感到困惑的地方,我不知道如何我可以完成这个任务吗,因为当前的代码对于单个图像来说很简单,没有太多需要解释的地方。
  2. 将我的所有图像叠加到一个位图中,并使用该位图作为 Canvas 的背景(再次来自 onDraw())。我可以将 Canvas 中的这些图像位置保存到数组或其他内容中,并使用它作为引用来查看用户是否单击了其中的任何一个。我想这样可能吗?

所以,实际上,这就是我要问的:

  • 如果上述第一种方法更好,请帮助我了解如何实现这样的目标。
  • 如果第二个更好,您能否给我一些提示,如何叠加所有这些图像、保存它们的位置并通过触摸事件检测它们?
  • 如果有更好的方法来处理这一切,我很想听听。

这是一个非常基本的游戏,我正在考虑开发,在你这样做之前,OpenGL 对于我的需要来说太多了,我想一次迈出一步。首先学习 Android 编程,有一天学习 OpenGL。

最佳答案

为什么不看看是否可以使用(或扩展)与 MapView 一起使用的 ItemizedOverlay。 ItemizedOverlay 使您能够添加“标记”,通常是 PNG 绘图,它们都可以不同。它们响应触摸事件或手势,并根据屏幕位置进行布局(通过 MapProjection 转换为 map 坐标)。 (我在我正在开发的 map 应用程序中使用它们)。布局有自己的draw()方法,它确实需要MapView,但您可以将其设置为空,或者可能禁用任何 map 图层的显示并显示其他类型的背景 - 这里需要一些实验。

关于android - 如何使用平移/缩放在某种表面上绘制大量图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4445870/

相关文章:

javascript - 如何使用 jQuery 或 CSS 缩小整个网站?

image - 如何将条形图.js中的标签更改为图像(图标)

image - xamarin.forms 从图像源获取字节数组

android - 应用程序因使用 ANativeWindow API 而崩溃

Android获取本地日期类型的简称

iphone - UIWebView -- 加载外部网站,以编程方式设置初始缩放比例,并允许用户随后缩放

ios - UIScrollView 中缩放图像数组

java - 应用程序在单击按钮时崩溃,显示尝试调用虚拟方法 'void android.widget.Button.setOnClickListener'

java - 如何在android中的另一个imageview上半重叠imageview

android - 改造:如何修复 "only one http method is allowed. found: get and get"?