Ustaw przezroczyste tło widoku obrazu na Androida

334

Korzystam z widoku internetowego, w którym dodaję widok obrazu. Jak ustawić przezroczystość tła tego widoku obrazu?

Próbowałem tego:

mImageview.setBackgroundResource(R.color.trans);

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

mudit
źródło
To może ci pomóc: stackoverflow.com/questions/5445085/...
Martin Stanimirov

Odpowiedzi:

571

W swoim XML ustaw Backgroundatrybut na dowolny kolor, White(#FFFFFF)odcień lub Black(#000000)odcień. Jeśli chcesz przezroczystości, po prostu wstaw 80 przed rzeczywistym kodem skrótu:

#80000000

Spowoduje to zmianę dowolnego koloru na przezroczysty .. :)

Harshad
źródło
3
@Harshad: Czy można ustawić, powiedzmy, 40% przezroczystości dla zestawu obrazów tła View.setBackgroundResource(R.drawable.something)?
Luis A. Florit
@ LuisA.Florit Znalazłem ten link, w którym należy pomnożyć przez 0,4 (40/100) do wartości RGB. Nie jestem pewien, czy jest to pomocne, ale możesz spróbować. forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad
3
@Harshad: Przepraszam, nie zrozumiałem twojej odpowiedzi. Nie mam żadnej wartości RGB, ale TextView z obrazem tła, który chcę być, powiedzmy, w 50% przezroczysty. Ale w każdym razie, znalazłem odpowiedzi tutaj w stackoverflow: View.getBackground().setAlpha(50). Nie może być prościej, prawda? : o) W każdym razie dzięki za pomoc !!
Luis A. Florit
21
Jeśli dodasz dowolną liczbę od 01 do 99 przed rzeczywistym kodem skrótu, zapewni to przejrzystość. Np .: Czarny z większą przezroczystością - #10000000 Czarny z mniejszą przezroczystością - #99000000
AnhSirk Dasarp
64
@AnhSirkDasarp Nie tylko od 01 do 99, ponieważ pozostałe cyfry są również szesnastkowe, więc możesz wstawić dowolne liczby od 00 do ff. Dla pięćdziesięciu procent przezroczystości powinieneś umieścić 80 zamiast 50, a dla innych musisz wykonać kilka podstawowych obliczeń ...
Nemanja Kovacevic
571

Możesz ustawić przezroczyste tło dla dowolnego układu, dowolnego widoku lub dowolnego komponentu, dodając ten kod w XML:

android:background="@android:color/transparent" 
Chirag Patel
źródło
4
Miałem problem ze starszymi wersjami Androida, które nie traktowały # ff000000 jako czystej przezroczystości. Za pomocą tego naprawiłem to.
loeschg
11
Prawdopodobnie dlatego, że #FF 00 00 00 = 100% czarnego.
Derk-Jan
3
@Ioeschg Pierwsze 2 litery dotyczą kanału alfa. # 00xxxxxx byłby przezroczysty, zaś x jest dowolną wartością szesnastkową, którą chcesz.
user1032613,
10
I odpowiednikiem programowo, jeśli ktoś jest zainteresowany, jest Android.Resource.Color.Transparent :)
leoneboaventura
3
@undroid tryandroid:background="#00ffffff"
ban-
179

Oprócz tego, o czym wspomniał Harshad:

Do każdego szesnastkowego kodu koloru można dodać dwa znaki szesnastkowe. Pierwsze dwa znaki w 8-cyfrowym kodzie szesnastkowym oznaczają jego nieprzezroczystość w systemie Android.

Dwa znaki szesnastkowe mogą mieć zakres od 00 do FF. Na przykład,

  • Normalny nieprzezroczysty czarny sześciokąt - „# 000000”
  • W pełni przejrzysty - „# 00000000”
  • Całkowicie nieprzezroczysty - „# FF000000”
  • 50% przezroczystości - „# 7F000000”

W ten sposób możesz zmienić dowolny kolor do dowolnego poziomu przezroczystości.

Aby znaleźć prefiks szesnastkowy z wartości procentowej:

