Définir l'arrière-plan transparent d'une image sur Android

334

J'utilise une vue Web dans laquelle j'ajoute une vue d'image. Comment puis-je définir l'arrière-plan de cette vue d'image sur transparent?

J'ai essayé ceci:

mImageview.setBackgroundResource(R.color.trans);

trans<color name="trans">#00000000 </color>.

mudit
la source
Cela peut vous aider: stackoverflow.com/questions/5445085/…
Martin Stanimirov

Réponses:

571

Dans votre XML, définissez l' Backgroundattribut sur n'importe quelle couleur, White(#FFFFFF)nuance ou Black(#000000)nuance. Si vous voulez de la transparence, mettez simplement 80 avant le code de hachage réel:

#80000000

Cela changera n'importe quelle couleur que vous voulez en transparente .. :)

Harshad
la source
3
@Harshad: Est-il possible de définir, disons, une transparence de 40% pour une image d'arrière-plan définie avec View.setBackgroundResource(R.drawable.something)?
Luis A. Florit
@ LuisA.Florit J'ai trouvé ce lien où vous devez multiplier par 0,4 (40/100) votre valeur RVB. Je ne sais pas si cela est utile, mais vous pouvez l'essayer. forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad
3
@Harshad: Désolé, je n'ai pas compris votre réponse. Je n'ai pas de valeur RVB, mais une TextView avec une image d'arrière-plan que je veux être, disons, transparente à 50%. Mais, de toute façon, j'ai trouvé la réponse ici à stackoverflow: View.getBackground().setAlpha(50). Cela ne pourrait pas être plus simple, non? : o) Quoi qu'il en soit, merci pour votre aide !!
Luis A. Florit
21
Si vous ajoutez un nombre de 01 à 99 avant le code de hachage réel, cela vous donnera la transparence. Par exemple: Noir avec plus de transparence - #10000000 Noir avec moins de transparence - #99000000
AnhSirk Dasarp
64
@AnhSirkDasarp Non seulement de 01 à 99, car les autres nombres sont également hexadécimaux, vous pouvez donc mettre n'importe quoi de 00 à ff. Pour cinquante pour cent de transparence, vous devez mettre 80 au lieu de 50, et pour les autres, vous avez des calculs de base à faire ...
Nemanja Kovacevic
571

Vous pouvez définir l'arrière-plan transparent de toute mise en page, toute vue ou tout composant en ajoutant ce code en XML:

android:background="@android:color/transparent" 
Chirag Patel
la source
4
J'ai eu un problème sur les anciennes versions d'Android qui ne traitaient pas # ff000000 comme pur transparent. L'utilisation de cela l'a corrigé.
loeschg
11
Probablement parce que #FF 00 00 00 = 100% noir.
Derk-Jan
3
@Ioeschg Les 2 premières lettres sont pour le canal alpha. # 00xxxxxx serait transparent, tandis que x est une valeur hexadécimale souhaitée.
user1032613
10
Et l'équivalent par programme si quelqu'un est intéressé est Android.Resource.Color.Transparent :)
leoneboaventura
3
@undroid tryandroid:background="#00ffffff"
ban-geoengineering
179

En plus de ce que Harshad a mentionné:

Deux caractères hexadécimaux peuvent être ajoutés à n'importe quel code couleur hexadécimal. Les deux premiers caractères d'un code de couleur hexadécimal à 8 chiffres représentent son opacité dans Android.

Les deux caractères hexadécimaux peuvent aller de 00 à FF. Par exemple,

  • Hexagone noir opaque normal - "# 000000"
  • Entièrement transparent - "# 00000000"
  • Entièrement opaque - "# FF000000"
  • 50% transparent - "# 7F000000"

De cette façon, vous pouvez changer n'importe quelle couleur à n'importe quel niveau de transparence.

Pour rechercher le préfixe hexadécimal à partir d'un pourcentage:

Divisez le nombre en pourcentage par 100 et multipliez par 255 pour obtenir la valeur décimale. Convertissez la décimale en hexadécimal ici .

Par exemple, pour 50%, 50/100 * 255 = 127. En utilisant le lien, nous obtenons la valeur hexadécimale 7F.

Source: Android: comment créer un fond transparent ou opaque

Aaron
la source
3
en fait, une transparence parfaite de 50% est 7F et non 80;)
shinyuX
147

