android - 使用 Canvas (surfaceview) 或使用带有平移动画的 View

标签 android android-layout

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

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

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

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

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

最佳答案

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

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

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

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

获得的新坐标简单地绘制它

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

关于android - 使用 Canvas (surfaceview) 或使用带有平移动画的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344374/

相关文章:

java - 由另一个 Activity 打开位于应用程序目录中的文档

android - 如何在一定延迟时间后隐藏ActionBar和NavigationBar?

android - viewpager不同页面的菜单图标不同

java - 尝试获取 ViewGroup 的 Floating-EditText 子级

java - 需要一种可中断的方式来监听工作线程中的 UDP 数据包

android - RxJava 运算符类似于 replay(1, 1, MINUTE),但在 1 分钟后重新订阅

java - WebView 向下滚动时自动向上滚动

android - relativelayout采用全屏,layout_height为="80dp"

安卓布局 : How to implement a UI similar to deck of cards?

android - 如何让AppBar固定在底部