studio programacion móviles libros dialogo desarrollo desarrollar curso crear aprende aplicaciones android dialog transparent android-fullscreen

android - programacion - Crear un diálogo transparente en la parte superior de la actividad



manual de programacion android pdf (2)

Fondo

Estoy tratando de poner una capa en la parte superior de la actividad actual que tendría una explicación de lo que está sucediendo en la pantalla actual, similar a lo que ocurre en contacto + aplicación .

Sé que hay algunas soluciones para esto (como la biblioteca showCase y la biblioteca superToolTips), y también sé que puedo crear una vista y configurarla en la ventana de la actividad, pero necesito poner un conjunto capa de diálogo en la parte superior.

Problema

No importa lo que intento, cada solución no funciona de la manera que necesito para que funcione.

en resumen, lo que necesito es:

  • cuadro de diálogo de pantalla completa.

  • no hay cambios (no visuales ni lógicos) en la barra de acciones, la barra de notificaciones y el contenido de la actividad detrás, lo que significa que todo lo que está detrás del cuadro de diálogo permanece igual, se mostró un momento antes de que se mostrara el diálogo.

  • ser transparente a excepción de las vistas que uso para el diálogo, que debe mostrarse normalmente.

lo que he intentado

Tristemente, siempre obtuve solo una parte de las cosas que necesitaba.

aquí está mi código:

styles.xml:

<style name="full_screen_dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> </style>

MainActivity.java:

... final Dialog dialog = new Dialog(this, R.style.full_screen_dialog); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.floating_tutorial); dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); dialog.getWindow().setFormat(PixelFormat.TRANSLUCENT); dialog.show();

Este código colocará el diseño en la parte superior de la actividad, pero lamentablemente no tiene ninguna transparencia, aunque lo haya configurado. El diseño que he usado es muy simple y es por eso que no lo publico.

Pregunta

Qué me estoy perdiendo ? ¿Qué se debe hacer para arreglar el código?

¿Cómo puedo hacer que el diálogo sea transparente, a pantalla completa Y que no cambie la barra de acciones ni la barra de notificaciones?

Solución de trabajo

EDITAR: después de encontrar una buena solución, aquí está el código de trabajo:

@Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.floating_tutorial); final Window window = dialog.getWindow(); window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.show(); }


¡Solo agrega esto, realmente funciona!

<item name="android:windowIsTranslucent">true</item> <item name="android:windowCloseOnTouchOutside">true</item> <item name="android:windowBackground">@android:drawable/alert_dark_frame</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">false</item>


Simplemente cambie el color de fondo de su Diálogo:

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

Editar:

Esto evita el efecto tenue:

dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);