Si vous souhaitez ajouter 20% ou 30% de transparence, vous devez ajouter deux caractères supplémentaires au code hexadécimal, comme CC.

Remarque

android:background="#CCFF0088" en XML

où CC est la valeur alpha, FF est le facteur rouge, 00 est le facteur vert et 88 est le facteur bleu.

Un code d'opacité:

Valeurs d'opacité hexadécimale

100%  FF
95%  F2
90%  E6
85%  D9
80%  CC
75%  BF
70%  B3
65%  A6
60%  99
55%  8C
50%  80
45%  73
40%  66
35%  59
30%  4D
25%  40
20%  33
15%  26
10%  1A
5%   0D
0%   00

Vous pouvez également définir l'opacité par programmation comme:

yourView.getBackground().setAlpha(127);

Réglez l'opacité entre 0 (entièrement transparent) à 255 (complètement opaque). Le 127,5 est exactement 50%.

Vous pouvez créer n'importe quel niveau de transparence en utilisant la formule donnée. Si vous voulez à moitié transparent:

 16 |128          Where 128 is the half of 256.
    |8 -0         So it means 80 is half transparent.

Et pour une transparence de 25%:

16 |64            Where 64 is the quarter of 256.
   |4 -0          So it means 40 is quarter transparent.
Zar E Ahmer
la source
42

Utilisez le code ci-dessous pour le noir:

<color name="black">#000000</color>

Maintenant, si vous souhaitez utiliser l'opacité, vous pouvez utiliser le code ci-dessous:

<color name="black">#99000000</color>

Et ce qui suit pour le code d'opacité:

100% - FF

95% - F2

90% - E6

85% - D9

80% - CC

75% - BF

70% - B3

65% - A6

60% - 99

55% - 8C

50% - 80

45% - 73

40% - 66

35% - 59

30% - 4D

25% - 40

20% - 33

15% - 26

10% - 1A

5% - 0D

0% - 00

Narendra Sorathiya
la source
27

Il existe déjà une constante prédéfinie. Utilisez Color.TRANSPARENT.

Ahmad Dwaik 'Warlock'
la source
1
L'utilisation d'une constante devrait être la meilleure façon / la plus propre de s'y prendre! Mais dans ce cas, la valeur de Color.TRANSPARENTest définie sur 0x00000000(et non pas entièrement opaque attendue 0xFF000000), donc selon la façon dont vous vous y prenez, cette constante pourrait ne pas vraiment aider à réaliser la transparence! Toujours +1 pour recommander une constante!
Lévite
24

Il existe déjà un transparent intégré à Android: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Mais je pense que vous voudrez peut-être rendre l'arrière-plan de l'image que vous placez dans WebView transparent, par exemple, avec un PNG transparent, plutôt que l'arrière-plan ImageView. Si l'image réelle n'est pas du tout transparente, l'arrière-plan ImageView ne peut pas être vu à travers elle.

Intrications
la source
l'image est transparente..il n'a pas de fond..j hv a également essayé de définir le fond d'imageview comme u hv l'a dit..mais cela n'a pas fonctionné ... aide plz ..
mudit
Pouvez-vous publier plus de détails tels qu'un lien vers l'image que vous utilisez et le code et la mise en page que vous utilisez?
Intrications
17

Au cas où vous le voudriez dans le code, juste:

mComponentName.setBackgroundColor(Color.parseColor("#80000000"));
Felipe Vasconcelos
la source
13

Essayez ce code :)

C'est un code hexa entièrement transparent - "# 00000000"

Agilanbu
la source
10

Ou, comme alternative, analysez l'ID de ressource avec le code suivant:

  mComponentName.setBackgroundColor(getResources().getColor(android.R.color.transparent));
Octoth0rpe
la source
10

Dans votre fichier XML, définissez un attribut "Alpha"

tel que

android:alpha="0.0" // for transparent
android:alpha="1.0" // for opaque

Vous pouvez donner n'importe quelle valeur comprise entre 0,0 et 1,0 en décimal pour appliquer la transparence requise. Par exemple, une transparence de 0,5 est idéale pour les composants désactivés

Jay Ryu
la source
5

Pour ceux qui sont toujours confrontés à ce problème, vous pouvez essayer ceci
element.getBackground().setAlpha(0);

SuicideSheep
la source
Je reçois unNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky
1
@IgorGanapolsky: essayez de elementvoir si c'est un objet nul
SuicideSheep
5

