Як зробити фон на 20% прозорим на Android


Відповіді:


1038

Зробіть, щоб у альфа-каналі кольором було 80%. Наприклад, для червоного використання #CCFF0000:

<TextView
   ...
   android:background="#CCFF0000" />

У прикладі CC- шістнадцяткове число для 255 * 0.8 = 204. Зауважте, що перші дві шістнадцяткові цифри призначені для альфа-каналу. Формат #AARRGGBB, де AAальфа-канал, RRє червоний канал, GGзелений канал і BBсиній канал.

Я припускаю, що 20% прозорий означає 80% непрозорий. Якщо ви мали на увазі інший спосіб, замість того, щоб CCвикористовувати, 33який є шістнадцятковим для 255 * 0.2 = 51.

Для того, щоб обчислити належне значення для значення прозорості альфа, ви можете дотримуватися цієї процедури:

  1. Враховуючи відсоток прозорості, наприклад, 20%, ви знаєте, що значення непрозорого відсотка становить 80% (це 100-20=80)
  2. Діапазон для альфа-каналу становить 8 біт ( 2^8=256), тобто діапазон становить від 0 до 255.
  3. Проектуйте непрозорий відсоток на альфа-діапазон, тобто помножте діапазон (255) на відсоток. У цьому прикладі 255 * 0.8 = 204. Округніть до найближчого цілого числа, якщо потрібно.
  4. Перетворіть значення, отримане в 3., яке знаходиться в базі 10, у шістнадцяткове (основа 16). Ви можете використовувати Google для цього чи будь-якого калькулятора. У Google введіть "204 до шестигранника", і він дасть вам шістнадцяткове значення. В даному випадку це так 0xCC.
  5. Додайте значення, отримане в 4., до потрібного кольору. Наприклад, для червоного, який є у FF0000вас буде CCFF0000.

Ви можете подивитися документацію на Android щодо кольорів .


Для білого кольору з прозорістю, відповідно до питання, використовуйте android:background="#CCFFFFFF".
gotwo

Як застосувати це правило для фону з зображенням?
користувач1090751

1517

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

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

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

 <color name="black">#99000000</color> <!-- 99 is for alpha and others pairs zero's are for R G B -->

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

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

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

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

https://github.com/duggu-hcd/TransparentColorCode

textviewHeader.setTextColor(Color.parseColor(ColorTransparentUtils.transparentColor(R.color.border_color,10)));

3
побачивши це, я використав # 99ffffff, і він добре працював для мене, дякую
nawaab saab

Як застосувати це правило для фону з зображенням?
користувач1090751

149

Ви можете керувати непрозорістю кольору, змінюючи перші два символи у визначенні кольору:

# 99 000000

100%  FF
99%  FC
98%  FA
97%  F7
96%  F5
95%  F2
94%  F0
93%  ED
92%  EB
91%  E8

90%  E6
89%  E3
88%  E0
87%  DE
86%  DB
85%  D9
84%  D6
83%  D4
82%  D1
81%  CF

80%  CC
79%  C9
78%  C7
77%  C4
76%  C2
75%  BF
74%  BD
73%  BA
72%  B8
71%  B5

70%  B3
69%  B0
68%  AD
67%  AB
66%  A8
65%  A6
64%  A3
63%  A1
62%  9E
61%  9C

60%  99
59%  96
58%  94
57%  91
56%  8F
55%  8C
54%  8A
53%  87
52%  85
51%  82

50%  80
49%  7D
48%  7A
47%  78
46%  75
45%  73
44%  70
43%  6E
42%  6B
41%  69

40%  66
39%  63
38%  61
37%  5E
36%  5C
35%  59
34%  57
33%  54
32%  52
31%  4F

30%  4D
29%  4A
28%  47
27%  45
26%  42
25%  40
24%  3D
23%  3B
22%  38
21%  36

20%  33
19%  30
18%  2E
17%  2B
16%  29
15%  26
14%  24
13%  21
12%  1F
11%  1C

10%  1A
9%  17
8%  14
7%  12
6%  0F
5%  0D
4%  0A
3%  08
2%  05
1%  03
0%  00 

