Jak sprawić, by tło było 20% przezroczyste na Androidzie


Odpowiedzi:


1038

Upewnij się, że kolor ma 80% w kanale alfa. Na przykład do użycia czerwonego #CCFF0000:

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

W tym przykładzie CCjest liczbą szesnastkową dla 255 * 0.8 = 204. Zauważ, że pierwsze dwie cyfry szesnastkowe odnoszą się do kanału alfa. Format to #AARRGGBB, gdzie AAjest kanał alfa, RRczerwony kanał, GGzielony kanał i BBniebieski kanał.

Zakładam, że 20% przezroczystości oznacza 80% nieprzezroczystości. Jeśli miałeś na myśli inny sposób, zamiast CCużycia, 33który jest szesnastkowy 255 * 0.2 = 51.

Aby obliczyć prawidłową wartość przezroczystości alfa, możesz wykonać następującą procedurę:

  1. Biorąc pod uwagę procent przezroczystości, na przykład 20%, wiesz, że nieprzezroczysta wartość procentowa wynosi 80% (to jest 100-20=80)
  2. Zakres dla kanału alfa wynosi 8 bitów (2^8=256 ), co oznacza, że ​​zakres wynosi od 0 do 255.
  3. Wyświetl nieprzezroczysty procent w zakresie alfa, to znaczy pomnóż zakres (255) przez procent. W tym przykładzie 255 * 0.8 = 204. W razie potrzeby zaokrąglij do najbliższej liczby całkowitej.
  4. Przelicz wartość uzyskaną w 3., która jest w podstawie 10, na szesnastkową (podstawa 16). Możesz użyć Google do tego lub dowolnego kalkulatora. Używając Google, wpisz „204 do hexa”, a otrzymasz wartość szesnastkową. W tym przypadku tak jest 0xCC.
  5. Dodaj wartość uzyskaną w 4. do żądanego koloru. Na przykład dla czerwonego, czyli FF0000będziesz miał CCFF0000.

Kolory można znaleźć w dokumentacji systemu Android .


Dla koloru białego z przezroczystością, zgodnie z pytaniem, użyj android:background="#CCFFFFFF".
gotwo

Jak zastosować tę regułę do tła z obrazem?
user1090751

1517

Użyj czarnego kodu poniżej:

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

Teraz, jeśli chcę użyć krycia, możesz użyć poniższego kodu:

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

A poniżej kod krycia: i cały poziom krycia tutaj

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

Jeśli zawsze zapominasz, jaki kod jest przezroczysty, musisz zobaczyć poniższy link i nie martwić się, że pamiętasz cokolwiek dotyczącego przezroczystego kodu: -

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

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

3
widząc to, użyłem # 99ffffff i zadziałało to dla mnie dobrze, dzięki
nawaab saab 30.01.2015

Jak zastosować tę regułę do tła z obrazem?
user1090751

149

Możesz zarządzać kryciem kolorów, zmieniając pierwsze 2 znaki w definicji koloru:

# 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
Co to dodaje do istniejących odpowiedzi?
Code-Apprentice

6
@ Code-Apprentice Myślę, że ta odpowiedź jest przydatna, gdy potrzebujesz bardziej drobnoziarnistej przezroczystości, takiej jak 87% lub 54%, jak te wymienione w material.google.com/style/color.html#color-color-schemes
Bruce

5
Tak, wczoraj musiałem zarządzać 13% alfa i postanowiłem dodać mój wynik wyszukiwania do tego użytecznego wątku.
carlol,

Co jeśli chciałbym, aby LinearLayout był całkowicie przezroczysty bez żadnego koloru?
Si8,

1
Wszystkie widoki są domyślnie przezroczyste, można użyć programowo mLinearLayout.setBackgroundColor (Color.TRANSPARENT); lub android: tło = "@ android: kolor / przezroczysty" w swoim pliku xml, jeśli musisz go z jakiegoś powodu wymusić (oczywiście ten kolor nie jest dziedziczony przez widoki dziecka)
carlol

106

Użyj koloru o wartości alfa podobnej #33------i ustaw go jako tło tekstu editText za pomocą atrybutu XML android:background=" ".

  1. 0% (przezroczysty) -> # 00 w systemie szesnastkowym
  2. 20% -> # 33
  3. 50% -> # 80
  4. 75% -> # C0
  5. 100% (nieprzezroczysty) -> #FF

255 * 0,2 = 51 → w kodzie szesnastkowym 33


91

Możesz spróbować zrobić coś takiego:

textView.getBackground().setAlpha(51);

Tutaj możesz ustawić krycie od 0 (całkowicie przezroczysty) do 255 (całkowicie nieprzezroczysty). 51 to dokładnie 20%, czego chcesz.


