2011-06-26 20 views
15

Soy un desarrollador de Android bastante "nuevo", y me gustaría que uno de mis primeros proyectos sea un fondo de pantalla en vivo, sin embargo, tengo conflictos sobre si debería centrarme en Canvas o OpenGL para ello. Al ser nuevo en este Sé que debería dominar lienzo primero ya que es más fácil de usar, pero yo prefiero aprender de proyectos del mundo real que tengo un interés en, incluso si es un poco hacia atrás a veces.Fondos de Android Live - OpenGL vs Canvas

he utilizado antes en formas muy básicas, y entender los conceptos generales a ellos, pero no estoy seguro de cómo se transfieren a la esfera de fondos de pantalla en vivo. Calculo que no se requiere la velocidad de soplado completo de OpenGL en un fondo de pantalla en vivo, ya que ejecutarlo en el máximo de FPS que acaba de descargar la batería más de lo necesario, pero al mismo tiempo me preocupa que el uso de lienzo causaría retardos y tartamudea cuando hace cosas como cambiar las pantallas de inicio.

Me he estado inclinando hacia el uso de OpenGL ES 2.0, tanto para mantener el rendimiento óptimo y porque mis ideas iniciales para el fondo de pantalla implican muchas capas que no estoy seguro de que Canvas sea capaz, pero me gustaría tener una experiencia opinión desarrolladores de si o no todo el trabajo extra que implica el uso de OpenGL (especialmente en relación a vivir fondos de pantalla, por lo que he leído) vale la pena.

Respuesta

9

Si usted puede conseguir lejos con sólo dibujo a un lienzo (por ejemplo, en el cubo ejemplo SDK), que es mucho menos trabajo. Debido a la simplicidad de la animación (sin mapas de bits), el cubo puede lograr una velocidad de cuadros alta sin dificultad.

Si desea utilizar OpenGL, deberá usar un paquete complementario, como GLWallpaperService, AndEngine o RenderScript.

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

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

Examinar el código fuente de Android para ver cómo se implementan los fondos de pantalla de acciones (por ejemplo, la hierba, Galaxy) usando RenderScript. Este enlace puede trabajo, pero no hay garantías: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.1.1_r1/com/android/wallpaper/ (a continuación, desplácese hacia abajo para los fondos de pantalla)

Moonblink ha puesto fin a su proyecto, pero si está realmente interesado, puede intentar la investigación de su trabajo (sustrato) a partir de aquí: http://code.google.com/p/moonblink/source/browse/wiki/Setup.wiki

+0

Los dos últimos enlaces parecen estar rotos ahora, ya que estoy recibiendo 404 –

+0

@OmarRehman. Lo siento. Los enlaces son problemáticos. –

6

Terminé utilizando OpenGL como la mitad del proyecto, el dibujo del lienzo resultó ser demasiado lento para lo que estaba tratando de lograr. Usar OpenGL causó un impulso de rendimiento masivo. Desafortunadamente tuve que refactorizar mi código, por lo que recomendaría usar OpenGL desde el principio. El renderizado sucio es compatible con OpenGL, así como la estructura del servicio de fondo de pantalla no depende de la forma en que renderizas las cosas, por lo que aún podrías crear un fondo de pantalla que no consuma la batería. En realidad, un fondo de pantalla bien programado no se procesa cuando está oculto. Como los fondos de pantalla enviados con Android no siguen ese patrón, los fondos de pantalla en vivo ahora tienen el mal nombre de ser lechones de batería. Realmente una pena ...