Android'de bir görüntülemenin şeffaf arka planını ayarlama


Yanıtlar:


571

XML'inizde Backgroundözelliği herhangi bir renge, White(#FFFFFF)gölgeye veya Black(#000000)gölgeye ayarlayın. Şeffaflık istiyorsanız, gerçek karma kodundan önce 80 koyun:

#80000000

Bu istediğiniz rengi şeffaf bir renge dönüştürecektir .. :)


3
@Harshad: Örneğin, bir arka plan görüntüsü için% 40 şeffaflık ayarlamak mümkün müdür View.setBackgroundResource(R.drawable.something)?
Luis A.Florit

@ LuisA.Florit Bu bağlantıyı RGB değerinizle 0,4 (40/100) çarpmanız gerektiğinde buldum. Emin değilim bu yararlı ama bir deneyin. forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad

3
@Harshad: Üzgünüm, cevabını anlamadım. Herhangi bir RGB değere sahip değilim, örneğin% 50 şeffaf olmak istediğim bir arka plan görüntüsü olan bir TextView. Ama, neyse, ben stackoverflow burada yanıt bulundu: View.getBackground().setAlpha(50). Daha basit olamazdı, değil mi? : o) Neyse, yardımın için teşekkürler !!
Luis A.Florit

21
Gerçek karma kodundan önce 01 ila 99 arasında bir sayı eklerseniz, size saydamlık verir. Örn: Daha fazla saydamlığa #10000000 sahip siyah - Daha az saydamlığa sahip siyah - #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp Sadece 01'den 99'a kadar değil, sayıların geri kalanı da onaltılık olduğundan 00'dan ff'ye kadar herhangi bir şey koyabilirsiniz. Yüzde elli şeffaf için 50 yerine 80 koymalısınız ve diğerleri için yapmanız gereken bazı temel hesaplarınız var ...
Nemanja Kovacevic

571

XML'de bu kodu ekleyerek herhangi bir mizanpajın, herhangi bir görünümün veya herhangi bir bileşenin arka planını saydam olarak ayarlayabilirsiniz:

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

4
Android'in eski sürümlerinde # ff000000'ü saf saydam olarak ele almayan bir sorunum vardı. Bunu kullanarak düzeltti.
loeschg

11
Muhtemelen #FF 00 00 00 =% 100 siyah olduğu için.
Derk-Jan

3
@Ioeschg İlk 2 harf alfa kanalı içindir. # 00xxxxxx saydam olurken x istediğiniz herhangi bir onaltılık değerdir.
user1032613

10
Birisi ilgileniyorsa programlı olarak eşdeğer Android.Resource.Color.Transparent :)
leoneboaventura

3
@undroid tryandroid:background="#00ffffff"
ban-

179

Harshad'un bahsettiklerine ek olarak:

Herhangi bir onaltılık renk koduna iki onaltılık karakter eklenebilir. 8 basamaklı onaltılık renk kodundaki ilk iki karakter, Android'deki opaklığını temsil eder.

İki onaltılık karakter 00 ile FF arasında değişebilir. Örneğin,

  • Normal opak siyah altıgen- "# 000000"
  • Tamamen şeffaf - "# 00000000"
  • Tamamen opak - "# FF000000"
  • % 50 şeffaf - "# 7F000000"

Bu şekilde, herhangi bir rengi herhangi bir saydamlık düzeyine değiştirebilirsiniz.

Bir yüzde cinsinden onaltılık öneki bulmak için:

Ondalık değeri elde etmek için yüzde sayısını 100'e bölün ve 255 ile çarpın. Onaltılık ondalık dönüştürün burada .

Örneğin,% 50, 50/100 * 255 = 127 için. Bağlantıyı kullanarak onaltılık 7F değeri alırız.

Kaynak: Android: şeffaf veya opak bir arka plan nasıl oluşturulur


3
aslında, mükemmel% 50 şeffaflık 80 değil
7F'dir

147

% 20 veya% 30 saydamlık eklemek istiyorsanız, onaltılık koda CC gibi iki karakter daha eklemeniz gerekir.

Not

android:background="#CCFF0088" XML'de

burada CC alfa değeri, FF kırmızı faktör, 00 yeşil faktör ve 88 mavi faktördür.

Bazı opaklık kodu:

Onaltılık Opaklık Değerleri

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

Opaklığı programlı olarak şu şekilde de ayarlayabilirsiniz:

yourView.getBackground().setAlpha(127);

Opaklığı 0 (tamamen şeffaf) ile 255 (tamamen opak) arasında ayarlayın. 127.5 tam olarak% 50'dir.

Verilen formülü kullanarak herhangi bir şeffaflık düzeyi oluşturabilirsiniz. Yarı şeffaf istiyorsanız:

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

Ve% 25 şeffaflık için:

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

42

Siyah için aşağıdaki kodu kullanın:

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

Şimdi opaklığı kullanmak istiyorsanız aşağıdaki kodu kullanabilirsiniz:

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

Opaklık kodu için aşağıdakiler:

% 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

Önceden tanımlanmış bir sabit var. Kullanın Color.TRANSPARENT.