Podziel liczbę procentową przez 100 i pomnóż przez 255, aby uzyskać wartość dziesiętną. Tutaj zamień liczbę dziesiętną na szesnastkową .

Na przykład dla 50% 50/100 * 255 = 127. Za pomocą linku otrzymujemy wartość szesnastkową 7F.

Źródło: Android: jak stworzyć przezroczyste lub nieprzezroczyste tło

Aaron
źródło
3
właściwie 50% przezroczystości to 7F, a nie 80;)
shinyuX 30.04.
147

Jeśli chcesz dodać 20% lub 30% przezroczystości, powinieneś wstępnie wstawić dwa dodatkowe znaki do kodu szesnastkowego, np. CC.

Uwaga

android:background="#CCFF0088" w XML

gdzie CC to wartość alfa, FF to czynnik czerwony, 00 to czynnik zielony, a 88 to czynnik niebieski.

Niektóre kody krycia:

Wartości krycia szesnastkowego

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

Można również ustawić programowo krycie w sposób podobny do:

yourView.getBackground().setAlpha(127);

Ustaw krycie od 0 (w pełni przezroczysty) do 255 (całkowicie nieprzezroczysty). 127,5 to dokładnie 50%.

Możesz utworzyć dowolny poziom przezroczystości za pomocą podanej formuły. Jeśli chcesz półprzezroczysty:

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

A dla przejrzystości 25%:

16 |64            Where 64 is the quarter of 256.
   |4 -0          So it means 40 is quarter transparent.
Zar E Ahmer
źródło
42

Użyj czarnego kodu poniżej:

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

Teraz, jeśli chcesz użyć krycia, możesz użyć poniższego kodu:

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

A poniżej kod krycia:

100% - FF

95% - F2

90% - E6

85% - D9

80% - CC

75% - BF

70% - B3

65% - A6

60% - 99

55% - 8 ° C

50% - 80

45% - 73

40% - 66

35% - 59

30% - 4D

25% - 40

20% - 33

15% - 26

10% - 1A

5% - 0D

0% - 00

Narendra Sorathiya
źródło
27

Istnieje już predefiniowana stała. Zastosowanie Color.TRANSPARENT.

Ahmad Dwaik „Warlock”
źródło
1
Użycie stałej powinno być najlepszym / najczystszym sposobem na obejście tego! Ale w tym przypadku wartość Color.TRANSPARENTjest ustawiona na 0x00000000(nie oczekiwana całkowicie nieprzezroczysta 0xFF000000), więc w zależności od tego, jak sobie z tym poradzisz, ta stała może nie pomóc w osiągnięciu przejrzystości! Nadal +1 za polecanie stałej!
Lewita
24

W systemie Android jest już wbudowany przezroczysty: przezroczysty. http://developer.android.com/reference/android/R.color.html#transparent

Ale myślę, że możesz chcieć, aby tło obrazu, które umieszczasz w WebView, było przezroczyste, na przykład za pomocą przezroczystego PNG, a nie tła ImageView. Jeśli rzeczywisty obraz w ogóle nie jest przezroczysty, wówczas tło ImageView nie jest przez niego widoczne.

Zawiłości
źródło
obraz jest przezroczysty .. nie miałem żadnego tła ..
ja
Czy możesz opublikować więcej szczegółów, takich jak link do używanego obrazu oraz kodu i układu, którego używasz?
Zawiłości
17

Jeśli chcesz to w kodzie, po prostu:

mComponentName.setBackgroundColor(Color.parseColor("#80000000"));
Felipe Vasconcelos
źródło
13

Wypróbuj ten kod :)

Jest to w pełni przezroczysty kod hexa - „# 00000000”

Agilanbu
źródło
10

Lub alternatywnie przeanalizuj identyfikator zasobu za pomocą następującego kodu:

  mComponentName.setBackgroundColor(getResources().getColor(android.R.color.transparent));
Octoth0rpe
źródło
10

W pliku XML ustaw atrybut „Alpha”

Jak na przykład

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

Możesz podać dowolną wartość od 0,0 do 1,0 w systemie dziesiętnym, aby zastosować wymaganą przezroczystość. Na przykład przezroczystość 0,5 jest idealna dla wyłączonego komponentu

