2011-07-04 12 views
11

Es fácil encontrar muchos artículos sobre la implementación de Live Wallpapers para principiantes, que aborda preguntas importantes relacionadas con Superficies, etc.prácticas de Android Live Wallpaper para el rendimiento y el ahorro de batería?

Pero, ¿y el desarrollo profesional de Live Wallpapers? ¿Cuáles son las mejores prácticas para estructurar el código de la manera correcta, para garantizar buen rendimiento, bajo consumo de energía (para ahorrar energía de la batería) y se adapta mejor a los diferentes dispositivos?

Si es posible, algunas muestras de código que cubran estos problemas serían geniales.

Respuesta

13

Consumo de energía ...
1) Lo más importante, con diferencia, es que su fondo de pantalla debe apagarse cuando no esté visible. El ejemplo de cubo maneja esto correctamente, eliminando devoluciones de llamada ejecutables en onDestroy(), onSurfaceDestroyed() y onVisibilityChanged() (cuando es visible == falso).
2) Más allá de eso, el mayor determinante del consumo de energía será su velocidad de cuadros. Una animación de 24 fps consumirá mucho más jugo que un reloj que simplemente se actualiza a 1 fps para hacer que su segundo toque de barrido marque. No hay forma de evitar esto, excepto educar al usuario, de modo que las expectativas sean razonables. Un juego de acción matará a tu batería ya sea una aplicación o un fondo de pantalla en vivo.

Rendimiento ...
Dibujar en un lienzo tiene el beneficio de la simplicidad, pero para un fondo de pantalla muy sofisticado necesitarás usar OpenGL. Hay GLWallpaperService y AndEngine. Los fondos de pantalla están preparados para usar RenderScript (puede que le resulte útil buscar este código dentro del árbol de fuentes de Android, mucho más sofisticado que el ejemplo de cubo en el SDK). Y se habló de ampliar libGDX para manejar el fondo de pantalla.

Best Fit ...
Bueno, es como el resto de Android: necesita diseñar su obra de arte en términos de proporciones escalables, consultar el dispositivo y ajustar en consecuencia. Para un fondo de pantalla simple, generalmente es suficiente para escalar su obra de arte en onSurfaceChanged(), donde se le da el ancho y la altura como parámetros. En algunos casos, es posible que desee examinar las DisplayMetrics completas.

Cuestiones relacionadas