17
@koti, ponieważ twoja textViewzmienna to null.
yugidroid

ładne eleganckie rozwiązanie. Mogę zastosować to do tła elementu listy, gdy go wybieram - więc otrzymuję trochę koloru, ale nie konkuruje z tekstem elementu. Bardzo fajnie, dziękuję!
Gene Bo,

setAlpha (int) jest przestarzałe na korzyść setAlpha (liczba zmiennoprzecinkowa), gdzie 0 jest w pełni przezroczyste, a 1 jest całkowicie nieprzezroczyste myImage.setAlpha (0.5f);
polmabri,

@polmabri, niezupełnie. myImage.setAlpha(0.5f);stosuje alfa do samego Widoku, ale to, co pokazuję w mojej odpowiedzi, jest stosowane do rysowania tła Widoku.
yugidroid

Może to powodować błędy graficzne! Używaj z rozwagą i dużą ilością testów.
Michael


32

Zobacz zrzut ekranu

Zrobiłem trzy widoki. W pierwszym widoku ustawiam pełny kolor (bez alfa), w drugim widoku ustawiam kolor w połowie (0,5 alfa), a w trzecim widoku ustawiam jasny kolor (0,2 alfa).

Możesz ustawić dowolny kolor i uzyskać kolor za pomocą alfa, używając poniższego kodu:

Plik 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>

Plik 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;
    }
}

Wersja Kotlin:

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))
}

Gotowy


30

Możemy również uczynić przejrzystym w nieprzystosowany sposób.

Kod koloru białego - FFFFFF

20% bieli - # 33 FFFFFF

20% - 33

70% bieli - # B3 FFFFFF

70% - B3

Wszystkie wartości szesnastkowe od 100% do 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% - 1A, 9% - 17, 8% - 14, 7% - 12, 6% - 0F, 5% - 0D, 4% - 0A, 3% - 08, 2% - 05, 1% - 03, 0% - 00


1
Niesamowita odpowiedź. Tak trzymaj.
Tarun

22

Wszystkie wartości szesnastkowe od 100% do 0% alfa. Można ustawić dowolny kolor z wartościami alfa wymienionymi poniżej. np. #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

Teraz Android Studio 3.3 i nowsze wersje mają wbudowaną funkcję zmiany wartości alfa koloru,

Wystarczy kliknąć kolor w edytorze studia Android i podać wartość alfapercentage .

Aby uzyskać więcej informacji, zobacz poniższy obrazek

wprowadź opis zdjęcia tutaj


18

Istnieje wartość XML, alphaktóra przyjmuje podwójne wartości.

Ponieważ API 11+zakres jest od 0fdo 1f(włącznie), 0fbycie transparentnym i 1fnieprzejrzystym:

  • android:alpha="0.0" to jest niewidoczne

  • android:alpha="0.5" widzieć przez

  • android:alpha="1.0" w pełni widoczne

Tak to działa.


1
dzięki czemu cały układ będzie półprzezroczysty, w tym jego zawartość
jack_the_beast

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

Zakres alfa wynosi od 0 (przezroczysty) do 1 (nieprzezroczysty) w Android API 11+


3

Zobacz popularność poniżej tekstu Zobacz, używając tego

     android:alpha="0.38"

wprowadź opis zdjęcia tutaj

XML

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

Dynamicznie

btn.getBackground (). setAlpha (128); // 50% przezroczystości

tv_name.getBackground (). setAlpha (128); // 50% przezroczystości

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: alfa = „0,38”

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

3

W Kotlinie można użyć takiego alfa,

   //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
    }

Wynik jest jak na tych zrzutach ekranu.20% przezroczysty

Mam nadzieję, że to ci pomoże


1

Wiem, to bardzo stare pytanie.

Jeśli chcesz użyć wartości koloru, możesz również użyć jej krótkiej wersji za pomocą #ARGB. Gdzie Ajest wartość dla kanału alfa.

W przypadku koloru białego istnieją następujące wartości przezroczystości:

#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%

Możesz więc TextViewdodać następujący wiersz dla przejrzystości 20%:

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

0

Oto programowe rozwiązanie z odpowiedzi @Aromero do obliczenia wartości szesnastkowej dla kanału alfa. :)

 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
Pytanie zostało oznaczone dla Androida. Ten kod nie obsługuje Androida.
Pawan

0

Wypróbuj ten kod :)

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


0

jeśli chcesz sprawić, by kolor był w 50% przezroczysty w kotlinie,

val percentage = 50f/100 //50%
ColorUtils.setAlphaComponent(resources.getColor(R.color.whatEverColor), (percentage * 255).toInt())
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.