Establecer fondo transparente de una vista de imagen en Android

334

Estoy usando una vista web en la que estoy agregando una vista de imagen. ¿Cómo puedo establecer el fondo de esta vista de imagen en transparente?

He intentado esto:

mImageview.setBackgroundResource(R.color.trans);

Donde trans<color name="trans">#00000000 </color>.

mudit
fuente
Esto puede ayudarlo: stackoverflow.com/questions/5445085/…
Martin Stanimirov

Respuestas:

571

En su XML, establezca el Backgroundatributo en cualquier color, White(#FFFFFF)sombra o Black(#000000)sombra. Si desea transparencia, simplemente ponga 80 antes del código hash real:

#80000000

Esto cambiará cualquier color que desee a uno transparente .. :)

Harshad
fuente
3
@Harshad: ¿Es posible establecer, digamos, una transparencia del 40% para una imagen de fondo configurada con View.setBackgroundResource(R.drawable.something)?
Luis A. Florit
@ LuisA.Florit Encontré este enlace donde necesita multiplicar por 0.4 (40/100) a su valor RGB. No estoy seguro de si esto es útil, pero puede intentarlo. forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad
3
@Harshad: Lo siento, no entendí tu respuesta. No tengo ningún valor RGB, pero un TextView con una imagen de fondo que quiero ser, digamos, 50% transparente. Pero, de todos modos, he encontrado la respuesta aquí en stackoverflow: View.getBackground().setAlpha(50). No podría ser más simple, ¿verdad? : o) De todos modos, ¡gracias por tu ayuda!
Luis A. Florit
21
Si agrega cualquier número del 01 al 99 antes del código hash real, le dará la transparencia. Por ejemplo: Negro con más transparencia - #10000000 Negro con menos transparencia - #99000000
AnhSirk Dasarp
64
@AnhSirkDasarp No solo del 01 al 99, ya que el resto de los números también son hexadecimales, por lo que puede poner cualquier cosa desde 00 hasta ff. Para un cincuenta por ciento transparente, debe poner 80 en lugar de 50, y para los demás tiene que hacer algunos cálculos básicos ...
Nemanja Kovacevic
571

Puede establecer el fondo transparente de cualquier diseño, vista o componente agregando este código en XML:

android:background="@android:color/transparent" 
Chirag Patel
fuente
44
Tuve un problema con las versiones anteriores de Android que no manejaban # ff000000 como puramente transparente. Usando esto lo arregló.
loeschg
11
Probablemente porque #FF 00 00 00 = 100% negro.
Derk-Jan
3
@Ioeschg Las primeras 2 letras son para el canal alfa. # 00xxxxxx sería transparente, mientras que x es cualquier valor hexadecimal que desee.
user1032613
10
Y el equivalente programáticamente si alguien está interesado es Android.Resource.Color.Transparent :)
leoneboaventura
3
@undroid tryandroid:background="#00ffffff"
ban-geoengineering
179

Además de lo que Harshad mencionó:

Se pueden agregar dos caracteres hexadecimales a cualquier código de color hexadecimal. Los primeros dos caracteres en un código de color hexadecimal de 8 dígitos representan su opacidad en Android.

Los dos caracteres hexadecimales pueden variar de 00 a FF. Por ejemplo,

  • Hexágono negro opaco normal- "# 000000"
  • Totalmente transparente - "# 00000000"
  • Totalmente opaco - "# FF000000"
  • 50% transparente - "# 7F000000"

De esta manera, puede cambiar cualquier color a cualquier nivel de transparencia.

Para encontrar el prefijo hexadecimal de un porcentaje:

Divide el número de porcentaje entre 100 y multiplica por 255 para obtener el valor decimal. Convierta el decimal a hexadecimal aquí .

Por ejemplo, para 50%, 50/100 * 255 = 127. Usando el enlace obtenemos el valor hexadecimal 7F.

Fuente: Android: cómo crear un fondo transparente u opaco

Aaron
fuente
3
en realidad, la transparencia perfecta del 50% es 7F y no 80;)
shinyuX
147

Si desea agregar un 20% o un 30% de transparencia, debe colocar dos caracteres más en el código hexadecimal, como CC.

Nota

android:background="#CCFF0088" en XML

donde CC es el valor alfa, FF es el factor rojo, 00 es el factor verde y 88 es el factor azul.

Algún código de opacidad:

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

También puede establecer la opacidad mediante programación como:

yourView.getBackground().setAlpha(127);

Establezca la opacidad entre 0 (totalmente transparente) a 255 (completamente opaco). El 127.5 es exactamente 50%.

Puede crear cualquier nivel de transparencia utilizando la fórmula dada. Si quieres medio transparente:

 16 |128          Where 128 is the half of 256.
    |8 -0         So it means 80 is half transparent.

Y para un 25% de transparencia:

16 |64            Where 64 is the quarter of 256.
   |4 -0          So it means 40 is quarter transparent.
Zar E Ahmer
fuente
42

Use el siguiente código para negro:

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

Ahora, si desea usar opacidad, puede usar el siguiente código:

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

Y el siguiente para el código de opacidad:

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

Narendra Sorathiya
fuente
27

Ya hay una constante predefinida. Uso Color.TRANSPARENT.

Ahmad Dwaik 'Brujo'
fuente
1
¡El uso de una constante debería ser la mejor / más limpia forma de hacerlo! Pero en este caso, el valor de Color.TRANSPARENTse establece en 0x00000000(no el completamente opaco esperado 0xFF000000), por lo que, dependiendo de cómo lo haga, ¡esta constante podría no ayudar realmente a lograr la transparencia! ¡Todavía +1 por recomendar una constante!
Levite
24

