Estoy intentando crear una aplicación con diferentes imágenes de fondo en modo vertical y horizontal en una actividad de pantalla completa, pero siempre utiliza la imagen de fondo del diseño vertical para ambos.
¿Alguien sabe por qué ocurre esto?
Estoy intentando crear una aplicación con diferentes imágenes de fondo en modo vertical y horizontal en una actividad de pantalla completa, pero siempre utiliza la imagen de fondo del diseño vertical para ambos.
¿Alguien sabe por qué ocurre esto?
Tras mucho buscar en Google y combinar resultados de distintos lugares, he encontrado una respuesta que me funciona.
En primer lugar, si el archivo AndroidManifest.xml contiene
android:configChanges="orientation"
Entonces significa que la configuración de tu actividad no se refrescará cuando cambie la orientación, y se te da la oportunidad de manejarlo manualmente vía onLayoutChange, lo que yo elegí hacer de la siguiente manera:
// Use a layout change listener to re-apply the background image if
// orientation changes.
fScreenView.addOnLayoutChangeListener(new View.OnLayoutChangeListener()
{
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft,
int oldTop, int oldRight, int oldBottom) {
int orientation = getResources().getConfiguration().orientation;
if(orientation == Configuration.ORIENTATION_LANDSCAPE) {
fScreenView.setBackgroundResource (R.drawable.sab_logo_text_2);
} else {
fScreenView.setBackgroundResource (R.drawable.sab_logo_text_1);
}
}
});
Si eso no te convence, siempre puedes dejar que Android lo haga por ti, matando y reiniciando tu actividad en el diseño correcto (en mi caso, la orientación correcta) simplemente eliminando
android:configChanges="orientation"
del archivo de manifiesto. En mi caso, el valor por defecto era
android:configChanges="orientation|keyboardHidden|screenSize"
y debe cambiarse por
android:configChanges="keyboardHidden|screenSize"
Tras lo cual, la actividad se cancelará y se reiniciará en la disposición correcta. En mi aplicación, el método en código resultó ser más rápido, así que lo manejé en código.
PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.