11

Tengo un problema de orientación con un Live Wallpaper que escribí. Básicamente, el lienzo rotará dependiendo de la aplicación que se abra arriba. Probé esto y me di cuenta de que el método onSurfaceChanged() se activa cuando regreso a la pantalla de inicio desde una aplicación abierta anteriormente cuya orientación se modificó.¿Prevenir cambio de orientación de Live Wallpaper cuando se abre una aplicación y se cambia la orientación?

Supongo que una pregunta mejor sería, ¿por qué cambia mi Superficie de fondo de pantalla animado cuando se abre una aplicación y se cambia su orientación? ¿Hay alguna manera de evitar que mi orientación de Live Wallpaper cambie constantemente? Gracias, espero que tenga sentido?

+0

¿Está definiendo una orientación en el manifiesto? O incluso programáticamente? De lo contrario, las respuestas a esta pregunta (http://stackoverflow.com/q/2150287/404469) deberían ser útiles. – gary

+0

No se utiliza ninguna actividad (además de la actividad de configuración) en un Live Wallpaper. Un LWP extiende WallpaperService donde crea una instancia de la clase Engine dentro de la función onCreateEngine(). – worked

+0

¿Podemos obtener más información? ¿Cuáles son algunas de las aplicaciones que están causando esto? ¿La orientación es permanente o simplemente temporal hasta que se está redibujando la pantalla principal? Algunas aplicaciones, como la cámara integrada, obligan a la pantalla a cambiar de orientación, pero estos cambios se deshacen cuando se completa la aplicación. –

Respuesta

1

La aplicación de Android reinicia la actividad cuando cambia la orientación. Puede utilizar

  1. android: configChanges en su manifiesto. La actividad se cierra y se reinicia de forma predeterminada, cuando se produce un cambio de configuración en el tiempo de ejecución, pero declarar una configuración con este atributo evitará que la actividad se reinicie. En cambio, la actividad sigue ejecutándose y se llama al método .
  2. uso androide: screenOrientatin = "retrato" o "paisaje" que obligará a la aplicación se ejecute en el modo que se especifique. Sin embargo, no evitará que la actividad se cierre y se reinicie.
+0

hola, ¿por qué se debe reiniciar la actividad y cómo se puede evitar eso, en particular, lo necesito en el contexto de los fondos de pantalla en vivo? – Maysam

1

Puede manejar la orientación de la pantalla desde android.service.wallpaper.WallpaperService. motor clase con el siguiente método:

public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) 

... sólo controlar el evento en consecuencia.

Usted NO PUEDE añadir androide: configChanges ni androide: screenOrientation a un WallpaperService! (que está utilizando al crear un fondo de pantalla animado)

Lo habría agregado como comentario a la respuesta de "Anirudha", pero no tengo la reputación suficiente para hacerlo.

Cuestiones relacionadas