首页 文章

如何在Android上使背景20%透明

提问于
浏览
521

如何在背景中有颜色(即白色)的情况下使背景为约20%透明(不完全透明)?

14 回答

  • 0

    使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透明度值的正确值,您可以按照以下步骤操作:

    • 给定透明度百分比,例如20%,您知道不透明百分比值为80%(这是 100-20=80

    • alpha通道的范围是8位( 2^8=256 ),表示范围从0到255 .

    • 将不透明百分比投影到alpha范围内,即将范围(255)乘以百分比 . 在这个例子中 255 * 0.8 = 204 . 如果需要,舍入到最接近的整数 .

    • 将在3.中获得的值(基数为10)转换为十六进制(基数为16) . 您可以将Google用于此计算器或任何计算器 . 使用Google键入"204 to hexa",它将为您提供十六进制值 . 在这种情况下,它是 0xCC .

    • 将4.中获得的值预先添加到所需的颜色 . 例如,对于红色,即 FF0000 ,您将拥有 CCFF0000 .

    你可以看一下Android documentation for colors .

  • 112

    使用以下代码为黑色:

    <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.transparentColor10(R.color.border_color)));
    
  • 1

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

    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
    
  • 6

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

    • 0%(透明) - >十六进制#00

    • 20% - >#33

    • 50% - >#80

    • 75% - >#C0

    • 100%(不透明) - > #FF

    255 * 0.2 = 51 → in hex 33

  • 1330

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

    textView.getBackground().setAlpha(51);
    

    在这里,您可以将不透明度设置为0(完全透明)到255(完全不透明) . 51正好是你想要的20% .

  • 16

    In Android Studio there is a built-in tool to adjust the color and alpha/opacity value

    Android Adjust Color Opacity

  • 25

    See screenshot

    我有三个观点 . 在第一个视图中,我设置了完整(无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 version:

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

    Done

  • 15

    有一个XML值 alpha ,它取双倍值 .

    API 11+ 开始,范围从 0f1f (包括), 0f 是透明的, 1f 是不透明的:

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

    • android:alpha="0.5" 透视

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

    这就是它的工作原理 .

  • 1

    所有十六进制值从100%到0%alpha,您可以使用下面提到的alpha值设置任何颜色 . 例如#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
    
  • 935
    <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:alpha="0.9"
            />
    

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

  • 94

    请参阅textView下面的Popularity使用此功能

    android:alpha="0.38"
    

    enter image description here

    XML

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

    Dynamically

    btn.getBackground().setAlpha(128); // 50% transparent

    tv_name.getBackground().setAlpha(128); // 50% transparent

    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
    
  • 59

    我们也可以这样透明化 .

    白色代码 - FFFFFF

    70%白色 - #B3FFFFFF .

    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

  • 0

    这是来自@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();
    }
    
  • 77

    Try this code :)

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

相关问题