Comment créer une activité transparente sur Android?

Je veux créer une activité transparente par-dessus une autre activité.

Comment puis-je atteindre cet objective?

Ajoutez le style suivant dans votre fichier res/values/styles.xml (si vous n’en avez pas, créez-le). Voici un fichier complet:

     

(La valeur @color/transparent est la valeur de couleur #00000000 que je mets dans le fichier res/values/color.xml . Vous pouvez également utiliser @android:color/transparent dans les versions Android ultérieures.)

Appliquez ensuite le style à votre activité, par exemple:

  ...  

Ça va comme ça:

  

Avec la bibliothèque “AppCompat” ou “Android Design Support Library”, c’est un peu différent:

Dans le styles.xml:

  

Dans le fichier AndroidManifest.xml:

  android:name=".WhateverNameOfTheActivityIs" android:theme="@style/Theme.AppCompat.Translucent" ...  

Déclarez votre activité dans le manifeste comme ceci:

   

Et ajoutez un arrière-plan transparent à votre mise en page.

Affectez le thème translucide à l’activité que vous souhaitez rendre transparent dans le fichier manifeste Android de votre projet:

  

Je voulais aussi append quelque chose car je suis également un nouveau développeur Android. La réponse acceptée est géniale, mais j’ai eu quelques problèmes. Je ne savais pas comment append la couleur au fichier colors.xml. Voici comment faire:

colors.xml

   #7f040000 #00000000  

Dans mon fichier original colors.xml, j’avais l’étiquette “drawable”:

 #7f040000 

Et donc je l’ai fait pour la couleur aussi, mais je ne comprenais pas que la référence “@ color /” signifiait chercher le tag “color” dans le XML. J’ai pensé que je devrais mentionner cela aussi pour aider quelqu’un d’autre.

Je l’ai atteint sur 2.3.3 en ajoutant simplement android:theme="@android:style/Theme.Translucent" dans la balise d’activité du manifeste.

Je ne connais pas les versions inférieures …

Dans mon cas, je dois définir le thème sur le moteur d’exécution en Java en fonction de certaines conditions. J’ai donc créé un thème de style (similaire aux autres réponses):

     

Puis en Java je l’ai appliqué à mon activité:

 @Override protected void onCreate(Bundle savedInstanceState) { Ssortingng email = getIntent().getSsortingngExtra(AppConstants.REGISTER_EMAIL_INTENT_KEY); if (email != null && !email.isEmpty()) { // We have the valid email ID, no need to take it from user, prepare transparent activity just to perform bg tasks required for login setTheme(R.style.Theme_Transparent); super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); } else super.onCreate(savedInstanceState); setContentView(R.layout.activity_dummy); } 

Rappelez-vous un point important ici: vous devez appeler la fonction setTheme() avant super.onCreate(savedInstanceState); . J’ai raté ce point et je suis resté pendant deux heures, pensant que mon thème ne se reflétait pas au moment de l’exécution.

Dans la fonction onCreate , sous le setContentView , ajoutez cette ligne:

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

Laissez simplement l’image d’arrière-plan de l’activité être transparente. Ou ajoutez le thème dans le fichier XML:

  

Le moyen le plus simple que j’ai trouvé est de définir le thème de l’activité dans AndroidManifest sur android:theme="@android:style/Theme.Holo.Dialog" .

Ensuite, dans la méthode onCreate de l’activité, appelez getWindow().setBackgroundDrawable(new ColorDrawable(0)); .

Pour l’activité de dialog, j’utilise ceci:

 getWindow().getDecorView().setBackgroundResource(android.R.color.transparent); 

Mais vous devez également définir votre vue principale de l’activité sur invisible. Sinon, le fond sera invisible alors que toutes les vues seront visibles.

Je viens de faire deux choses et cela a rendu mon activité transparente. Ils sont ci-dessous.

  1. Dans le fichier manifeste, j’ai simplement ajouté le code ci-dessous dans la balise d’ activité .

     android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 
  2. Et je viens de définir l’arrière-plan de la mise en page principale pour cette activité comme ” # 80000000 “. Comme

     android:background="#80000000" 

Cela fonctionne parfaitement pour moi.

Atsortingbuez-lui le thème translucide

 android:theme="@android:style/Theme.Translucent.NoTitleBar" 

Remarque 1: Dans le dossier Drawable, créez le fichier test.xml et copiez le code suivant

        

// Note: Les coins et la forme sont selon vos besoins.

// Note 2: Créer xml:

       

Il y a deux façons:

  1. Utiliser Theme.NoDisplay
  2. Utiliser Theme.Translucent.NoTitleBar

Utiliser Theme.NoDisplay fonctionnera toujours… mais uniquement sur les anciens appareils Android. Sur Android 6.0 et versions ultérieures, l’utilisation de Theme.NoDisplay sans appeler finish() dans onCreate() (or, technically, before onResume()) plantera votre application. C’est pourquoi il est recommandé d’utiliser Theme.Translucent.NoTitleBar , qui ne souffre pas de cette limitation .

Ajoutez simplement la ligne suivante à la balise d’activité dans votre fichier manifeste qui doit être transparente.

 android:theme="@android:style/Theme.Translucent"