immersive full app android fullscreen android-4.4-kitkat android-fullscreen android-4.2-jelly-bean

android - immersive - full screen app



Pantalla completa inmersiva debajo de 4.4 (4)

Tengo una aplicación que quiero ejecutar en pantalla completa. Si tengo un dispositivo con 4.4 KitKat, es fácil configurar SYSTEM_UI_FLAG_IMMERSIVE para que la aplicación pase a pantalla completa. Sin embargo, si tengo un dispositivo con una API inferior a 4.4. No tengo idea de cómo hacerlo en pantalla completa como si se tratara de un KitKat con soporte Immersive.

Puedo configurar la Pantalla completa y ocultar las banderas de navegación para hacer que la aplicación se muestre en pantalla completa, pero tan pronto como se hace clic en la pantalla, estas banderas se restablecen y ahora muestran la barra de navegación y la barra de estado.

¿Existe alguna solución donde pueda "simular" el modo inmersivo en dispositivos con JB y posiblemente con ICS (no necesariamente a continuación)?

Tengo un método hideSystemUI que se ejecuta cuando OnSystemUiVisibilityChangeListener activa este aspecto en este momento.

private void hideSystemUI() { actionBar.hide(); isMenuVisible = false; if (currentapiVersion >= android.os.Build.VERSION_CODES.KITKAT){ mDecorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE); } else{ mDecorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); } }

¿Qué cambios debo hacer para que la aplicación pase a pantalla completa y no muestre la barra de navegación ni la barra de estado en cada clic, sino en la diapositiva desde arriba o desde abajo?


Esto es lo más cerca que vas a obtener:

if (Build.VERSION.SDK_INT >= 19) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } else { if (Build.VERSION.SDK_INT > 10) { findViewById(android.R.id.content).setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); } }

Y no admita dispositivos con un SDK de menos de 10. Esos jokers necesitan tener un Android moderno de todos modos.


Hay dos métodos para el modo inmersivo.
Para que sea inmersivo, cambia la línea.

View.SYSTEM_UI_FLAG_IMMERSIVE

Por esta linea-

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY


Me había enfrentado a la misma situación y, después de algunas investigaciones, descubrí que no es posible por debajo de 4.4 debido a problemas de seguridad, por lo que las API antiguas no permiten ocultar la barra de navegación de la forma que usted desea. Aunque desde la API 4.1 su uso de SYSTEM_UI_FLAG_LAYOUT_STABLE marca su diseño, no cambiará de tamaño y se inflará detrás de la barra de navegación, pero debe asegurarse de que ninguno de sus componentes importantes de la interfaz de usuario esté cubierto por ella.

https://developer.android.com/training/system-ui/immersive.html Espero que esto ayude ... :)


simplemente copie el código de abajo en value / style.xml.

<resources> <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> </style>