Forzar una pantalla completa Actividad para volver a medir / volver a dibujar en el curriculum vitae?

Editado para añadir más detalles: (originalmente pidió hace casi dos meses … todavía no han encontrado una solución)

Tengo una actividad con una vista algo complicada. No es complicado en un sentido técnico … sólo hay mucho que hacer. Todas las actividades de esta aplicación en particular se establecen en FullScreen NoTitleBar y están todas configuradas en orientación horizontal. Me di cuenta temprano en el desarrollo cuando la aplicación se oculta y luego se reanuda, hubo una tendencia poco frecuente para el diseño de deslizar hacia abajo verticalmente como si para dar cabida a la barra de título y la barra de estado.

Más tarde en desarrollo, la aplicación ahora llama a diversas intenciones externas. Observo ahora que hay más tendencia a hacer este mismo cambio al reanudar desde una intención despedida manejada externamente (como crear una intención de "elegir" o escoger una imagen). Soy capaz de reproducirlo de manera inconsistente utilizando exactamente los mismos pasos … a veces sucede a veces no lo hace. Parece que hay una condición de carrera entre varias fases de medición y disposición. Supongo que uno de estos pasos que el sistema está haciendo para mí es la comprobación de fullscreen y notitlebar, y hacer el cambio necesario. Esto probablemente está ocurriendo tarde en algunos casos.

Pongo un montón de registro, y llama a invalidate (), requestLayout (), etc tratando de tal vez coger la condición de carrera, pero el problema parece externo a mis diseños. Los valores top () e bottom () de mi diseño raíz siempre son 0 y la altura de mi pantalla, respectivamente, incluso cuando estoy registrando esto mientras el problema está ocurriendo.

¿Existe algún otro método de la ventana, WindowManager o cualquier otro objeto relacionado con la vista del sistema que puedo forzar una remesa completa, volver a dibujar, revisar las banderas actuales de estilo / tema?

8 Solutions collect form web for “Forzar una pantalla completa Actividad para volver a medir / volver a dibujar en el curriculum vitae?”

Tuve exactamente el mismo problema y también probé varios aproches (como los mencionados anteriormente). Ninguno de ellos funcionó. Sin embargo, encontré la siguiente solución:

protected void onResume() { super.onResume(); handler.postDelayed(new Runnable() { public void run() { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } }, 1000); } 

La vista hará un breve parpadeo en este procedimiento, pero al menos no se queda cortado. Todavía hay que encontrar una solución limpia. Sin embargo esto apoya su tesis de que hay algún tipo de problema de tiempo o raza.

¿Has probado esto en onResume ()?

 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN ); 

En mi caso este comportamiento fue provocado por el reanudación de la pantalla de bloqueo. No tengo idea de por qué, pero después de añadir la función vacía sobrecargada se arregló (pero lo probé sólo en mi HTC Wilfire). Puede ser un insecto diferente.

 @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); /* Workaround a probable Android bug with fullscreen activities: * on resume status bar hides and black margin stays, * reproducible half of the time when coming back from lock screen * (tested on HTC Wildfire) * No idea why but this empty overload method fixed it. */ } 

No estoy seguro de si funcionará, pero es posible que desee probar esto en ese método:

 this.getWindow().getDecorView().invalidate(); 

Si eso no funciona por sí mismo, intenta agregar al método onDraw (Canvas) las instrucciones necesarias para eliminar la barra de título y hacer ajustes similares que tu actividad podría estar haciendo en el inicio.

Espero que ayude.

Hey Rich, tuve el mismo problema. Lo arreglé estableciendo estas opciones en el manifiesto XML (parece que la interfaz de la API es un poco buggy). Detalles aquí: http://thedevelopersinfo.wordpress.com/2009/10/21/making-an-fullscreen-activity/

Opticron

¿Ha establecido FullScreen NoTitleBar en su manifiesto o en código? Si utiliza código, puede ser que se está prestando antes de que su código se inicie?

 <application android:label="@string/app_name" android:icon="@drawable/icon" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 

Entiendo que puede definir temas sobre actividades individuales en una aplicación. ¿Vos si? Y ¿entran en conflicto con la configuración de la aplicación?

He encontrado una solución a esto:

  @Override protected void onResume() { Log.e("", "onResume"); super.onResume(); //this is a simple Splash with "Game paused" Text inside! in my main.xml final LinearLayout gamePause_text = (LinearLayout) findViewById(R.id.gamePause_text); OnGlobalLayoutListener asdf = new OnGlobalLayoutListener(){ public void onGlobalLayout() { Log.e("", "onGlobalLayout"); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); gameSurface.onResume(); //OpenGL Surface onResume(); gamePause_text.getViewTreeObserver().removeGlobalOnLayoutListener(this); }; gamePause_text.getViewTreeObserver().addOnGlobalLayoutListener(asdf); } 

Lo arreglé fijando el tema para la aplicación más bien que para las actividades individuales.

 <application android:icon="@drawable/icon" android:installLocation="auto" android:label="@string/app_name" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" > 

Esto funcionó para mí. Este problema se produce si la siguiente actividad que iniciamos no es una actividad de pantalla completa y la actividad actual es una actividad de pantalla completa.

  • ¿Cómo lanzar draw9patch y es absolutamente necesario reescalar imágenes?
  • Establecer estilo de botón mediante programación
  • Android Wear: ¿Hay alguna razón para utilizar un objeto Time en lugar de un objeto Calendar?
  • Descripción de las pérdidas de memoria en la aplicación de Android
  • Cómo hacer PDF en Android
  • ¿Por qué mi aplicación Android salta los marcos cuando se llama a Thread.sleep?
  • ¿Conversión de json string a objeto java?
  • Cómo hacer que mi sistema de solicitudes
  • Uso de la biblioteca Java en el proyecto iOS
  • Envío de un mensaje sencillo de Servicio a Actividad
  • ¿Cómo utilizar LibSVM en Java?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.