Ya hay un transparente integrado en Android: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Pero creo que es posible que desee hacer que el fondo de la imagen que está colocando en WebView sea transparente, por ejemplo, con un PNG transparente, en lugar del fondo de ImageView. Si la imagen real no es transparente, el fondo ImageView no se puede ver a través de ella.

Intrincaciones
fuente
la imagen es transparent..it aún no ha HAV cualquier background..i hv también trató fondo imageview entorno como u HV said..but que no funcionaban ... PLZ ayuda ..
mudit
¿Puedes publicar más detalles como un enlace a la imagen que estás usando y el código y el diseño que estás usando?
Intricaciones del
17

En caso de que lo desee en el código, solo:

mComponentName.setBackgroundColor(Color.parseColor("#80000000"));
Felipe Vasconcelos
fuente
13

Prueba este código :)

Es un código hexa totalmente transparente - "# 00000000"

Agilanbu
fuente
10

O, como alternativa, analice la ID del recurso con el siguiente código:

  mComponentName.setBackgroundColor(getResources().getColor(android.R.color.transparent));
Octoth0rpe
fuente
10

En su archivo XML, establezca un atributo "Alfa"

como

android:alpha="0.0" // for transparent
android:alpha="1.0" // for opaque

Puede dar cualquier valor entre 0.0 a 1.0 en decimal para aplicar la transparencia requerida. Por ejemplo, la transparencia 0.5 es ideal para el componente deshabilitado

Jay Ryu
fuente
5

Para aquellos que todavía se enfrentan a este problema, puede intentar esto
element.getBackground().setAlpha(0);

Suicidio
fuente
Me sale unNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky
1
@IgorGanapolsky: trate de elementver si es un objeto nulo
SuicideSheep
5

Use lo siguiente para una transparencia completa:

#00000000

Cuando probé con # 80000000, obtuve una superposición transparente negra que no quiero. Intenta cambiar los dos primeros dígitos; controla el nivel de transparencia, como

#00000000
#10000000
#20000000
#30000000
Ameen Maheen
fuente
color perfecto en oscuridad transparente
Najib Ahmed Puthawala
5

En Android Studio es muy sencillo ajustar el color y la opacidad con una herramienta integrada:

Android Ajustar la opacidad del color

Jayakrishnan PM
fuente
solo haz clic en él. @PeterMortensen
Jayakrishnan PM
4

Una forma más simple:

mComponentName.setBackgroundResource(android.R.color.transparent);
Andrei Aulaska
fuente
4

Otra opción de trabajo que encontré es establecer android:background="@null"

clwhisk
fuente
2

También podrías usar View.setAlpha(float) para cambiar la visibilidad con precisión.

0 sería transparente, 1 completamente visible. ;)

jns
fuente
1
¡Eso cambia el alfa de la Vista, NO su fondo!
IgorGanapolsky
La vista completa será transparente, incluido el contenido / la imagen, configurando el alfa que es incorrecto en este caso. El usuario desea mantener la transparencia de una imagen, no cambiar la imagen para que sea transparente.
Haroun Hajem
2

Intenta usar el siguiente código. Te ayudará en su totalidad o más.

  1. Un archivo .xml diseñado para usar este código para establecer el color de fondo:

    android:background="#000000"

    o

    android:background="#FFFFFF"

    La imagen está aquí

    O también puede configurarlo mediante programación.

  2. También puede usar este código mediante programación:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. También este código para configurar el color de fondo también mediante programación:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Este código para el mismo mediante programación:

    image.setBackgroundColor(getResources().getColor(Color.WHITE));

El color depende de su elección del color que desea usar para transparente. Principalmente use un color blanco o #FFFFFF.

En cuanto a R.drawable.llabackground: Esta línea de código es para su estilo de fondo, como algo especial o diferente para su propósito. También puedes usar esto.

Amitsharma
fuente
2

Si usa una imagen XML dibujable, puede hacerla transparente como se muestra en la imagen a continuación, o puede usar un código de color:

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

Ingrese la descripción de la imagen aquí

Tariqul
fuente
1

Las definiciones de color con información de transparencia pueden estar en forma

#AARRGGBB o #ARGB .

También puede usar el valor más corto para una transparencia total: # 0000 .

Otros valores son, por ejemplo:

white  grey   black
#FFFF  #F888  #F000 - full color
#EFFF  #E888  #E000
#DFFF  #D888  #D000
#CFFF  #C888  #C000
#BFFF  #B888  #B000
#AFFF  #A888  #A000
#9FFF  #9888  #9000
#8FFF  #8888  #8000
#7FFF  #7888  #7000
#6FFF  #6888  #6000
#5FFF  #5888  #5000
#4FFF  #4888  #4000
#3FFF  #3888  #3000
#2FFF  #2888  #2000
#1FFF  #1888  #1000
#0FFF  #0888  #0000 - full transparency
gotwo
fuente
0
ImageView.setBackground(R.drawable.my_background);

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency
Ravi Naidu
fuente
1
Aunque este código puede ayudar a resolver el problema, no explica por qué y / o cómo responde la pregunta. Proporcionar este contexto adicional mejoraría significativamente su valor a largo plazo. Por favor, editar su respuesta para agregar explicación, incluyendo lo que se aplican limitaciones y supuestos.
Toby Speight el
0

Prueba esto:

#aa000000

Para transparencia 000000 = negro, puede cambiar estos seis números para el color que desee.

Alex Zaraos
fuente
¿cuál es su recurso para uso aa antes hexagonal de color
Mina Fawzy