Встановіть прозорий фон перегляду зображень на Android


334

Я використовую веб-перегляд, в якому додаю зображення. Як я можу встановити фон цього перегляду зображення прозорим?

Я спробував це:

mImageview.setBackgroundResource(R.color.trans);

Де trans<color name="trans">#00000000 </color>.


Відповіді:


571

У вашому XML встановіть Backgroundатрибут будь-якого кольору, White(#FFFFFF)відтінку або Black(#000000)відтінку. Якщо ви хочете прозорість, просто поставте 80 перед фактичним хеш-кодом:

#80000000

Це змінить будь-який колір, який ви хочете, на прозорий .. :)


3
@Harshad: Чи можна встановити, скажімо, 40% прозорість для фонового зображення, встановленого за допомогою View.setBackgroundResource(R.drawable.something)?
Луїс А. Флорит

@ LuisA.Florit Я знайшов це посилання, де потрібно помножити на 0,4 (40/100) до значення RGB. Не впевнений, чи це корисно, але ви можете спробувати. forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Харшад

3
@Harshad: Вибачте, я не зрозумів вашої відповіді. У мене немає значення RGB, але TextView з фоновим зображенням, яке я хочу бути, скажімо, на 50% прозорим. Але, як би там не було, я знайшов відповідь тут у stackoverflow : View.getBackground().setAlpha(50). Не може бути простіше, правда? : o) У будь-якому випадку, дякую за допомогу !!
Луїс А. Флорит

21
Якщо ви додасте будь-яке число від 01 до 99 перед фактичним хеш-кодом, це забезпечить прозорість. Напр .: Чорний з більшою прозорістю - #10000000 Чорний з меншою прозорістю - #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp Не тільки від 01 до 99, так як решта цифр - це також шістнадцятковий, так що ви можете поставити що-небудь від 00 до ff. Для прозорих п'ятдесяти відсотків слід поставити 80 замість 50, а для інших - деякі основні розрахунки, які слід зробити ...
Nemanja Kovacevic

571

Ви можете встановити фон прозорим для будь-якого макета, будь-якого перегляду чи будь-якого компонента, додавши цей код у XML:

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

4
У мене виникла проблема зі старими версіями Android, які не обробляють # ff000000 як чисто прозорий. За допомогою цього виправили це.
loeschg

11
Можливо, тому, що #FF 00 00 00 = 100% чорний.
Дерк-Січ

3
@Ioeschg Перші 2 букви призначені для альфа-каналу. # 00xxxxxx буде прозорим, тоді як x - будь-яке шістнадцяте значення, яке ви хочете.
користувач1032613

10
І рівнозначно програмно, якщо когось цікавить, це Android.Resource.Color.Transparent :)
leoneboaventura

3
@undroid спробаandroid:background="#00ffffff"
заборона-геоінженерія

179

Окрім того, що згадував Харшад:

Два шістнадцяткових символи можуть бути додані до будь-якого шістнадцяткового коду кольорів. Перші два символи в 8-значному шістнадцятковому кольоровому коді відображають його непрозорість в Android.

Два шістнадцяткові символи можуть бути від 00 до FF. Наприклад,

  • Звичайний непрозорий чорний шестигранник- "# 000000"
  • Повністю прозорий - "# 00000000"
  • Повністю непрозорий - "# FF000000"
  • 50% прозорий - "# 7F000000"

Таким чином ви можете змінити будь-який колір на будь-який рівень прозорості.

Щоб знайти шістнадцятковий префікс від відсотка:

Розділіть відсоткове число на 100 і помножте на 255, щоб отримати десяткове значення. Перетворення десяткових чисел в шістнадцяткові тут .

Наприклад, для 50%, 50/100 * 255 = 127. За допомогою посилання ми отримуємо шістнадцяткове значення 7F.

Джерело: Android: як створити прозорий або непрозорий фон


3
насправді ідеальна 50% прозорість - 7F, а не 80;)
shinyuX

147

Якщо ви хочете додати 20% або 30% прозорості, вам слід попередньо встановити ще два символи до шістнадцяткового коду, наприклад, CC.

Примітка

android:background="#CCFF0088" в XML

де CC - значення альфа, FF - червоний фактор, 00 - зелений коефіцієнт, а 88 - синій коефіцієнт.

Код непрозорості:

Шістнадцяткові значення непрозорості

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

Ви також можете встановити непрозорість програмно, як:

yourView.getBackground().setAlpha(127);

Встановіть непрозорість від 0 (повністю прозора) до 255 (повністю непрозора). 127,5 - це рівно 50%.

Ви можете створити будь-який рівень прозорості за допомогою заданої формули. Якщо ви хочете наполовину прозорі:

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

А для 25% прозорості:

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

42

Використовуйте код нижче для чорного:

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

Тепер, якщо ви хочете використовувати непрозорість, тоді ви можете використовувати код нижче:

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

А нижче код непрозорості:

100% - ФФ

95% - F2

90% - Е6

