2

我只是有一个关于您通常如何处理此问题的快速问题。我不确定您是否看过 Paper Toss 游戏或类似的游戏,您将手指放在现有图像上,将其拖动一点(比如说通过拉动图像视图)然后放开,这会使该图像在屏幕上移动。

要做这样的事情,处理此类图形的最佳方法是什么(主要关注图形运动和触摸事件): - 有一个 imageview 和 OnTouchListener 将获取 x/y 并对每个 X/Y 执行 translateAnimation 和然后在解除触摸时在屏幕上对图像进行 translateAnimation

- 或有表面视图并在 Canvas 上绘制图像的位图,并让 OnDraw 方法获取触摸事件的 X/Y 坐标并相应地绘制位图

我总是很困惑该选择哪一个,为什么?(我的目标是 Android 2.3,所以拖放超出了这个范围)

PS:我假设 Canvas 和 surfaceview 总是在一起,如果我错了,请纠正我

4

2 回答 2

1

PS:我假设 Canvas 和 surfaceview 总是在一起,如果我错了,请纠正我

是的,你是对的,他们都走到了一起。

首先在动画(平移、旋转、缩放)中,我们只是在特定时间更改 ImageView 的位置、视图(同时显示动画效果)。然后它会回到原来的位置。

但是在画布中,我们根据它的坐标永久更改 ImageView(我们在这里绘制位图而不是图像视图)。假设您想在手指触摸的地方更改图像,然后使用您从中获得的新坐标简单地绘制它OnTouchEvent()

最后我会说,根据我们的要求,没有什么是最好的。表面和画布主要用于游戏环境。

于 2012-04-27T05:08:45.867 回答
0

任何 gfx 密集型操作,即任何使用 sprite 的操作,都应该在 a SurfaceViewor上完成GLSurfaceView以达到最佳性能。对于动画或非动画的非移动图像/位图,标准View/ViewGroup实现很好。

SDK 示例LunarLander是一个很好的起点。

于 2012-04-27T03:54:36.077 回答