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


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 .. :)


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" 

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


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.

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


27

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


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.


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"));

13

Essayez ce code :)

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


10

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

  mComponentName.setBackgroundColor(getResources().getColor(android.R.color.transparent));

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


5

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


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

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


il suffit de cliquer dessus. @PeterMortensen
Jayakrishnan PM

4

Un moyen plus simple:

mComponentName.setBackgroundResource(android.R.color.transparent);

4

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


2

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

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


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.


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


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

0
ImageView.setBackground(R.drawable.my_background);

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency

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.


quelle est votre ressource pour utiliser aa avant hex de couleur
Mina Fawzy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.