Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在surfaceview上设置2D图形动画的最简单方法是什么?_Android - Fatal编程技术网

Android 在surfaceview上设置2D图形动画的最简单方法是什么?

Android 在surfaceview上设置2D图形动画的最简单方法是什么?,android,Android,目前,我有一个卡通角色,几乎占据了surfaceview的全屏,我的小应用程序只是在ontouch事件中在不同坐标下为这个2D角色制作动画 我现在要做的是每次重新绘制整个角色,这样我需要为每一帧绘制一个特定的图形 我只是想知道是否最好将角色分成不同的部分,例如头、手、腿,并且每当发生ontouch事件时,我只需要重新绘制特定的部分 你认为利与弊是什么?它的CPU密集度低吗?这实际上取决于图像的设置方式。 让一幅图像占据整个屏幕意味着每一帧都必须重新绘制整个屏幕,这是安卓设备应该能够做到的。如果你

目前,我有一个卡通角色,几乎占据了surfaceview的全屏,我的小应用程序只是在ontouch事件中在不同坐标下为这个2D角色制作动画

我现在要做的是每次重新绘制整个角色,这样我需要为每一帧绘制一个特定的图形

我只是想知道是否最好将角色分成不同的部分,例如头、手、腿,并且每当发生ontouch事件时,我只需要重新绘制特定的部分


你认为利与弊是什么?它的CPU密集度低吗?

这实际上取决于图像的设置方式。 让一幅图像占据整个屏幕意味着每一帧都必须重新绘制整个屏幕,这是安卓设备应该能够做到的。如果你把你的角色分成不同的部分,看起来你只需要重画屏幕的一小部分,但是如果你只是重画一部分,那么它仍然会在原来的位置,除非你画在上面,这意味着你可能无论如何都要做一个完整的重画。有时,你可以聪明地计算出屏幕上需要重画的区域,然后只重画那些区域,但这会变得非常复杂。
另一个值得思考的问题是内存使用,如果你的内存中有大量的全屏图像,一些手机可能没有足够的可用内存,可能会崩溃。通过将图像分割成小部分,您应该可以减少出现这种情况的可能性。

感谢Skorulis的评论,您是对的,这些都是我现在正在努力解决的问题。就我个人而言,我认为最简单的方法是使用一幅图像并重新绘制整个屏幕,只是不确定图像数量增加时是否会出现任何性能下降……我认为,除非您每帧多次重新绘制屏幕,否则不应出现任何性能下降。如果你期望有很多图像,我会更担心记忆。请记住,即使您的PNG很小,它们也会在加载时膨胀为位图。