Stellen Sie den transparenten Hintergrund einer Bildansicht auf Android ein


Antworten:


571

Stellen Sie in Ihrem XML das BackgroundAttribut auf eine beliebige Farbe, einen beliebigen White(#FFFFFF)Farbton oder einen beliebigen Black(#000000)Farbton ein. Wenn Sie Transparenz wünschen, setzen Sie einfach 80 vor den eigentlichen Hash-Code:

#80000000

Dadurch wird jede gewünschte Farbe in eine transparente geändert. :)


3
@ Harshad: Ist es möglich, beispielsweise eine Transparenz von 40% für ein Hintergrundbild festzulegen, mit dem festgelegt wurde View.setBackgroundResource(R.drawable.something)?
Luis A. Florit

@ LuisA.Florit Ich habe diesen Link gefunden, bei dem Sie mit 0,4 (40/100) auf Ihren RGB-Wert multiplizieren müssen. Ich bin mir nicht sicher, ob dies hilfreich ist, aber Sie können es versuchen. forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad

3
@ Harshad: Entschuldigung, ich habe deine Antwort nicht verstanden. Ich habe keinen RGB-Wert, sondern eine Textansicht mit einem Hintergrundbild, das beispielsweise zu 50% transparent sein soll. Trotzdem fand ich die Antwort hier im Stackoverflow : View.getBackground().setAlpha(50). Einfacher geht es nicht, oder? : o) Trotzdem danke für deine Hilfe !!
Luis A. Florit

21
Wenn Sie vor dem eigentlichen Hash-Code eine Zahl zwischen 01 und 99 hinzufügen, erhalten Sie Transparenz. ZB: Schwarz mit mehr Transparenz - #10000000 Schwarz mit weniger Transparenz - #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp Nicht nur von 01 bis 99, da die restlichen Zahlen auch hexadezimal sind, können Sie alles von 00 bis ff setzen. Für fünfzig Prozent transparent sollten Sie 80 statt 50 setzen, und für die anderen müssen Sie einige grundlegende Berechnungen durchführen ...
Nemanja Kovacevic

571

Sie können den Hintergrund für jedes Layout, jede Ansicht oder jede Komponente transparent machen, indem Sie diesen Code in XML hinzufügen:

android:background="@android:color/transparent" 

4
Ich hatte ein Problem mit älteren Android-Versionen, bei denen # ff000000 nicht als rein transparent behandelt wurde. Mit diesem Problem wurde es behoben.
Loeschg

11
Wahrscheinlich, weil #FF 00 00 00 = 100% schwarz ist.
Derk-Jan

3
@Ioeschg Die ersten 2 Buchstaben sind für den Alphakanal. # 00xxxxxx wäre transparent, während x ein beliebiger Hex-Wert ist.
user1032613

10
Und das Äquivalent programmatisch, wenn jemand interessiert ist, ist Android.Resource.Color.Transparent :)
leoneboaventura

3
@undroid versuchenandroid:background="#00ffffff"
Ban-Geoengineering

179

Zusätzlich zu dem, was Harshad erwähnte:

An jeden hexadezimalen Farbcode können zwei hexadezimale Zeichen angehängt werden. Die ersten beiden Zeichen in einem 8-stelligen Hex-Farbcode stehen für die Deckkraft in Android.

Die zwei hexadezimalen Zeichen können zwischen 00 und FF liegen. Zum Beispiel,

  • Normales undurchsichtiges schwarzes Hex- "# 000000"
  • Vollständig transparent - "# 00000000"
  • Vollständig undurchsichtig - "# FF000000"
  • 50% transparent - "# 7F000000"

Auf diese Weise können Sie jede Farbe auf eine beliebige Transparenzstufe ändern.

So ermitteln Sie das hexadezimale Präfix anhand eines Prozentsatzes:

Teilen Sie die Prozentzahl durch 100 und multiplizieren Sie sie mit 255, um den Dezimalwert zu erhalten. Konvertieren Sie die Dezimal in hexadezimal hier .

Zum Beispiel für 50% 50/100 * 255 = 127. Über den Link erhalten wir den Hexadezimalwert 7F.

Quelle: Android: So erstellen Sie einen transparenten oder undurchsichtigen Hintergrund


3
tatsächlich ist perfekte 50% Transparenz 7F und nicht 80;)
shinyuX

147

Wenn Sie 20% oder 30% Transparenz hinzufügen möchten, sollten Sie dem Hexadezimalcode zwei weitere Zeichen voranstellen, z. B. CC.

Hinweis

android:background="#CCFF0088" in XML

Dabei ist CC der Alpha-Wert, FF der rote Faktor, 00 der grüne Faktor und 88 der blaue Faktor.

Einige Deckkraftcodes:

Hex-Opazitätswerte

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

Sie können die Deckkraft auch programmgesteuert wie folgt einstellen:

yourView.getBackground().setAlpha(127);

Stellen Sie die Deckkraft zwischen 0 (vollständig transparent) und 255 (vollständig undurchsichtig) ein. Der 127,5 ist genau 50%.

Mit der angegebenen Formel können Sie eine beliebige Transparenzstufe erstellen. Wenn Sie halbtransparent wollen:

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

Und für 25% Transparenz:

16 |64            Where 64 is the quarter of 256.
   |4 -0          So it means 40 is quarter transparent.

42

Verwenden Sie den folgenden Code für Schwarz:

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

Wenn Sie jetzt die Deckkraft verwenden möchten, können Sie den folgenden Code verwenden:

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

Und das Folgende für den Deckkraftcode:

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

Es gibt bereits eine vordefinierte Konstante. Verwenden Sie Color.TRANSPARENT.


