Comment créer une activité transparente sur Android?



Answers

Ça va comme ça:

<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
Question

Je veux créer une activité transparente en plus d'une autre activité.

Comment puis-je atteindre cet objectif?




Il y a deux façons,

  1. Utilisation de Theme.NoDisplay
  2. Utilisation de Theme.Translucent.NoTitleBar

L'utilisation de Theme.NoDisplay fonctionne toujours ... mais uniquement sur les anciens appareils Android. Sur Android 6.0 et supérieur, l'utilisation de Theme.NoDisplay sans appeler finish() dans onCreate() (or, technically, before onResume()) plantera votre application. C'est pourquoi la recommandation est d'utiliser Theme.Translucent.NoTitleBar , qui ne souffre pas de cette limitation . "




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

 <activity   
     android:name=".yourActivity"    
     android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

Et ajoutez un fond transparent à votre mise en page.




Pour l'activité de dialogue, 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, l'arrière-plan sera invisible alors que toutes les vues seront visibles.




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

<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />



J'ai juste fait deux choses, et cela a rendu mon activité transparente. Ils sont ci-dessous.

  1. Dans le fichier manifest, je viens d'ajouter 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.




Je voulais aussi ajouter un peu à ce que je suis un nouveau développeur Android. La réponse acceptée est excellente, mais j'ai rencontré des problèmes. Je ne savais pas comment ajouter dans la couleur du fichier colors.xml. Voici comment cela devrait être fait:

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <color name="class_zero_background">#7f040000</color>
     <color name="transparent">#00000000</color>
</resources>

Dans mon fichier colors.xml d'origine, j'avais le tag "drawable":

<drawable name="class_zero_background">#7f040000</drawable>

Et donc j'ai fait ça pour la couleur aussi, mais je n'ai pas compris que la référence "@ color /" signifiait chercher le tag "couleur" dans le XML. J'ai pensé que je devrais mentionner cela aussi pour aider quelqu'un d'autre.




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

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



Related