我是 Android 新手,但我有一些 Java 知识,并且我已经开始阅读 Android 文档和一些书籍,但我才刚刚开始。但即使我阅读了更多内容,如果没有 Android 编程的实际经验,也很难知道推荐的方法来完成我想做的事情......
我需要的是某种表面,我可以在其中绘画/绘制/任何大量图像,可能是具有透明度的PNG。我需要能够使用所有这些图像平移和缩放该表面。我还需要能够单击其中任何图像并知道单击了哪一个。
我一直在阅读 One Finger Zoom Tutorial来自索尼爱立信开发人员,它看起来对于我想做的事情来说是一个很好的解决方案。但我有点困惑,因为该代码适用于单个位图图像,我需要在某些表面/ Canvas 上绘制很多位图图像。
我正在考虑两种方法来实现这一目标:
- 以某种方式调整代码,以便我可以在
Canvas
上绘制每个图像(来自onDraw()
),但这就是我感到困惑的地方,我不知道如何我可以完成这个任务吗,因为当前的代码对于单个图像来说很简单,没有太多需要解释的地方。 - 将我的所有图像叠加到一个位图中,并使用该位图作为
Canvas
的背景(再次来自onDraw()
)。我可以将 Canvas 中的这些图像位置保存到数组或其他内容中,并使用它作为引用来查看用户是否单击了其中的任何一个。我想这样可能吗?
所以,实际上,这就是我要问的:
- 如果上述第一种方法更好,请帮助我了解如何实现这样的目标。
- 如果第二个更好,您能否给我一些提示,如何叠加所有这些图像、保存它们的位置并通过触摸事件检测它们?
- 如果有更好的方法来处理这一切,我很想听听。
这是一个非常基本的游戏,我正在考虑开发,在你这样做之前,OpenGL 对于我的需要来说太多了,我想一次迈出一步。首先学习 Android 编程,有一天学习 OpenGL。
最佳答案
为什么不看看是否可以使用(或扩展)与 MapView 一起使用的 ItemizedOverlay。 ItemizedOverlay 使您能够添加“标记”,通常是 PNG 绘图,它们都可以不同。它们响应触摸事件或手势,并根据屏幕位置进行布局(通过 MapProjection 转换为 map 坐标)。 (我在我正在开发的 map 应用程序中使用它们)。布局有自己的draw()方法,它确实需要MapView,但您可以将其设置为空,或者可能禁用任何 map 图层的显示并显示其他类型的背景 - 这里需要一些实验。
关于android - 如何使用平移/缩放在某种表面上绘制大量图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4445870/