Android绘图方法运行缓慢

标签 android multithreading drawing android-canvas

大家好! 我正在尝试从 C# XNA 4.0 转换为 Java 中的 Java Android 开发。首先,我不得不说微软在其移动平台的游戏开发方面做得非常出色。遗憾的是,全世界大约有 20 个人实际上拥有一部 Win Mob 7.* 手机...
在 XNA 中进行开发真的很容易理解,一切都为您完成。 但我想将我的应用程序提供给人们,而不仅仅是 Bill 的 friend 或任何拥有那几部 WM 手机的人...

问题来了…… 我什至不能画一个!位图以令人满意的速度。 我浏览了这本书:

(www.apress.com/9781430230427) Mario Zechner 的《开始 Android 游戏》

所以我认为它不会那么糟糕 - 实际上是绘画。但, ... 我尝试了不同的绘图风格……一种来自书中(将 Screen 类呈现给 RenderView),然后是本教程中的方法 http://www.edu4java.com/androidgame/androidgame3.html然后是最简单的 http://mikeyhogarth.wordpress.com/2010/10/09/how-to-develop-pong-for-android/与原始人打乒乓球。

我不明白,为什么即使是绘制基元和移动 3 个基元对象也会这么慢。

我试着移动 1!位图(来自 edu4java 教程)并且它不能不断移动。 即使我应用 sleep() 方法暂停 Thread 并以 10(或 20(或 30))FPS 重新渲染,它仍然很糟糕。 我在模拟器(比微软的差很多)和真实设备(Wildfire S)中试过了

好吧,好吧,Wildfire S 不是有史以来最快的 Android,但画一个!位图不可能那么硬核。

而且我知道我必须有一个新的 Thread 来绘图,我必须通过 SurfaceView 来完成,以绘制到 Canvas 等。

我在互联网上找不到任何对我有帮助的东西。 我希望这可能是有史以来最简单的答案,而且我会看起来像互联网历史上最伟大的菜鸟,但我会忍受...

有没有人知道如何做得更好?

(我没有使用 OpenGL EP,因为我只对简单的 2D 游戏感兴趣(目前))

谢谢你的阅读。

额尔汗

最佳答案

这可能有助于提高性能:如果您在高 API 级别上构建,您应该能够在 list 中打开硬件加速。它使用简单,应该会让事情变得更顺利。不过,诀窍是在需要时启用它,并在没有密集发生时禁用它。 http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html

关于Android绘图方法运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8758904/

相关文章:

android - 在 Android 操作系统中将 JPEG/PNG 图像转换为 TIFF 图像格式

java - 在 Java 中绘制带尖角的带边框路径

multithreading - Winsock send() 阻止服务器?

IOS:CGRect 是对的,但 UIImage 翻转了

c# 在面板上绘图并滚动结果

android - SurfaceTexture 已被废弃

java - Android:我对如何获得正确的上下文来查找我的 View 感到困惑

java - 选择背景音乐何时停止

java - 增加线程数会降低 java 的整体性能吗?

java - 为什么这段代码的结果是不确定的?