1
Bir sabiti kullanmak en iyi / en temiz yol olmalı! Ancak bu durumda, değeri (beklenen tamamen opak değil) Color.TRANSPARENTolarak ayarlanır , bu yüzden nasıl devam edeceğinize bağlı olarak, bu sabit şeffaflığın elde edilmesine gerçekten yardımcı olmayabilir! Sabit önermek için hala +1! 0x000000000xFF000000
Levite

24

Android'de yerleşik bir şeffaf var: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Ancak WebView'e yerleştirdiğiniz görüntünün arka planını, örneğin ImageView arka planı yerine saydam bir PNG ile saydam yapmak isteyebilirsiniz. Gerçek görüntü hiç şeffaf değilse, ImageView arka planı üzerinde görünemez.


görüntü şeffaf .. herhangi bir arka plan hav vermedi .. hv ayrıca u hv dediği gibi imageview arka plan ayarlamaya çalıştı ... ama işe yaramadı ... plz yardım ..
mudit

Kullandığınız görüntüye bağlantı ve kullandığınız kod ve düzen gibi daha fazla ayrıntı gönderebilir misiniz?
Karışıklar

17

Kodda olmasını istiyorsanız, sadece:

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

13

Bu kodu deneyin :)

Onun tamamen şeffaf bir hexa kodu - "# 00000000"


10

Alternatif olarak, kaynak kimliğini aşağıdaki kodla ayrıştırın:

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

10

XML dosyanızda "Alfa" niteliğini ayarlayın

gibi

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

Gerekli saydamlığı uygulamak için ondalık olarak 0,0 ile 1,0 arasında herhangi bir değer verebilirsiniz. Örneğin, 0,5 şeffaflık devre dışı bırakılan bileşen için idealdir


5

Hala bu sorunla karşı karşıya olanlar için, bunu deneyebilirsiniz
element.getBackground().setAlpha(0);


I get aNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky

1
@IgorGanapolsky: elementboş bir nesne olup olmadığını görmeye çalışın
SuicideSheep

5

Tam şeffaflık için aşağıdakileri kullanın:

#00000000

# 80000000 ile denediğimde, istemediğim siyah şeffaf bir kaplama aldım. İlk iki basamağı değiştirmeye çalışın; saydamlık seviyesini kontrol eder, örneğin

#00000000
#10000000
#20000000
#30000000

şeffaf karanlıkta mükemmel renk
Najib Ahmed Puthawala


4

Daha basit bir yol:

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

4

Karşılaştığım bir başka çalışma seçeneği de android:background="@null"


2

View.setAlpha(float)Görünürlüğü kesin olarak değiştirmek için de kullanabilirsiniz .

0 şeffaf, 1 tam görünür. ;)


1
Bu görünümün alfa değerini değiştirir, arka planını DEĞİL!
IgorGanapolsky

Tüm görünüm, içindeki içerik / resim dahil olmak üzere şeffaf olacaktır, bu durumda yanlış olan alfa ayarını yaparsınız. Kullanıcı bir Görüntünün saydamlığını, görüntünün saydam olarak değiştirmemesini ister.
Haroun Hajem

2

Aşağıdaki kodu kullanmaya çalışın. Size tam veya daha fazla yardımcı olacaktır.

  1. Arka plan rengini ayarlamak için bu kodu kullanmak üzere tasarlanmış bir .xml dosyası:

    android:background="#000000"

    veya

    android:background="#FFFFFF"

    Görüntü burada

    Veya programlı olarak da ayarlayabilirsiniz.

  2. Ayrıca bu kodu programlı olarak kullanabilirsiniz:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. Ayrıca arka plan rengini de programlı olarak ayarlamak için bu kod:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Programlı olarak aynı kod:

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

Renk, şeffaf için hangi rengi kullanmak istediğinize bağlı olarak değişir. Çoğunlukla beyaz veya #FFFFFF renk kullanın.

İlgili R.drawable.llabackground: Bu kod satırı, amacınız için özel veya farklı bir şey gibi arka plan stiliniz içindir. Bunu da kullanabilirsiniz.


2

Çekilebilir bir XML görüntüsü kullanıyorsanız, aşağıdaki resimde gösterildiği gibi şeffaf hale getirebilir veya bir renk kodu kullanabilirsiniz:

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

Resim açıklamasını buraya girin


1

Şeffaflık bilgili renk tanımları formda olabilir

#AARRGGBBveya #ARGB.

Tam saydamlık için daha kısa bir değer de kullanabilirsiniz: # 0000 .

Diğer değerler:

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
Bu kod sorunu çözmeye yardımcı olsa da , soruyu neden ve / veya nasıl cevapladığını açıklamaz . Bu ek bağlamın sağlanması, uzun vadeli değerini önemli ölçüde artıracaktır. Hangi sınırlamalar ve varsayımlar dahil olmak üzere açıklama eklemek için lütfen yanıtınızı düzenleyin .
Toby Speight

0

Bunu dene:

#aa000000

Saydamlık 000000 = siyah için, bu altı sayıyı istediğiniz renk için değiştirebilirsiniz.


aa renk hex önce kullanmak için kaynak nedir
Mina Fawzy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.