java - 如何构建简单的 Android 应用程序

标签 java android oop opengl-es object

我在 Android 平台上开发的应用程序遇到了组织问题。该应用程序使用传感器作为输入,使用 OpenGL 作为输出。

  • 传统的方法是 比如将项目组织成 我有主要 Activity 的 MVC 类加载一个 OpenGL View 和一个 传感器处理类,然后将 可能注册一些回调或 可能在时钟上做。
  • 草率的替代方案是使用一个实现 GLSurfaceView 和 SensorEventListener 的类,然后将逻辑卸载到其他类中。

假设非常简单的绘图代码和稍微复杂的控制系统代码将尝试以 60 左右的 Hz 刷新。我正在寻找性能、可维护性和易于开发的影响,因此任何和所有输入都是有值(value)的。此外,在 Android 或移动开发方面,我完全是个新手,所以如果您能向我展示第三种替代方案,那也很棒。

最佳答案

有时候,过度计划可能会浪费时间。

不同的游戏使用不同的方法,您需要查看复制岛的开发博客和代码,了解有关如何使用 GLSurfaceView 组织代码的各种提示。 http://replicaisland.net/

我使用你的后一种方法,但它并不像你看起来那么草率。 您实际上不需要在 GLSurfaceView 中使用任何逻辑代码,只需在特定事件发生时调用您的类即可。 (onDraw、onTouch、onKey 等)

不确定这有什么草率的,我在他们适当的类中维护我的逻辑。 例如,在我的 onDrawFrame() 中,我只是执行 MyAreaManager.draw(gl)

MyAreaManager 类将维护它自己的逻辑并知道要绘制什么。

至于时钟,您很可能需要两个线程。一个用于渲染(GLSurfaceView 线程),一个用于以特定逻辑帧速率运行的游戏逻辑。

逻辑框架会简单地改变 Canvas 对象的状态,而绘制框架会尽可能快地绘制它们。

通过这种方式,您可以尽可能快地渲染并仍然保持稳定的逻辑帧速率。

关于java - 如何构建简单的 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3610975/

相关文章:

python - 在多个文件和目录中使用Python OOP时,有助于理解分层继承

java - 使用 SAX 进行 XML 解析 : how to handle html as text within xml-tags

android - Flutter 工作管理器返回 "Worker result FAILURE for Work [ id=XXXXXxXXXXxXXXX tags={ be.tramckrijte.workmanager.BackgroundWorker } ]"

java - Android TextView 长阴影

php - 了解 jdoc :include in Joomla

Java 程序设计布局建议?

java - 为什么我无法在 TestNG 中调试我的代码

java - Liquibase maven 插件未使用类路径属性

java - 匿名内部类性能

android - EditText 的 setText() 在 onTextChanged 方法中不起作用