Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

312
Vistas
onConfigurationChanged no llamado para 180 y 270 grados

Enfrenté un problema extraño (o tal vez un comportamiento inesperado) en mi dispositivo Android.

El problema es que estoy escuchando cambios de configuración en mi DialogFragment como este:

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Do something secret here :) }

android:configChanges a la actividad que es responsable de mostrar el fragmento de diálogo

 <activity android:name=".SecretActivity" android:configChanges="orientation|screenSize" android:windowSoftInputMode="adjustResize" />

y, de hecho, recibo devoluciones de llamada del sistema cuando estoy girando el dispositivo, pero no en todos los casos. Como puede ver en la imagen onConfigurationChanged( ) se llama solo cuando estoy girando 90 grados, y también 360, en otros casos no se llama.

¿Es este un comportamiento esperado? En caso afirmativo, ¿cómo puedo detectar todas las rotaciones (90, 180, 270, 360)?

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si tiene una actividad con una orientación de pantalla no especificada, los dispositivos generalmente ignoran la rotación de 180° y solo admiten una dirección horizontal.

Para admitir todas las direcciones, agregue un atributoscreenOrientation explícito a su entrada de manifiesto de actividad: user o sensor , dependiendo de si desea admitir el bloqueo de orientación del dispositivo por parte del usuario o no.

over 4 years ago · Santiago Trujillo Denunciar

0

OrientationEventlistener no funcionará cuando el dispositivo no esté girando o moviéndose.

Encuentro que el oyente de pantalla es una mejor manera de detectar el cambio.

 DisplayManager.DisplayListener mDisplayListener = new DisplayManager.DisplayListener() { @Override public void onDisplayAdded(int displayId) { android.util.Log.i(TAG, "Display #" + displayId + " added."); } @Override public void onDisplayChanged(int displayId) { android.util.Log.i(TAG, "Display #" + displayId + " changed."); } @Override public void onDisplayRemoved(int displayId) { android.util.Log.i(TAG, "Display #" + displayId + " removed."); } }; DisplayManager displayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE); displayManager.registerDisplayListener(mDisplayListener, UIThreadHandler);

onDisplayChanged se activa solo exactamente cuando cambia getRotation(). OrientationEventListener, por otro lado, se activa constantemente en tiempo real e incluso antes de que cambie getRotation(), lo que genera valores de rotación de pantalla completamente incorrectos cuando se realiza un giro de 180° desde una perspectiva.

over 4 years ago · Santiago Trujillo Denunciar

0

Hmm, verifique el manifiesto, agregue esto/modifique

 android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda