Android View与SurfaceView相比,GLSurfaceView适用于具有Zoomable用户界面的2D绘图应用

Han*_*ner 9 android opengl-es surfaceview glsurfaceview android-view

我打算用可缩放的用户界面编写一个2D绘图应用程序.使用该应用程序,用户应该能够转换(平移和缩放)绘制的路径(当然还有UI).我假设同时会有多达500个路径.现在,我想知道从哪个视图开始(View,SurfaceView或GLSurfaceView)以提供可接受的性能.我阅读了几篇帖子[1-6],包括曾经在Android上的开发者指南,我仍然不能100%确定使用哪个视图.

根据Google I/O 2009(http://youtu.be/U4Bk5rmIpic?t=45m10s)上的演示文稿和自己的体验,在处理100多个路径时,canvas(View和SurfaceView)似乎没有足够快的性能.

有没有人看到使用画布实现应用程序的可能性或OpenGL的方式去?

[1] Android:在SurfaceView和OpenGL之间做出决定(GLSurfaceView)

[2] SurfaceView或GLSurfaceview?

[3] SurfaceView和View之间的区别?

[4] http://pierrchen.blogspot.jp/2014/03/anroid-graphics-surfaceview-all-you.html

[5] SurfaceView和ImageView之间的区别

[6] Android中SurfaceView和GLSurfaceView之间的区别

fad*_*den 3

由于性能问题,您将需要使用硬件渲染。显示器变得越来越密集,因此软件中触摸每个像素的速度越来越慢。

如果您想使用 Canvas 进行绘制,则必须渲染到自定义视图,并启用硬件加速。Surface 上的画布渲染始终通过软件完成。

SurfaceView 和 GLSurfaceView 几乎是同一件事;GLSurfaceView 只是有一些辅助函数,可以为您处理一些内务工作。您可以使用GLES在SurfaceView和TextureView上进行渲染。Grafika中有多个这样的例子。

如果您想了解幕后情况,请参阅系统级图形架构文档。

您可能需要考虑使用开源 2D 游戏引擎。它将处理 EGL 设置,应该提供 GLES 字体渲染的代码,等等。