Stellen Sie den transparenten Hintergrund einer Bildansicht auf Android ein

334

Ich verwende eine Webansicht, in der ich eine Bildansicht hinzufüge. Wie kann ich den Hintergrund dieser Bildansicht auf transparent setzen?

Ich habe das versucht:

mImageview.setBackgroundResource(R.color.trans);

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

Schlamm
quelle
Dies kann Ihnen helfen: stackoverflow.com/questions/5445085/…
Martin Stanimirov

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

Harshad
quelle
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" 
Chirag Patel
quelle
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

Aaron
quelle
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.
Zar E Ahmer
quelle
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

Narendra Sorathiya
quelle
27

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

Ahmad Dwaik 'Hexenmeister'
quelle
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.

Komplikationen
quelle
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"));
Felipe Vasconcelos
quelle
13

Versuchen Sie diesen Code :)

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

Agilanbu
quelle
10

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

  mComponentName.setBackgroundColor(getResources().getColor(android.R.color.transparent));
Octoth0rpe
quelle
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

Jay Ryu
quelle
5

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

SuicideSheep
quelle
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
Ameen Maheen
quelle
perfekte Farbe auf transparentem Dunkel
Najib Ahmed Puthawala
5

In Android Studio ist es sehr einfach, Farbe und Deckkraft mit einem integrierten Tool anzupassen:

Android Passen Sie die Farbopazität an

Jayakrishnan PM
quelle
Klicken Sie einfach darauf. @ PeterMortensen
Jayakrishnan PM
4

Ein einfacher Weg:

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

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

clwhisk
quelle
2

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

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

jns
quelle
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.

Amitsharma
quelle
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

Tariqul
quelle
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
gotwo
quelle
0
ImageView.setBackground(R.drawable.my_background);

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency
Ravi Naidu
quelle
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.

Alex Zaraos
quelle
Was ist Ihre Ressource, um aa vor Farbe Hex zu verwenden
Mina Fawzy