Créer un dialog transparent en haut de l’activité

Contexte

J’essaie de placer une couche au-dessus de l’activité en cours, ce qui expliquerait ce qui se passe sur l’écran actuel, comme ce qui se passe sur contact + app .

Je sais qu’il existe des solutions pour cela (comme la bibliothèque showCase et la bibliothèque superToolTips), et je sais aussi que je peux créer une vue et la mettre en place en l’ajoutant à la fenêtre de l’activité, mais j’ai besoin de mettre un ensemble couche de dialog sur le dessus.

Problème

Quoi que j’essaye, chaque solution ne fonctionne pas comme je le souhaite.

en bref, ce dont j’ai besoin est:

  • dialog en plein écran.

  • aucun changement (pas visuel ni logique) de la barre d’action, de la barre de notification et du contenu de l’activité derrière, ce qui signifie que tout ce qui se trouve derrière la boîte de dialog rest le même un instant avant l’affichage de la boîte de dialog.

  • être transparent sauf pour les vues que j’utilise pour la boîte de dialog, qui doivent être affichées normalement.

ce que j’ai essayé

Malheureusement, je n’ai toujours eu qu’une partie des choses dont j’avais besoin.

voici mon code:

styles.xml:

 @null true @null @android:style/Animation.Dialog stateUnspecified|adjustPan  

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(); 

Ce code mettra la disposition au dessus de l’activité, mais malheureusement, elle n’a pas de transparence, même si je l’ai définie. La mise en page que j’ai utilisée est très simple, c’est pourquoi je ne la poste pas.

Question

Qu’est-ce que je rate ? Que faut-il faire pour corriger le code?

Comment puis-je rendre la boîte de dialog à la fois transparente, plein écran ET qu’elle ne changera pas la barre d’action et la barre de notifications?


Solution de travail

EDIT: après avoir trouvé une bonne solution, voici le code de travail:

 @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(); } 

Changez simplement la couleur de fond de votre boîte de dialog:

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

Modifier:

Cela évite l’effet sombre:

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

Ajoutez juste ceci, cela fonctionne vraiment!

 true true @android:drawable/alert_dark_frame @null true true false