Question Comment créer une activité transparente sur Android?


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

Comment puis-je atteindre cet objectif?


782
2018-02-01 13:28


origine


Réponses:


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

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</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>
  </style>
</resources>

(La valeur @color/transparent est la valeur de la couleur #00000000 que j'ai mis dans le res/values/color.xml fichier. Vous pouvez aussi utiliser @android:color/transparent dans les versions ultérieures d'Android.)

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

<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>

1222
2018-04-23 17:37



Ça va comme ça:

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

175
2018-02-01 14:47



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

Dans le fichier styles.xml:

<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
    <item name="android:background">#33000000</item> <!-- Or any transparency or color you need -->
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>
</style>

Dans le fichier AndroidManifest.xml:

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

81
2017-07-28 21:26



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.


32
2017-07-02 05:07



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

<activity
    android:name="YOUR COMPLETE ACTIVITY NAME WITH PACKAGE"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

25
2017-10-29 05:36



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.


14
2018-04-22 12:55



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

Je ne connais pas les versions inférieures ...


13
2017-09-21 12:07



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

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</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>
  </style>
</resources>

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

@Override
    protected void onCreate(Bundle savedInstanceState) {

        String email = getIntent().getStringExtra(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);


    }

Souviens toi Point important ici: Vous devez appeler le setTheme() fonction avant super.onCreate(savedInstanceState);. J'ai manqué ce point et j'ai bloqué pendant 2 heures, pensant que mon thème ne se reflète pas au moment de l'exécution.


9
2017-10-26 14:15



dans le surCréer fonction, ci-dessous setContentView, ajoutez cette ligne:

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

8
2017-10-14 20:18



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" />

6
2018-02-19 14:12