Utilisez les éléments suivants pour une transparence totale:

#00000000

Lorsque j'ai essayé avec le # 80000000, j'ai reçu une superposition transparente noire dont je ne veux pas. Essayez de modifier les deux premiers chiffres; il contrôle le niveau de transparence, comme

#00000000
#10000000
#20000000
#30000000
Ameen Maheen
la source
couleur parfaite sur transparent foncé
Najib Ahmed Puthawala
5

Dans Android Studio, il est très simple d'ajuster la couleur et l'opacité à l'aide d'un outil intégré:

Android Ajuster l'opacité des couleurs

Jayakrishnan PM
la source
il suffit de cliquer dessus. @PeterMortensen
Jayakrishnan PM
4

Un moyen plus simple:

mComponentName.setBackgroundResource(android.R.color.transparent);
Andrei Aulaska
la source
4

Une autre option de travail que j'ai rencontrée est de définir android:background="@null"

fouet
la source
2

Vous pouvez également utiliser View.setAlpha(float)pour modifier la visibilité avec précision.

0 serait transparent, 1 entièrement visible. ;)

jns
la source
1
Cela change l'alpha de la vue, PAS son arrière-plan!
IgorGanapolsky
La vue entière sera alors transparente, y compris le contenu / l'image qu'il contient, votre réglage de l'alpha qui est faux dans ce cas. L'utilisateur souhaite conserver la transparence d'une image sans modifier l'image pour qu'elle soit transparente.
Haroun Hajem
2

Essayez d'utiliser le code suivant. Cela vous aidera en totalité ou plus.

  1. Un fichier .xml conçu pour utiliser ce code pour définir la couleur d'arrière-plan:

    android:background="#000000"

    ou

    android:background="#FFFFFF"

    L'image est ici

    Ou vous pouvez également le définir par programme.

  2. Vous pouvez également utiliser ce code par programme:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. Aussi ce code pour définir la couleur d'arrière-plan aussi bien par programme:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Ce code pour le même par programme:

    image.setBackgroundColor(getResources().getColor(Color.WHITE));

La couleur dépend de votre choix de la couleur que vous souhaitez utiliser pour le transparent. Utilisez principalement une couleur blanche ou #FFFFFF.

Concernant R.drawable.llabackground: Cette ligne de code est pour votre style d'arrière-plan, comme quelque chose de spécial ou de différent pour votre objectif. Vous pouvez également l'utiliser.

Amitsharma
la source
2

Si vous utilisez une image XML dessinable, vous pouvez la rendre transparente comme indiqué dans l'image ci-dessous, ou vous pouvez utiliser un code couleur:

<color name="black">#99000000</color> 

Entrez la description de l'image ici

Tariqul
la source
1

Les définitions de couleurs avec des informations de transparence peuvent être sous la forme

#AARRGGBBou #ARGB.

Vous pouvez également utiliser la valeur la plus courte pour une transparence totale: # 0000 .

Les autres valeurs sont par exemple:

white  grey   black
#FFFF  #F888  #F000 - full color
#EFFF  #E888  #E000
#DFFF  #D888  #D000
#CFFF  #C888  #C000
#BFFF  #B888  #B000
#AFFF  #A888  #A000
#9FFF  #9888  #9000
#8FFF  #8888  #8000
#7FFF  #7888  #7000
#6FFF  #6888  #6000
#5FFF  #5888  #5000
#4FFF  #4888  #4000
#3FFF  #3888  #3000
#2FFF  #2888  #2000
#1FFF  #1888  #1000
#0FFF  #0888  #0000 - full transparency
gotwo
la source
0
ImageView.setBackground(R.drawable.my_background);

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency
Ravi Naidu
la source
1
Bien que ce code puisse aider à résoudre le problème, il n'explique pas pourquoi et / ou comment il répond à la question. Fournir ce contexte supplémentaire améliorerait considérablement sa valeur à long terme. Veuillez modifier votre réponse pour ajouter des explications, y compris les limitations et hypothèses applicables.
Toby Speight
0

Essaye ça:

#aa000000

Pour la transparence 000000 = noir, vous pouvez modifier ces six nombres pour la couleur souhaitée.

Alex Zaraos
la source
quelle est votre ressource pour utiliser aa avant hex de couleur
Mina Fawzy