Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

316
Views
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 answers
Answer question

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 Report

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 Report

0

Hmm, verifique el manifiesto, agregue esto/modifique

 android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!