1
Die Verwendung einer Konstante sollte der beste / sauberste Weg sein, dies zu tun! In diesem Fall wird der Wert von Color.TRANSPARENTjedoch auf 0x00000000(nicht der erwartete vollständig undurchsichtige Wert 0xFF000000) festgelegt. Je nachdem, wie Sie vorgehen, kann diese Konstante möglicherweise nicht wirklich zur Erzielung von Transparenz beitragen! Immer noch +1 für die Empfehlung einer Konstante!
Levite

24

In Android ist bereits eine transparente Version integriert: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Ich denke jedoch, dass Sie den Hintergrund des Bildes, das Sie in WebView platzieren, transparent machen möchten, z. B. mit einem transparenten PNG anstelle des ImageView-Hintergrunds. Wenn das tatsächliche Bild überhaupt nicht durchsichtig ist, kann der ImageView-Hintergrund nicht durchsichtig werden.


Das Bild ist transparent. Es hatte keinen Hintergrund. Ich habe auch versucht, den Hintergrund der Bildansicht einzustellen, wie Sie sagten. Aber es hat nicht funktioniert. Bitte helfen Sie.
Mudit

Können Sie weitere Details veröffentlichen, z. B. einen Link zu dem von Ihnen verwendeten Bild sowie den von Ihnen verwendeten Code und das Layout?
Komplikationen

17

Falls Sie es im Code wollen, einfach:

mComponentName.setBackgroundColor(Color.parseColor("#80000000"));

13

Versuchen Sie diesen Code :)

Es ist ein vollständig transparenter Hexa-Code - "# 00000000"


10

Alternativ können Sie die Ressourcen-ID auch mit dem folgenden Code analysieren:

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

10

Legen Sie in Ihrer XML-Datei ein Attribut "Alpha" fest.

sowie

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

Sie können einen beliebigen Wert zwischen 0,0 und 1,0 als Dezimalzahl angeben, um die erforderliche Transparenz anzuwenden. Zum Beispiel ist 0,5 Transparenz ideal für deaktivierte Komponenten


5

Für diejenigen, die immer noch mit diesem Problem konfrontiert sind, können Sie dies versuchen
element.getBackground().setAlpha(0);


Ich bekomme eineNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky

1
@IgorGanapolsky: Versuchen Sie zu elementsehen, ob es sich um ein Nullobjekt handelt
SuicideSheep

5

Verwenden Sie für vollständige Transparenz Folgendes:

#00000000

Als ich es mit # 80000000 versuchte, bekam ich eine schwarze transparente Überlagerung, die ich nicht will. Versuchen Sie, die ersten beiden Ziffern zu ändern. es steuert den Grad der Transparenz, wie z

#00000000
#10000000
#20000000
#30000000

perfekte Farbe auf transparentem Dunkel
Najib Ahmed Puthawala


4

Ein einfacher Weg:

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

4

Eine andere Arbeitsoption, auf die ich gestoßen bin, ist das Festlegen android:background="@null"


2

Sie können auch View.setAlpha(float)die Sichtbarkeit präzise ändern.

0 wäre transparent, 1 vollständig sichtbar. ;)


1
Das ändert das Alpha der Ansicht, NICHT den Hintergrund!
IgorGanapolsky

Die gesamte Ansicht ist dann transparent, einschließlich des Inhalts / Bilds, wobei Sie das Alpha einstellen, was in diesem Fall falsch ist. Der Benutzer möchte, dass die Transparenz eines Bildes erhalten bleibt und das Bild nicht transparent wird.
Haroun Hajem

2

Versuchen Sie, den folgenden Code zu verwenden. Es wird Ihnen in vollem Umfang oder mehr helfen.

  1. Eine XML-Datei, die diesen Code zum Festlegen der Hintergrundfarbe verwendet:

    android:background="#000000"

    oder

    android:background="#FFFFFF"

    Bild ist hier

    Oder Sie können es auch programmgesteuert einstellen.

  2. Sie können diesen Code auch programmgesteuert verwenden:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. Auch dieser Code zum programmgesteuerten Einstellen der Hintergrundfarbe:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Dieser Code für das gleiche programmatisch:

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

Die Farbe hängt von Ihrer Wahl ab, welche Farbe Sie für transparent verwenden möchten. Verwenden Sie meistens eine weiße oder #FFFFFF Farbe.

In Bezug auf R.drawable.llabackground: Diese Codezeile ist für Ihren Stil des Hintergrunds, wie etwas Besonderes oder anderes für Ihren Zweck. Sie können dies auch verwenden.


2

Wenn Sie ein zeichnbares XML-Bild verwenden, können Sie es wie in der Abbildung unten gezeigt transparent machen oder einen Farbcode verwenden:

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

Geben Sie hier die Bildbeschreibung ein


1

Farbdefinitionen mit Transparenzinformationen können in der Form vorliegen

#AARRGGBBoder #ARGB.

Sie können auch den kürzeren Wert für vollständige Transparenz verwenden: # 0000 .

Andere Werte sind zB:

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
Obwohl dieser Code zur Lösung des Problems beitragen kann, erklärt er nicht, warum und / oder wie er die Frage beantwortet. Die Bereitstellung dieses zusätzlichen Kontextes würde seinen langfristigen Wert erheblich verbessern. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen, einschließlich der Einschränkungen und Annahmen.
Toby Speight

0

Versuche dies:

#aa000000

Für Transparenz 000000 = Schwarz können Sie diese sechs Zahlen für die gewünschte Farbe ändern.


Was ist Ihre Ressource, um aa vor Farbe Hex zu verwenden
Mina Fawzy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.