Cómo hacer un fondo 20% transparente en Android

¿Cómo puedo hacer que el fondo de una Textview de Textview un 20% transparente (no totalmente transparente), donde hay un color en el fondo (es decir, blanco)?

Haga que el color tenga un 80% en el canal alfa. Por ejemplo, para el uso en rojo #CCFF0000 :

  

En el ejemplo, CC es el número hexadecimal para 255 * 0.8 = 204 . Tenga en cuenta que los dos primeros dígitos hexadecimales son para el canal alfa. El formato es #AARRGGBB , donde AA es el canal alfa, RR es el canal rojo, GG es el canal verde y BB es el canal azul.

Supongo que un 20% de transparencia significa un 80% de opacidad. Si te refieres a la otra forma, en lugar de CC usa 33 que es el hexadecimal para 255 * 0.2 = 51 .

Para calcular el valor adecuado para un valor de transparencia alfa, puede seguir este procedimiento:

  1. Dado un porcentaje de transparencia, por ejemplo 20%, usted sabe que el valor de porcentaje opaco es 80% (esto es 100-20=80 )
  2. El rango para el canal alfa es de 8 bits ( 2^8=256 ), lo que significa que el rango va de 0 a 255.
  3. Proyecte el porcentaje opaco en el rango alfa, es decir, multiplique el rango (255) por el porcentaje. En este ejemplo 255 * 0.8 = 204 . Redondea al entero más cercano si es necesario.
  4. Convierta el valor obtenido en 3., que está en la base 10, en hexadecimal (base 16). Puede usar Google para esta o cualquier calculadora. Usando Google, escribe “204 to hexa” y te dará el valor hexadecimal. En este caso, es 0xCC .
  5. Anteponga el valor obtenido en 4. al color deseado. Por ejemplo, para rojo, que es FF0000 , tendrá CCFF0000 .

Puede echar un vistazo a la documentación de Android para los colores .

Use el siguiente código para negro:

 #000000 

Ahora si quiero usar opacity, puede usar el siguiente código:

  #99000000  

Y debajo para el código de opacidad: y todo el nivel de opacidad aquí

Valores de opacidad hexadecimal

 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 

Si siempre olvida el código de transparencia, debe ver el enlace a continuación y no preocuparse por recordar nada sobre el código transparente:

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

 textviewHeader.setTextColor(Color.parseColor(ColorTransparentUtils.transparentColor10(R.color.border_color))); 

Puede administrar la opacidad del color cambiando los primeros 2 caracteres en la definición del color:

# 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 

Use un color con un valor alfa como #33------ , y configúrelo como fondo de su editText usando el atributo XML android:background=" " .

  1. 0% (transparente) -> # 00 en hex
  2. 20% -> # 33
  3. 50% -> # 80
  4. 75% -> # C0
  5. 100% (opaco) -> #FF

255 * 0.2 = 51 → en hex 33

Puedes intentar hacer algo como:

 textView.getBackground().setAlpha(51); 

Aquí puede establecer la opacidad entre 0 (totalmente transparente) y 255 (completamente opaco). El 51 es exactamente el 20% que desea.

En Android Studio, hay una herramienta incorporada para ajustar el color y el valor alfa / opacidad :

Android ajusta la opacidad del color

Ver captura de pantalla

He tomado tres Vistas. En la primera vista, configuré el color completo (sin alfa), en la segunda vista configuré la mitad (0.5 alfa) de color, y en la tercera vista configuré el color claro (0.2 alfa).

Puede establecer cualquier color y obtener color con alfa usando el siguiente código:

Archivo activity_main.xml

      

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

Versión de 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)) } 

Hecho

Hay un valor XML alpha que toma valores dobles.

Desde la API 11+ el rango es de 0f a 1f (inclusive), siendo 0f transparente y 1f opaco:

  • android:alpha="0.0" eso es invisible

  • android:alpha="0.5" transparente

  • android:alpha="1.0" completo visible

Asi es como funciona.

Todo el valor hexadecimal de 100% a 0% alfa. Puede establecer cualquier color con los valores alfa que se mencionan a continuación. por ejemplo, #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 
  

Alpha varía entre 0 (transparente) y 1 (opaco) en Android API 11+

Ver la popularidad debajo de textView usando esto

  android:alpha="0.38" 

enter image description here

XML

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

Dinamicamente

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

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

 Where the INT ranges from 0 (fully transparent) to 255 (fully opaque).  

android: alpha = “0.38”

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

Aquí hay una solución programática de la respuesta de @Aromero para calcular el valor hexadecimal para el canal 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(); } 

Prueba este código 🙂

Es un código hexadecimal completamente transparente – “# 00000000”