Встановіть прозорий фон перегляду зображень на 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.