1
Що це додає до існуючих відповідей?
Код-учень

6
@ Code-Apprentice Я думаю, що ця відповідь корисна, коли вам потрібна більш дрібнозерниста прозорість, наприклад 87% або 54%, як ті, що згадуються у material.google.com/style/color.html#color-color-schemes
Брюс,

5
Так, вчора мені випала потреба керувати альфа 13%, і я вирішив додати свій результат пошуку до цієї корисної теми.
carlol

Що робити, якщо я хотів зробити LinearLayout повністю прозорим без будь-якого кольору?
Si8

1
Усі перегляди прозорі за замовчуванням, ви можете використовувати програмно mLinearLayout.setBackgroundColor (Color.TRANSPARENT); або android: background = "@ android: color / transparent" у вашому xml, якщо вам доведеться змусити його з якихось причин (очевидно, цей колір не успадковується дитячими поглядами)
carlol

106

Використовуйте колір із значенням альфа, як-от #33------, і встановіть його як фон редагуванняText за допомогою атрибута XML android:background=" ".

  1. 0% (прозоро) -> # 00 у шістнадцятковій кількості
  2. 20% -> №33
  3. 50% -> # 80
  4. 75% -> # С0
  5. 100% (непрозорий) -> #FF

255 * 0,2 = 51 → в шестнадцять 33


91

Ви можете спробувати зробити щось на кшталт:

textView.getBackground().setAlpha(51);

Тут ви можете встановити непрозорість від 0 (повністю прозора) до 255 (повністю непрозора). 51 - це саме 20%, які ви хочете.


17
@koti, тому що ваша textViewзмінна є null.
yugidroid

приємне елегантне рішення. Я можу застосувати це до фону елемента списку, коли я його вибираю - тому я отримую колір, але він не конкурує з текстом елемента. Дуже круто, дякую!
Джин Бо

setAlpha (int) застаріло на користь setAlpha (float), де 0 повністю прозорий і 1 повністю непрозорий myImage.setAlpha (0,5f);
polmabri

@polmabri, не дуже. myImage.setAlpha(0.5f);застосовує альфа до самого Перегляду, але те, що я показую у своїй відповіді, застосовується до фонового режиму Перегляду, що малюється.
yugidroid

Це може спричинити графічні помилки! Використовуйте обережно і багато тестування.
Майкл

74

В Android Studio є вбудований інструмент для налаштування кольору та значення альфа / непрозорості :

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


32

Дивіться скріншот

Я взяв три погляди. У першому поданні я встановлюю повний (без альфа) колір, на другому - половину (0,5 альфа), а на третьому - світлий (0,2 альфа).

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

Файл Activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:gravity = "center"
    android:orientation = "vertical"
    tools:context = "com.example.temp.MainActivity" >

    <View
        android:id = "@+id/fullColorView"
        android:layout_width = "100dip"
        android:layout_height = "100dip" />

    <View
        android:id = "@+id/halfalphaColorView"
        android:layout_width = "100dip"
        android:layout_height = "100dip"
        android:layout_marginTop = "20dip" />

    <View
        android:id = "@+id/alphaColorView"
        android:layout_width = "100dip"
        android:layout_height = "100dip"
        android:layout_marginTop = "20dip" />

</LinearLayout>

Файл MainActivity.java

public class MainActivity extends Activity {

    private View fullColorView, halfalphaColorView, alphaColorView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fullColorView = (View)findViewById(R.id.fullColorView);
        halfalphaColorView = (View)findViewById(R.id.halfalphaColorView);
        alphaColorView = (View)findViewById(R.id.alphaColorView);

        fullColorView.setBackgroundColor(Color.BLUE);
        halfalphaColorView.setBackgroundColor(getColorWithAlpha(Color.BLUE, 0.5f));
        alphaColorView.setBackgroundColor(getColorWithAlpha(Color.BLUE, 0.2f));
    }


    private int getColorWithAlpha(int color, float ratio) {
        int newColor = 0;
        int alpha = Math.round(Color.alpha(color) * ratio);
        int r = Color.red(color);
        int g = Color.green(color);
        int b = Color.blue(color);
        newColor = Color.argb(alpha, r, g, b);
        return newColor;
    }
}