85% - D9

80% - КК

75% - BF

70% - B3

65% - А6

60% - 99

55% - 8С

50% - 80

45% - 73

40% - 66

35% - 59

30% - 4D

25% - 40

20% - 33

15% - 26

10% - 1А

5% - 0D

0% - 00


27

Вже є заздалегідь визначена константа. Використовуйте Color.TRANSPARENT.


1
Використання константи має бути найкращим / найчистішим способом досягти цього! Але в цьому випадку значення параметра Color.TRANSPARENTвстановлюється 0x00000000(не очікуване повністю непрозоре 0xFF000000), тому залежно від того, як ви це зробите, ця константа насправді не може допомогти досягти прозорості! Ще +1 для рекомендування постійної!
Левіт

24

В Android вже є вбудований прозорий: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Але я думаю, ви можете зробити фон зображення, яке ви розміщуєте у WebView, прозорим, наприклад, прозорим PNG, а не фоном ImageView. Якщо власне зображення взагалі не проглядається, то фон ImageView не може бути видно через нього.


зображення прозоре ... це не було жодного фону ... я також намагався встановити фон перегляду зображень, як сказав hv ... але це не спрацювало ... plz help ...
mudit

Чи можете ви опублікувати ще деякі деталі, такі як посилання на зображення, яке ви використовуєте, та код та макет, який ви використовуєте?
інтригації


13

Спробуйте цей код :)

Його повністю прозорий шестигранний код - "# 00000000"


10

Або, замість цього, проаналізуйте ідентифікатор ресурсу з наступним кодом:

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

10

У своєму XML-файлі встановіть атрибут "Альфа"

як от

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

Ви можете надати будь-яке значення від 0,0 до 1,0 в десятковій частині, щоб застосувати необхідну прозорість. Наприклад, прозорість 0,5 ідеально підходить для відключеного компонента


5

Для тих, хто все ще стикається з цією проблемою, ви можете спробувати це
element.getBackground().setAlpha(0);


Я отримуюNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
ІгорГанапольський

1
@IgorGanapolsky: спробуйте подивитися, elementчи це нульовий об’єкт
SuicideSheep

5

Для повної прозорості використовуйте наступне:

#00000000

Коли я спробував з # 80000000, я отримав чорну прозору накладку, яку я не хочу. Спробуйте змінити перші дві цифри; він контролює рівень прозорості, як

#00000000
#10000000
#20000000
#30000000

ідеальний колір на прозорому темному
Najib Ahmed Puthawala

5

В Android Studio дуже просто регулювати колір і непрозорість за допомогою вбудованого інструменту:

Android Налаштування непрозорості кольорів


просто натисніть на нього. @PeterMortensen
PM Jayakrishnan


4

Ще один робочий варіант, який я натрапив - це встановити android:background="@null"


2

Ви також View.setAlpha(float)можете точно змінити видимість.

0 буде прозорим, 1 повністю видно. ;)


1
Це змінює альфа перегляду, а не його фон!
ІгорГанапольський

Тоді весь погляд буде прозорим, включаючи вміст / зображення в ньому, ваше налаштування альфа, що в цьому випадку неправильно. Користувач хоче, щоб зберегти прозорість зображення, а не змінити зображення на прозоре.
Харун Хаєм

2

Спробуйте використовувати наступний код. Це допоможе вам повністю або більше.

  1. .Xml-файл, призначений для використання цього коду для встановлення кольору тла:

    android:background="#000000"

    або

    android:background="#FFFFFF"

    Зображення тут

    Або ви також можете встановити це програмно.

  2. Також ви можете використовувати цей код програмно:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. Також цей код для настройки кольору фону також програмно:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Цей код той же програмно:

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

Колір залежить від вашого вибору, який колір ви хочете використовувати для прозорого. В основному використовують білий або #FFFFFF колір.

Щодо R.drawable.llabackground: Цей рядок коду відповідає вашому стилю фону, як щось особливе або інше за вашим призначенням. Ви також можете використовувати це.


2

Якщо ви використовуєте малювальний XML-образ, ви можете зробити його прозорим, як показано на малюнку нижче, або ви можете використовувати кольоровий код:

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

Введіть тут опис зображення


1

Визначення кольорів з інформацією про прозорість можуть бути у формі

#AARRGGBB або #ARGB .

Для повної прозорості можна використовувати і коротше значення: # 0000 .

Інші значення, наприклад:

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
Хоча цей код може допомогти вирішити проблему, він не пояснює, чому та / або як він відповідає на питання. Надання цього додаткового контексту значно покращило б його довгострокове значення. Будь ласка , змініть свій відповідь , щоб додати пояснення, в тому числі те , що застосовувати обмеження і допущення.
Toby Speight

0

Спробуйте це:

#aa000000

Для прозорості 000000 = чорний, ви можете змінити ці шість цифр на потрібний колір.


який ваш ресурс використовувати aa перед кольоровим шістнадцятком
Mina Fawzy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.