【问题标题】:How to make a background 20% transparent on Android如何在 Android 上使背景透明 20%
【发布时间】:2012-07-02 09:53:29
【问题描述】:

如何使Textview 的背景大约透明 20%(不是完全透明),而背景中有颜色(即白色)?

【问题讨论】:

标签: android transparency textview


【解决方案1】:

使用下面的黑色代码:

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

现在如果我想使用不透明度,那么您可以使用以下代码:

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

下面是不透明代码:和all opacity level here

十六进制不透明度值

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

【讨论】:

  • 看到这个我用了#99ffffff,对我来说效果很好,谢谢
  • 如何将此规则应用于带图像的背景?
  • 需要注意的是这些值是透明度值,而不是不透明度值。
  • 我是唯一一个对透明度是前两位数字感到困扰的人吗?应该是最后两个……
【解决方案2】:

使颜色在 Alpha 通道中有 80%。例如,对于红色使用#CCFF0000

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

在示例中,CC255 * 0.8 = 204 的十六进制数。请注意,前两个十六进制数字用于 Alpha 通道。格式为#AARRGGBB,其中AA为alpha通道,RR为红色通道,GG为绿色通道,BB为蓝色通道。

我假设 20% 透明意味着 80% 不透明。如果你的意思是另一种方式,而不是 CC 使用 33 这是 255 * 0.2 = 51 的十六进制。

