Cách tạo nền trong suốt 20% trên Android


Câu trả lời:


1038

Làm cho màu sắc có 80% trong kênh alpha. Ví dụ: để sử dụng màu đỏ #CCFF0000:

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

Trong ví dụ, CClà số thập lục phân cho 255 * 0.8 = 204. Lưu ý rằng hai chữ số thập lục phân đầu tiên là dành cho kênh alpha. Định dạng là #AARRGGBB, AAkênh alpha ở đâu, RRlà kênh màu đỏ, GGlà kênh màu xanh lá cây và BBlà kênh màu xanh.

Tôi giả định rằng 20% ​​trong suốt có nghĩa là 80% mờ đục. Nếu bạn có ý nghĩa khác, thay vì CCsử dụng 33đó là hệ thập lục phân cho 255 * 0.2 = 51.

Để tính giá trị phù hợp cho giá trị trong suốt alpha, bạn có thể làm theo quy trình này:

  1. Cho một tỷ lệ phần trăm trong suốt, ví dụ 20%, bạn biết giá trị phần trăm mờ là 80% (đây là 100-20=80)
  2. Phạm vi cho kênh alpha là 8 bit ( 2^8=256), có nghĩa là phạm vi đi từ 0 đến 255.
  3. Chiếu tỷ lệ phần trăm mờ vào phạm vi alpha, nghĩa là nhân phạm vi (255) với tỷ lệ phần trăm. Trong ví dụ này 255 * 0.8 = 204. Làm tròn đến số nguyên gần nhất nếu cần.
  4. Chuyển đổi giá trị thu được trong 3., ở cơ sở 10, thành thập lục phân (cơ sở 16). Bạn có thể sử dụng Google cho cái này hoặc bất kỳ máy tính nào. Sử dụng Google, nhập "204 đến hexa" và nó sẽ cung cấp cho bạn giá trị thập lục phân. Trong trường hợp này là nó 0xCC.
  5. Chuẩn bị giá trị thu được trong 4. đến màu mong muốn. Ví dụ, đối với màu đỏ, đó là FF0000, bạn sẽ có CCFF0000.

Bạn có thể xem tài liệu Android về màu sắc .


Đối với màu trắng với độ trong suốt, theo câu hỏi, sử dụng android:background="#CCFFFFFF".
gotwo

Làm thế nào để áp dụng quy tắc này cho một nền với hình ảnh?
dùng1090751

1517

Sử dụng mã dưới đây cho màu đen:

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

Bây giờ nếu tôi muốn sử dụng opacity thì bạn có thể sử dụng đoạn mã dưới đây:

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

Và bên dưới cho mã độ mờ: và tất cả mức độ mờ ở đây

Giá trị độ mờ Hex

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

Nếu bạn luôn quên mã nào để minh bạch thì bạn phải xem liên kết bên dưới và không phải lo lắng về việc nhớ bất cứ điều gì liên quan đến mã minh bạch: -

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

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

3
thấy điều này tôi đã sử dụng # 99ffffff và nó hoạt động tốt với tôi, cảm ơn
nawaab saab 30/1/2015

Làm thế nào để áp dụng quy tắc này cho một nền với hình ảnh?
dùng1090751

149

Bạn có thể quản lý độ mờ màu thay đổi 2 ký tự đầu tiên trong định nghĩa màu:

# 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
Điều này thêm gì vào câu trả lời hiện có?
Code-Apprentice

6
@ Code-Apprentice Tôi đoán câu trả lời này rất hữu ích khi bạn cần độ trong suốt cao hơn như 87% hoặc 54%, giống như những gì được đề cập trong tài
Bruce

5
Có, ngày hôm qua tôi có nhu cầu quản lý alpha 13% và tôi quyết định thêm kết quả tìm kiếm của mình vào chuỗi hữu ích này.
carlol

Điều gì sẽ xảy ra nếu tôi muốn làm cho một tuyến tính hoàn toàn trong suốt mà không có bất kỳ màu nào?
Si8

1
Tất cả các chế độ xem đều trong suốt theo mặc định, bạn có thể sử dụng chương trình mLinearLayout.setBackgroundColor theo chương trình (Color.TRANSPARENT); hoặc android: background = "@ android: color / trong suốt" trong xml của bạn nếu bạn phải ép buộc vì một số lý do (rõ ràng màu này không được kế thừa bởi các chế độ xem trẻ em)
carlol

106

Sử dụng màu có giá trị alpha như #33------và đặt nó làm nền của chỉnh sửa của bạn bằng thuộc tính XML android:background=" ".

  1. 0% (trong suốt) -> # 00 ở dạng hex
  2. 20% -> # 33
  3. 50% -> # 80
  4. 75% -> # C0
  5. 100% (mờ đục) -> #FF

255 * 0,2 = 51 → trong hex 33


91

Bạn có thể thử làm một cái gì đó như:

textView.getBackground().setAlpha(51);

