Je veux créer une activité transparente en plus d'une autre activité.
Comment puis-je atteindre cet objectif?
Je veux créer une activité transparente en plus d'une autre activité.
Comment puis-je atteindre cet objectif?
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 couleur #00000000
que j'ai mise dans le res/values/color.xml
fichier. Vous pouvez également l'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>
<item name="android:windowBackground">@android:color/transparent</item>
android:windowIsFloating
la valeur true. Supprimez cette propriété pour vous comporter comme une activité normale (dans ce cas, elle correspondraandroid:style/Theme.Translucent.NoTitleBar
)AppCompatActivity
. Il enparent="android:Theme"
allait de même pour mon application. Je viens de le retirer et cela a fonctionné comme un charme. Merci!Ça va comme ça:
la source
50% black should be #7f000000
. Chaque composant (A, R, G, B) peut prendre des valeurs0-255
.50% of 255 = 127. 127 in Hex = 7F
Voilà comment calculer la transparence (opacité)Dans le styles.xml:
Dans AndroidManifest.xml:
la source
Theme.Appcompat.Light.NoActionBar
place.background
et mettre votre couleur semi-transparente préféréewindowBackground
Déclarez votre activité dans le manifeste comme ceci:
Et ajoutez un arrière-plan transparent à votre mise en page.
la source
Attribuez le thème translucide à l'activité que vous souhaitez rendre transparente dans le fichier manifeste Android de votre projet:
la source
Je voulais ajouter un peu à cela car je suis également un nouveau développeur Android. La réponse acceptée est excellente, mais j'ai rencontré quelques problèmes. Je ne savais pas comment ajouter la couleur au fichier colors.xml. Voici comment procéder:
colours.xml
Dans mon fichier original colors.xml, j'avais la balise "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 la balise "color" dans le XML. J'ai pensé que je devrais également mentionner cela pour aider quelqu'un d'autre.
la source
Je l'ai atteint sur 2.3.3 en ajoutant simplement
android:theme="@android:style/Theme.Translucent"
la balise d'activité dans le manifeste.Je ne connais pas les versions inférieures ...
la source
AppCompatActivity
si vous l'utilisez.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):
Puis en Java je l'ai appliqué à mon activité:
N'oubliez pas un point important ici: vous devez appeler la
setTheme()
fonction avantsuper.onCreate(savedInstanceState);
. J'ai raté ce point et je suis resté coincé pendant 2 heures, pensant pourquoi mon thème ne se reflétait pas lors de l'exécution.la source
Dans la fonction onCreate , sous setContentView , ajoutez cette ligne:
la source
Laissez simplement l'image d'arrière-plan de l'activité transparente. Ou ajoutez le thème dans le fichier XML:
la source
Le moyen le plus simple que j'ai trouvé est de définir le thème de l'activité dans le AndroidManifest sur
android:theme="@android:style/Theme.Holo.Dialog"
.Ensuite, dans la méthode onCreate de l'activité, appelez
getWindow().setBackgroundDrawable(new ColorDrawable(0));
.la source
Pour l'activité de dialogue, j'utilise ceci:
Mais vous devez également définir votre vue principale de l'activité sur invisible. Sinon, l'arrière-plan sera invisible tandis que toutes les vues qu'il contient seront visibles.
la source
en plus des réponses ci-dessus:
pour éviter le crash lié à Android Oreo sur l'activité
la source
Je viens de faire deux choses et cela a rendu mon activité transparente. Ils sont en dessous.
Dans le fichier manifeste, je viens d'ajouter le code ci-dessous dans la balise d' activité .
Et je viens de définir l'arrière-plan de la disposition principale de cette activité comme " # 80000000 ". Comme
Cela fonctionne parfaitement pour moi.
la source
Si vous utilisez,
AppCompatActivity
ajoutez ceci dansstyles.xml
Dans le
manifest
fichier, vous pouvez ajouter ce thème à la balise d'activité comme cecipour plus de détails lire cet article
la source
Attribuez-lui le thème translucide
la source
Il y a deux façons:
L'utilisation
Theme.NoDisplay
fonctionnera toujours… mais uniquement sur les appareils Android plus anciens. Sur Android 6.0 et plus, en utilisant Theme.NoDisplay sans appelerfinish()
àonCreate() (or, technically, before onResume())
volonté bloquer votre application. C'est pourquoi la recommandation est d'utiliserTheme.Translucent.NoTitleBar
, qui ne souffre pas de cette limitation . »la source
Remarque 1: dans le dossier Drawable, créez test.xml et copiez le code suivant
// Remarque: les coins et la forme sont conformes à vos besoins.
// Remarque 2: créez du xml:
la source
Ajoutez simplement la ligne suivante à la balise d'activité dans votre fichier manifeste qui doit être transparente.
la source
Toutes ces réponses peuvent prêter à confusion, il existe une différence entre l'activité transparente et l'activité Aucune interface utilisateur.
En utilisant ceci:
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Rendra l'activité transparente mais bloquera l'interface utilisateur.
Si vous voulez une activité None UI, utilisez ceci:
android:theme="@android:style/Theme.NoDisplay"
la source
Vous pouvez supprimer
setContentView(R.layout.mLayout)
de votre activité et définir le thème commeandroid:theme="@style/AppTheme.Transparent"
. Consultez ce lien pour plus de détails.la source