为了计算 Alpha 透明度值的正确值,您可以按照以下步骤操作:

  1. 给定透明度百分比,例如 20%,您知道不透明百分比值为 80%(这是100-20=80
  2. Alpha 通道的范围是 8 位 (2^8=256),这意味着范围是 0 到 255。
  3. 将不透明百分比投影到 alpha 范围内,即将范围 (255) 乘以百分比。在这个例子中255 * 0.8 = 204。如果需要,四舍五入到最接近的整数。
  4. 将 3. 中获得的值(以 10 为底)转换为十六进制(以 16 为底)。你可以使用谷歌来计算这个或任何计算器。使用谷歌,输入“204 to hexa”,它会给你十六进制值。在这种情况下,它是0xCC
  5. 将 4. 中获得的值添加到所需的颜色。例如,对于红色,即FF0000,您将拥有CCFF0000

你可以看看Android documentation for colors

【讨论】:

  • 对于具有透明度的 white 颜色,根据问题,使用android:background="#CCFFFFFF"
  • 如何将此规则应用于带图像的背景?
【解决方案3】:

您可以通过更改颜色定义中的前 2 个字符来管理颜色不透明度:

#99000000

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 

【讨论】:

  • 这对现有答案有什么好处?
  • @Code-Apprentice 我想这个答案在您需要更细粒度的透明度(如 87% 或 54%)时很有用,就像在 material.google.com/style/color.html#color-color-schemes 中提到的那样。
  • 是的,昨天我需要管理 13% 的 alpha,我决定将我的搜索结果添加到这个有用的线程中。
  • 如果我想让一个 LinearLayout 完全透明,没有任何颜色怎么办?
  • 默认情况下所有视图都是透明的,您可以通过编程方式使用 mLinearLayout.setBackgroundColor(Color.TRANSPARENT);或 android:background="@android:color/transparent" 在你的 xml 中,如果你因为某些原因不得不强制它(显然这个颜色不被子视图继承)
【解决方案4】:

使用带有 alpha 值的颜色,例如 #33------,并使用 XML 属性 android:background=" " 将其设置为 editText 的背景。

  1. 0%(透明)-> #00(十六进制)
  2. 20% -> #33
  3. 50% -> #80
  4. 75% -> #C0
  5. 100%(不透明)->#FF

255 * 0.2 = 51 → 十六进制 33

【讨论】:

    【解决方案5】:

    您可以尝试执行以下操作:

    textView.getBackground().setAlpha(51);
    

    您可以在此处将不透明度设置为 0(完全透明)到 255(完全不透明)之间。 51 正是您想要的 20%。

    【讨论】:

    • @koti,因为您的 textView 变量是 null
    • 不错的优雅解决方案。当我选择它时,我可以将它应用于列表项背景 - 所以我得到了一些颜色,但它不会与项目文本竞争。非常酷,谢谢!
    • setAlpha(int) 已弃用,取而代之的是 setAlpha(float),其中 0 表示完全透明,1 表示完全不透明 myImage.setAlpha(0.5f);
    • @polmabri,不是真的。 myImage.setAlpha(0.5f); 将 alpha 应用于 View 本身,但我在答案中显示的内容正在应用于 View 的背景可绘制对象。
    • 这可能会导致图形错误!谨慎使用并进行大量测试。
    【解决方案6】:

    在 Android Studio 中有一个内置工具可以调整颜色和 alpha/opacity 值

    举例说明:
    https://devdeeds.com/how-to-add-custom-color-to-views-in-xml-android-studio-ide/

    【讨论】:

      【解决方案7】:

      我们也可以用dis的方式透明化。

      白色代码 - FFFFFF

      20% 白色 - #33FFFFFF

      20% — 33

      70% 白色 - #B3FFFFFF

      70% — B3

      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% —** **1A**,
      9% — 17,
      8% — 14,
      7% — 12,
      6% — 0F,
      5% — 0D,
      4% — 0A,
      3% — 08,
      2% — 05,
      1% — 03,
      **0% —** **00**
      

      【讨论】:

      • 惊人的答案。坚持下去。
      • 图表非常好用!
      【解决方案8】:

      我采取了三种观点。在第一个视图中我设置了全色(无 alpha),在第二个视图中我设置了半色(0.5 alpha),在第三个视图中我设置了浅色(0.2 alpha)。

      您可以使用以下代码设置任何颜色并使用 alpha 获取颜色:

      文件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;
          }
      }
      

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

      完成

      【讨论】:

        【解决方案9】:

        从 100% 到 0% alpha 的所有十六进制值,您可以使用下面提到的 alpha 值设置任何颜色。例如#FAFFFFFF(AARRGGBB)

        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
        

        【讨论】:

          【解决方案10】:

          现在 Android Studio 3.3 及更高版本提供了一个内置功能来更改颜色的 Alpha 值,

          只需在 Android Studio 编辑器中单击一种颜色,然后在 percentage 中提供 Alpha 值。

          更多信息见下图

          【讨论】:

            【解决方案11】:

            有一个 XML 值 alpha 采用双精度值。

            由于API 11+,范围从0f1f(含),0f 是透明的,1f 是不透明的:

            • android:alpha="0.0" 那是不可见的

            • android:alpha="0.5"透视

            • android:alpha="1.0"完全可见

            这就是它的工作原理。

            【讨论】:

            • 这将使整个布局半透明,包括它的内容
            【解决方案12】:
            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:alpha="0.9"
                    />
            

            在 Android API 11+ 中,Alpha 范围介于 0(透明)和 1(不透明)之间

            【讨论】:

              【解决方案13】:

              如果你想在 kotlin 中使颜色 50% 透明,

              val percentage = 50f/100 //50%
              ColorUtils.setAlphaComponent(resources.getColor(R.color.whatEverColor), (percentage * 255).toInt())
              

              【讨论】:

                【解决方案14】:

                使用此查看 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 
                

                【讨论】:

                  【解决方案15】:

                  在 Kotlin 中,您可以像这样使用 alpha,

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

                  结果就像这个屏幕截图一样。

                  希望对你有帮助。谢谢

                  【讨论】:

                    【解决方案16】:

                    我知道,这是一个非常古老的问题。

                    如果您想使用颜色值,您也可以使用带有#ARGB 的简短版本。其中A 是 Alpha 通道的值。

                    如果是白色,则有以下透明度值:

                    #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"
                        ... />
                    

                    【讨论】:

                      【解决方案17】:

                      我建议使用alpha 属性。

                      <TextView
                         android:alpha="0.8" />
                      

                      或者现在您可以使用selector。在colors 包中创建background_color_25.xml

                      <?xml version="1.0" encoding="utf-8"?>
                      <selector xmlns:android="http://schemas.android.com/apk/res/android">
                          <item android:alpha="0.8" android:color="@color/background_color" />
                      </selector>
                      

                      这里是用法:

                      <TextView
                         android:background="@color/background_color_25" />
                      

                      【讨论】:

                        【解决方案18】:

                        这是来自@Aromero 的答案的编程解决方案,用于计算 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();
                        }
                        

                        【讨论】:

                        • 该问题已被标记为 Android。此代码不支持 Android。
                        【解决方案19】:

                        试试这个代码 :)

                        它是一个完全透明的十六进制代码-“#00000000”

                        【讨论】:

                          猜你喜欢
                          • 2021-01-07
                          • 1970-01-01
                          • 2022-11-15
                          • 2022-08-16
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2020-09-18
                          相关资源
                          最近更新 更多