Версія Котліна:

private fun getColorWithAlpha(color: Int, ratio: Float): Int {
  return Color.argb(Math.round(Color.alpha(color) * ratio), Color.red(color), Color.green(color), Color.blue(color))
}

Зроблено


30

Ми також можемо зробити прозорими і диск.

Код білого кольору - FFFFFF

20% білого - # 33 FFFFFF

20% - 33

70% білого кольору - # B3 FFFFFF

70% - В3

Усі значення шістнадцятки від 100% до 0%

100% - FF, 99% - FC, 98% - FA, 97% - F7, 96% - F5, 95% - F2, 94% - F0, 93% - ED, 92% - EB, 91% - E8, 90% - E6, 89% - E3, 88% - E0, 87% - DE, 86% - DB, 85% - D9, 84% - D6, 83% - D4, 82% - D1, 81% - CF, 80% - CC, 79% - C9, 78% - C7, 77% - C4, 76% - C2, 75% - BF, 74% - BD, 73% - BA, 72% - B8, 71% - B5, 70% - B3 , 69% - B0 68% - AD 67% - AB, 66% - A8, 65% - A6, 64% - A3, 63% - A1, 62% - 9E, 61% - 9C, 60% - 99, 59% - 96, 58% - 94, 57% - 91, 56% - 8F, 55% - 8C, 54% - 8A, 53% - 87, 52% - 85, 51% - 82, 50% - 80, 49% - 7D, 48% - 7A, 47% - 78, 46% - 75, 45% - 73, 44% - 70, 43% - 6E, 42% - 6B, 41% - 69, 40% - 66, 39% - 63, 38% - 61, 37% - 5E, 36% - 5C, 35% - 59, 34% - 57, 33% - 54, 32% - 52, 31% - 4F, 30% - 4D, 29% - 4A, 28% - 47, 27% - 45, 26% - 42, 25% - 40, 24% - 3D, 23% - 3B, 22% - 38, 21% - 36, 20% - 33 , 19% - 30, 18% - 2E, 17% - 2B, 16% - 29, 15% - 26, 14% - 24, 13% - 21, 12% - 1F, 11% - 1C, 10% - 1А, 9% - 17, 8% - 14, 7% - 12, 6% - 0F, 5% - 0D, 4% - 0A, 3% - 08, 2% - 05, 1% - 03, 0% - 00


1
Дивовижна відповідь. Так тримати.
Тарун

22

Всі шістнадцяткові значення від 100% до 0% альфа. Ви можете встановити будь-який колір зі значеннями альфа, зазначеними нижче. наприклад #FAFFFFFF (ARRGGBB)

100%  FF
99%  FC
98%  FA
97%  F7
96%  F5
95%  F2
94%  F0
93%  ED
92%  EB
91%  E8
90%  E6
89%  E3
88%  E0
87%  DE
86%  DB
85%  D9
84%  D6
83%  D4
82%  D1
81%  CF
80%  CC
79%  C9
78%  C7
77%  C4
76%  C2
75%  BF
74%  BD
73%  BA
72%  B8
71%  B5
70%  B3
69%  B0
68%  AD
67%  AB
66%  A8
65%  A6
64%  A3
63%  A1
62%  9E
61%  9C
60%  99
59%  96
58%  94
57%  91
56%  8F
55%  8C
54%  8A
53%  87
52%  85
51%  82
50%  80
49%  7D
48%  7A
47%  78
46%  75
45%  73
44%  70
43%  6E
42%  6B
41%  69
40%  66
39%  63
38%  61
37%  5E
36%  5C
35%  59
34%  57
33%  54
32%  52
31%  4F
30%  4D
29%  4A
28%  47
27%  45
26%  42
25%  40
24%  3D
23%  3B
22%  38
21%  36
20%  33
19%  30
18%  2E
17%  2B
16%  29
15%  26
14%  24
13%  21
12%  1F
11%  1C
10%  1A
9%  17
8%  14
7%  12
6%  0F
5%  0D
4%  0A
3%  08
2%  05
1%  03
0%  00