Tại đây bạn có thể đặt độ mờ giữa 0 (hoàn toàn trong suốt) thành 255 (hoàn toàn mờ). Con số 51 chính xác là 20% bạn muốn.


17
@koti, vì textViewbiến của bạn là null.
yugidroid

giải pháp thanh lịch đẹp. Tôi có thể áp dụng điều này cho nền của danh sách khi tôi chọn nó - vì vậy tôi nhận được một số màu, nhưng nó không cạnh tranh với văn bản mục .. Rất tuyệt, cảm ơn!
Gene Bo

setAlpha (int) không được dùng trong setAlpha (float) trong đó 0 hoàn toàn trong suốt và 1 hoàn toàn mờ đục myImage.setAlpha (0.5f);
polmabri

@polmabri, không hẳn. myImage.setAlpha(0.5f);áp dụng alpha cho chính Chế độ xem nhưng những gì tôi hiển thị trong câu trả lời của mình đang được áp dụng cho nền có thể vẽ được của Chế độ xem.
yugidroid

Điều này có thể gây ra lỗi đồ họa! Sử dụng thận trọng và rất nhiều thử nghiệm.
Michael


32

Xem ảnh chụp màn hình

Tôi đã thực hiện ba lượt xem. Ở chế độ xem thứ nhất, tôi đặt màu đầy đủ (không có alpha), ở chế độ xem thứ hai, tôi đặt một nửa (0,5 alpha) màu và ở chế độ xem thứ ba, tôi đặt màu sáng (0,2 alpha).

Bạn có thể đặt bất kỳ màu nào và nhận màu bằng alpha bằng cách sử dụng mã dưới đây:

Tệp 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>

Tệp 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;
    }
}

Phiên bản 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))
}

Làm xong


31

Chúng tôi có thể làm cho minh bạch trong cách dis cũng.

Mã màu trắng - FFFFFF

20% trắng - # 33 FFFFFF

20% - 33

70% trắng - # B3 FFFFFF

70% - B3

Tất cả giá trị hex từ 100% đến 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
Câu trả lời tuyệt vời. Giữ nó lên
Tarun

22

Tất cả giá trị hex từ 100% đến 0% alpha, Bạn có thể đặt bất kỳ màu nào với các giá trị alpha được đề cập bên dưới. ví dụ: #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

Bây giờ Android Studio 3.3 và phiên bản mới hơn cung cấp tính năng sẵn có để thay đổi giá trị Alpha của màu,

Chỉ cần nhấp vào một màu trong trình chỉnh sửa studio Android và cung cấp giá trị Alphapercentage .

Để biết thêm thông tin xem hình ảnh dưới đây

nhập mô tả hình ảnh ở đây


18

Có một giá trị XML alphalấy giá trị gấp đôi.

API 11+phạm vi là từ 0fđến 1f(bao gồm), 0fnên trong suốt và 1fmờ đục:

  • android:alpha="0.0" đó là vô hình

  • android:alpha="0.5" nhìn xuyên qua

  • android:alpha="1.0" nhìn thấy đầy đủ

Đó là cách nó hoạt động.


1
điều đó sẽ làm cho toàn bộ bố cục bán trong suốt, bao gồm cả nội dung của nó
jack_the_beast

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

Alpha nằm trong khoảng từ 0 (trong suốt) đến 1 (mờ) trong API Android 11+


3

Xem mức độ phổ biến bên dưới textView bằng cách sử dụng này

     android:alpha="0.38"

nhập mô tả hình ảnh ở đây

XML

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

Tự động

btn.getBackground (). setAlpha (128); // 50% trong suốt

tv_name.getBackground (). setAlpha (128); // 50% trong suốt

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

Trong Kotlin, bạn có thể sử dụng alpha như thế này,

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

Kết quả giống như trong ảnh chụp màn hình này.20% trong suốt

Hy vọng điều này sẽ giúp bạn. Cảm ơn


1

Tôi biết, đó là một câu hỏi rất cũ.

Nếu bạn muốn sử dụng một giá trị màu, bạn cũng có thể sử dụng phiên bản ngắn của nó với #ARGB. Đâu Alà giá trị cho kênh alpha.

Trong trường hợp màu trắng, có các giá trị trong suốt sau:

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

Vì vậy, bạn có thể TextViewthêm dòng sau để minh bạch 20%:

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

0

Đây là một giải pháp lập trình từ câu trả lời của @Aromero để tính giá trị thập lục phân cho kênh alpha. :)

 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
Câu hỏi đã được gắn thẻ cho Android. Mã này không hỗ trợ Android.
Pawan

0

Hãy thử mã này :)

Mã hex hoàn toàn trong suốt - "# 00000000"


0

nếu bạn muốn làm cho màu trong suốt 50% trong kotlin,

val percentage = 50f/100 //50%
ColorUtils.setAlphaComponent(resources.getColor(R.color.whatEverColor), (percentage * 255).toInt())
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.