Jay Ryu
źródło
5

Dla tych, którzy wciąż napotykają ten problem, możesz spróbować
element.getBackground().setAlpha(0);

SuicideSheep
źródło
DostajęNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky
1
@IgorGanapolsky: spróbuj elementzobaczyć, czy jest to obiekt zerowy
SuicideSheep
5

Aby uzyskać pełną przejrzystość, użyj następujących poleceń:

#00000000

Kiedy próbowałem z # 80000000, dostałem czarną przezroczystą nakładkę, której nie chcę. Spróbuj zmienić pierwsze dwie cyfry; kontroluje poziom przezroczystości

#00000000
#10000000
#20000000
#30000000
Ameen Maheen
źródło
idealny kolor na przezroczystym ciemnym
Najib Ahmed Puthawala
5

W Android Studio bardzo łatwo jest dopasować kolor i krycie za pomocą wbudowanego narzędzia:

Android Dostosuj krycie kolorów

Jayakrishnan PM
źródło
po prostu kliknij na to. @PeterMortensen
Jayakrishnan PM
4

Jeszcze jeden prosty sposób:

mComponentName.setBackgroundResource(android.R.color.transparent);
Andrei Aulaska
źródło
4

Inną dostępną opcją roboczą jest ustawienie android:background="@null"

clwhisk
źródło
2

Możesz także użyć View.setAlpha(float)do precyzyjnej zmiany widoczności.

0 byłoby przezroczyste, 1 w pełni widoczne. ;)

jns
źródło
1
To zmienia alfa Widoku, a NIE jego tło!
IgorGanapolsky
Cały widok będzie wówczas przezroczysty, łącznie z zawartością / obrazem, a ustawienie alfy będzie nieprawidłowe w tym przypadku. Użytkownik chce zachować przezroczystość obrazu, a nie zmieniać obrazu, aby był przezroczysty.
Haroun Hajem
2

Spróbuj użyć następującego kodu. Pomoże Ci w pełni lub więcej.

  1. Plik .xml przeznaczony do używania tego kodu do ustawiania koloru tła:

    android:background="#000000"

    lub

    android:background="#FFFFFF"

    Obraz jest tutaj

    Możesz też ustawić to programowo.

  2. Możesz także użyć tego kodu programowo:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. Również ten kod do ustawiania koloru tła również programowo:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Ten kod dla tego samego programowo:

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

Kolor zależy od wyboru koloru przezroczystego. Najczęściej używaj koloru białego lub #FFFFFF.

Odnośnie R.drawable.llabackground: Ten wiersz kodu odnosi się do Twojego stylu tła, jak coś specjalnego lub innego do twojego celu. Możesz także tego użyć.

Amitsharma
źródło
2

Jeśli używasz rysowalnego obrazu XML, możesz uczynić go przezroczystym, jak pokazano na poniższym obrazku, lub możesz użyć kodu koloru:

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

Wpisz opis zdjęcia tutaj

Tariqul
źródło
1

Definicje kolorów z informacjami o przezroczystości mogą być w formie

#AARRGGBBlub #ARGB.

Możesz także użyć krótszej wartości dla pełnej przezroczystości: # 0000 .

Inne wartości to np .:

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
źródło
0
ImageView.setBackground(R.drawable.my_background);

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency
Ravi Naidu
źródło
1
Chociaż ten kod może pomóc w rozwiązaniu problemu, nie wyjaśnia, dlaczego i / lub jak odpowiada na pytanie. Zapewnienie tego dodatkowego kontekstu znacznie poprawiłoby jego długoterminową wartość. Proszę edytować swoje odpowiedzi, aby dodać wyjaśnienie, w tym, co stosuje się ograniczenia i założenia.
Toby Speight
0

Spróbuj tego:

#aa000000

W przypadku przezroczystości 000000 = czarny możesz zmienić te sześć liczb dla żądanego koloru.

Alex Zaraos
źródło
jaki jest twój zasób, aby użyć aa przed kolorowym hexem
Mina Fawzy