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

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

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

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

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

我假设20%透明意味着80%不透明。 如果你的意思是另一种方式,而不是CC使用33 ,这是hex的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. 将基数为10的3中获得的值转换为hex(基数为16)。 你可以使用谷歌这个或任何计算器。 使用Google,input“204到hexa”,它会给你hex值。 在这种情况下,它是0xCC
  5. 将4.中获得的值加上所需的颜色。 例如,对于红色,这是FF0000 ,你将有CCFF0000

你可以看一下Android文档的颜色 。

使用下面的黑色代码:

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

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

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

以下为不透明代码:

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 

使用像#33------这样的alpha值的颜色,并使用XML属性android:background=" "将其设置为editText的android:background=" "

  1. 0%(透明) – >#00(hex)
  2. 20% – >#33
  3. 50% – >#80
  4. 75% – >#C0
  5. 100%(不透明) – > #FF

255 * 0.2 = 51→在hex33

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

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 

你可以尝试做一些事情:

 textView.getBackground().setAlpha(51); 

在这里你可以设置0(完全透明)到255(完全不透明)之间的不透明度。 51就是你想要的20%。

在Android Studio中有一个内置的工具来调整颜色和alpha /不透明度值

Android调整颜色不透明度

看截图

我有三个意见。 在第一个视图中,我设置了完整(无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)); } public static 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; } } 

完成

有一个值为double值的XML值。

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

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

  • android:alpha="0.5"透明

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

这是如何工作的。

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

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

以下是@Aromero计算alpha通道hex值的解决scheme。 🙂

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

使用这个在textView下面看看人气

  android:alpha="0.38" 

在这里输入图像说明

XML

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

dynamic

。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" /> 

机器人:阿尔法= “0.38”

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