Ustaw przezroczyste tło widoku obrazu na Androida


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


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" 

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


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.

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


27

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


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.


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


13

Wypróbuj ten kod :)

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


10

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

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

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


5

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


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

idealny kolor na przezroczystym ciemnym
Najib Ahmed Puthawala


4

Jeszcze jeden prosty sposób:

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

4

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


2

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

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


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ć.


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


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

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

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency

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.


jaki jest twój zasób, aby użyć aa przed kolorowym hexem
Mina Fawzy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.