2012-05-17 8 views
17

Tengo una carcasa extraña para Android ICS Launcher 4.0.x.Android ICS Launcher 4.0.x no puede mantener la orientación de la pantalla

pre-condición:

  • Un dispositivo ICS con permisos de root

  • Descargar Android ICS Launcher 4.0.3/4 código fuente (para modificar y ejecutar)

Procedimiento:

  1. ir al mercado (Play Store), descarga "Administrador de tareas Go"

  2. pestaña

    abierto widgets en Launcher, encontrar "Mem Optimizar", arrastrar a la pantalla de Inicio (espacio de trabajo)

  3. Descargar e instalar "Fruit Ninja "

  4. Crea el acceso directo" Fruit Ninja "al lado del widget" Mem Optimize "en la pantalla de inicio.

  5. Ejecutar "Fruit Ninja" y mantener el teléfono en el paisaje (lo sostenga en la mano en esta posición, no cambie esto)

  6. En la pantalla del menú de "Fruit Ninja", rebanada "Salir" , seleccione "Sí"

  7. Ahora, de vuelta en la pantalla Lanzador de inicio, toque en "Mem Optimizar" widget de

Resultado actual:

  • Después del paso 7, la pantalla se gira a LANDSCAPE por un momento y vuelve a PORTRAIT.

Expectativa:

  • Después de la etapa 7, la pantalla debe mantenerse en el retrato.

Mis intentos (modificar el código fuente Launcher ICS):

  • Agregar a "Manifest.xml": android:screenOrientation="portrait" => todavía no puede solucionar el problema.

  • Cambie la configuración de los controles, android:configChanges="orientation|screenSize" => todavía no se puede solucionar el problema.

  • Uso: setRequestedScreenOrientation(PORTRAIT) => Todavía no se puede arreglar el problema.

Lo que he intentado funcionó en Android 2.x; sin embargo, de 4.0.3+, de alguna manera no está funcionando como se esperaba. ¿Alguien tiene alguna idea de esto?

+4

¿podemos tener una demostración en video de este defecto? – Ronnie

+0

¿En qué manifiesto agregaste android: screenOrientation? ¿Puedes copiar el fragmento? – Warpzit

Respuesta

0

El iniciador ICS de stock tiene algunos lugares donde establecerá la orientación a no especificada.Simplemente busque Launcher.java para setRequestedOrientation, pero específicamente está en compilaciones "eng" o tabletas. Lo hace en onCreate pero también después de arrastrar/soltar desde appscustomize.

De onCreate de Launcher.java:

// On large interfaces, we want the screen to auto-rotate based on the current orientation 
if (LauncherApplication.isScreenLarge() || Build.TYPE.contentEquals("eng")) { 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 
} 
+0

hola Kevin, mucho tiempo sin verte! Es cierto que algún lugar en el código ya establece la orientación, pero de hecho, ya eliminé esos códigos, o establecí la orientación en 'PORTRAIT', todavía no funciona. Todavía estoy investigando frameworks para encontrar razones por las que funciona. GB 2.x pero no en ICS 4.x –

1

El problema no está en el Launcher. El problema es que una sola configuración (y que incluye la orientación) se comparte entre todas las actividades en el teléfono.

Por lo tanto, si tiene una actividad que establece la orientación en Landspace, p. Ej. Cámara (este es un ejemplo clásico en el que trabajo), esto "hará" que todas las demás actividades estén también en el paisaje, porque como dije, la información es única en el sistema y se comparte entre todos.

Esto ocurre desde el comienzo de Android aunque a veces no lo notarás porque los cambios son bastante rápidos.

Para comprobar lo que estoy diciendo haz lo siguiente. Escriba una actividad con un tema de diálogo como @android:style/Theme.Holo.Dialog, por lo que no cubrirá toda la pantalla y aún podrá ver la actividad que estaba por debajo. Esa actividad debe tener una orientación fija. Digamos que lo configuraste en paisaje. Luego, use am start on Android shell para poder iniciar la actividad que acaba de crear además de cualquier otra actividad. Verá que no importa la orientación que tenga la actividad anterior, tan pronto como lance la actividad de prueba, la actividad anterior asumirá la misma orientación que su actividad de prueba. Cuando respondes, la actividad anterior restablecerá la orientación. Pero a veces puede tomar un tiempo, entonces ves cosas como tu resultado actual.

Cuestiones relacionadas