19

Тепер Android Studio 3.3 та пізніша версія надають вбудовану функцію для зміни значення кольору Alpha ,

Просто натисніть на колір в редакторі студії Android і введіть значення Alpha вpercentage .

Для отримання додаткової інформації дивіться нижче зображення

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


18

Існує значення XML, alphaяке приймає подвійні значення.

Так як API 11+цей діапазон від 0fдо 1f(включно), 0fбудучи прозорим і 1fбудучи непрозорою:

  • android:alpha="0.0" це невидимо

  • android:alpha="0.5" просочуватися

  • android:alpha="1.0" повно видно

Ось як це працює.


1
це зробить весь макет напівпрозорим, включаючи його вміст
jack_the_beast

7
<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:alpha="0.9"
        />

Альфа коливається між 0 (прозорий) та 1 (непрозорий) в Android API 11+


3

Дивіться Популярність нижче textView, використовуючи це

     android:alpha="0.38"

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

XML

android:color="#3983BE00"    // Partially transparent sky blue

Динамічно

btn.getBackground (). setAlpha (128); // 50% прозорий

tv_name.getBackground (). setAlpha (128); // 50% прозорий

Where the INT ranges from 0 (fully transparent) to 255 (fully opaque).


  <TextView
            style="@style/TextAppearance.AppCompat.Caption"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:alpha="0.38"
            android:gravity="start"
            android:textStyle="bold"
            tools:text="1994|EN" />

android: alpha = "0,38"

Text View alpha property set 0.38 to your textView visibility is faid 

3

У Котліні ви можете використовувати такий альфа,

   //Click on On.//
    view.rel_on.setOnClickListener{
        view.rel_off.alpha= 0.2F
        view.rel_on.alpha= 1F

    }

    //Click on Off.//
    view.rel_off.setOnClickListener {
        view.rel_on.alpha= 0.2F
        view.rel_off.alpha= 1F
    }

Результат схожий на знімки екрана.20% прозорий

Сподіваюся, це допоможе вам. Дякую


1

Я знаю, це дуже старе питання.

Якщо ви хочете використовувати значення кольору, ви також можете використовувати коротку версію цього параметра #ARGB. Де Aзначення альфа-каналу.

У разі білого кольору є такі значення прозорості:

#FFFF  -     0%
#EFFF  -   6,7%
#DFFF  -  13,3%
#CFFF  -  20,0%
#BFFF  -  26,7%
#AFFF  -  33,3%
#9FFF  -  40,0%
#FFF8  -  46,7%
#7FFF  -  53,3%
#6FFF  -  60,0%
#5FFF  -  66,7%
#4FFF  -  73,3%
#3FFF  -  80,0%
#2FFF  -  86,7%
#1FFF  -  93,3%
#0FFF  - 100,0%

Тож ви можете TextViewдодати наступний рядок для прозорості на 20%:

<TextView
    android:background="#CFFF"
    ... />

0

Ось програмне рішення з відповіді @Aromero для обчислення шістнадцяткового значення для альфа-каналу. :)

 public static void main(String[] args) throws Exception {
    final Scanner scanner = new Scanner(System.in);
    int transPerc;
    float fPerc;
    System.out.println("Enter the transparency percentage without % symbol:");
    while((transPerc=scanner.nextInt())>=0 && transPerc <=100){
        fPerc = (float) transPerc / 100;
        transPerc = Math.round(255 * fPerc);
        System.out.println("= " + Integer.toHexString(transPerc));
        System.out.print("another one please : ");
    }
    scanner.close();
}

3
Питання позначено для Android. Цей код не підтримує Android.
Паван

0

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

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


0

якщо ви хочете зробити колір на 50% прозорим у котліні,

val percentage = 50f/100 //50%
ColorUtils.setAlphaComponent(resources.getColor(R.color.whatEverColor), (percentage * 255).toInt())
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.