【问题标题】:Android drawing method running slowAndroid绘图方法运行缓慢
【发布时间】:2012-01-06 13:56:47
【问题描述】:

大家好! 我正在尝试从 C# XNA 4.0 转换为 Java 中的 Java Android dev。首先,我不得不说微软在为他们的移动平台开发游戏方面做得非常好。很遗憾,全世界大约有 20 人实际上拥有一部 Win Mob 7.* 手机...
在 XNA 中开发非常容易理解,一切都为您完成。 但我想将我的应用程序提供给人们,而不仅仅是比尔的朋友或拥有那几部 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/ pong 与原语。

我无法理解,为什么即使是绘制图元和移动 3 个图元对象也会如此缓慢。

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

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

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

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

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

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

感谢您的阅读。

二汗

【问题讨论】:

  • 您需要提供更多细节才能知道哪里出错了。即使是最慢的 Android 手机也可以以超过 30 fps 的速度绘制显示大小的位图。您是否将位图的位深度与显示器的位深度匹配?您是否要求系统将其绘制为完全不透明的?您是否将位图数据保存在位图对象中,而不是从资源中重复读取它?提供一些细节,然后“我们”可以回答您的问题。
  • 请贴代码sn-p,以便我们找出问题所在。

标签: android multithreading drawing android-canvas


【解决方案1】:

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

【讨论】:

  • 要获得更多控制,请在用户与某物交互(如触摸屏幕)时打开它,然后在他们抬起手指时将其关闭。这可以通过在您的代码中关闭和打开它来实现,而不是让它在您的清单中不断运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
相关资源
最近更新 更多