Androiddynamic壁纸 – OpenGL与canvas

我是一个相当“新手”的Android开发人员,我希望我的第一个项目之一是一个dynamic壁纸,但是我是否应该专注于Canvas或OpenGL的冲突。 对于这个新手我知道我应该首先掌握Canvas,因为它更容易使用,但是我更喜欢从我感兴趣的真实世界的项目中学习,即使它有时候会稍微向后一点。

我以前用过非常基本的方法,而且我理解了他们的一般概念,但是我不确定他们是如何转移到dynamic壁纸的领域的。 我认为,在dynamic壁纸上不需要OpenGL的全速度,因为在最大FPS下运行它将会超出所需的电量,但是同时我担心使用Canvas会导致滞后当做像改变主屏幕一样的东西时会出现口吃。

我一直倾向于使用OpenGL ES 2.0,以保持性能最佳,因为我最初的壁纸想法涉及很多分层,我不确定Canvas是否有能力,但我想要一个更有经验的开发人员的意见是否或者不是所有使用OpenGL的额外工作(特别是关于dynamic壁纸,从我读过的)都是值得的。

Solutions Collecting From Web of "Androiddynamic壁纸 – OpenGL与canvas"

如果你只能绘制到一个canvas(例如SDK中的多维数据集示例),那么工作就less得多。 由于animation的简单性(无位图),立方体能够毫无困难地实现高帧率。

如果您想使用OpenGL,则需要使用补充包,如GLWallpaperService,AndEngine或RenderScript。

http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers

http://www.andengine.org/forums/tutorials/live-wallpaper-template-t258.html

浏览Android源代码,查看股票壁纸(如Grass,Galaxy)是如何使用RenderScript实现的。 此链接可能工作,但不保证: http : //grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.1.1_r1/com/android/wallpaper/ (然后向下滚动到墙纸)

Moonblink已经停止了他的项目,但是如果你真的很热衷,你可以从这里开始研究他的作品(Substrate): http : //code.google.com/p/moonblink/source/browse/wiki/Setup.wiki

我在项目的一半结束时使用了OpenGL,canvas的绘制对于我试图达到的速度来说太慢了。 使用OpenGL引起了巨大的性能提升。 不幸的是我不得不重构我的代码,所以我会build议从一开始就使用OpenGL。 脏的渲染是由OpenGL支持的,以及墙纸服务的结构不依赖于你渲染的方式,所以你仍然可以创build一个不耗尽电池的墙纸。 实际上,一个编程良好的壁纸在隐藏时不会渲染。 由于Android上发布的壁纸并不遵循这种模式,所以dynamic壁纸现在被称为电池吸盘。 真是一个耻辱..