Definir plano de fundo transparente de uma visualização de imagem no Android


334

Estou usando uma visualização da Web na qual estou adicionando uma visualização de imagem. Como posso definir o plano de fundo dessa exibição de imagem como transparente?

Eu tentei isso:

mImageview.setBackgroundResource(R.color.trans);

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


Respostas:


571

No seu XML, defina o Backgroundatributo para qualquer cor, White(#FFFFFF)tom ou Black(#000000)tom. Se você deseja transparência, basta colocar 80 antes do código hash real:

#80000000

Isso mudará qualquer cor que você desejar para uma transparente .. :)


3
@Harshad: É possível definir, digamos, uma transparência de 40% para uma imagem de fundo definida View.setBackgroundResource(R.drawable.something)?
Luis A. Florit

@ LuisA.Florit Encontrei este link em que você precisa multiplicar por 0,4 (40/100) ao seu valor RGB. Não tenho certeza se isso é útil, mas você pode tentar. forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad

3
@Harshad: Desculpe, não entendi sua resposta. Não tenho nenhum valor RGB, mas um TextView com uma imagem de plano de fundo que quero ser, digamos, 50% transparente. Mas, de qualquer maneira, eu encontrei a resposta aqui em stackoverflow: View.getBackground().setAlpha(50). Não poderia ser mais simples, certo? : o) De qualquer forma, obrigado pela sua ajuda !!
Luis A. Florit

21
Se você adicionar qualquer número de 01 a 99 antes do código hash real, ele fornecerá a transparência. Por exemplo: Preto com mais transparência - #10000000 preto com menos transparência - #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp Não apenas de 01 a 99, como o restante dos números, eles também são hexadecimais, para que você possa colocar de 00 a ff. Por cinquenta por cento transparente você deve colocar 80 em vez de 50, e para os outros que você tem alguns cálculos básicos para fazer ...
Nemanja Kovacevic

571

Você pode definir o plano de fundo transparente de qualquer layout, exibição ou componente adicionando este código em XML:

android:background="@android:color/transparent" 

4
Eu tive um problema nas versões mais antigas do Android que não tratavam # ff000000 como puro puro. Usando isso corrigido.
21813 loeschg Em:

11
Provavelmente porque #FF 00 00 00 = 100% preto.
Jan Derk -13

3
@Ioeschg As 2 primeiras letras são para o canal alfa. # 00xxxxxx seria transparente, enquanto x é qualquer valor hexadecimal que você deseja.
user1032613

10
E a programaticamente equivalente, se alguém estiver interessado é Android.Resource.Color.Transparent :)
leoneboaventura

3
@undroid tryandroid:background="#00ffffff"
ban-geoengineering

179

Além do que Harshad mencionou:

Dois caracteres hexadecimais podem ser anexados a qualquer código de cores hexadecimal. Os dois primeiros caracteres em um código de cor hexadecimal de 8 dígitos representam sua opacidade no Android.

Os dois caracteres hexadecimais podem variar de 00 a FF. Por exemplo,

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

Dessa forma, você pode alterar qualquer cor para qualquer nível de transparência.

Para encontrar o prefixo hexadecimal de uma porcentagem:

Divida o número percentual por 100 e multiplique por 255 para obter o valor decimal. Converta o decimal em hexadecimal aqui .

Por exemplo, para 50%, 50/100 * 255 = 127. Usando o link, obtemos o valor hexadecimal 7F.

Fonte: Android: como criar um plano de fundo transparente ou opaco


3
na verdade, transparência perfeita 50% é 7F e não 80;)
shinyuX

147

Se você deseja adicionar 20% ou 30% de transparência, deve preceder mais dois caracteres ao código hexadecimal, como CC.

Nota

android:background="#CCFF0088" em XML

onde CC é o valor alfa, FF é o fator vermelho, 00 é o fator verde e 88 é o fator azul.

Algum código de opacidade:

Valores de opacidade 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

Você também pode definir a opacidade programaticamente como:

yourView.getBackground().setAlpha(127);

Defina a opacidade entre 0 (totalmente transparente) e 255 (completamente opaco). O 127,5 é exatamente 50%.

Você pode criar qualquer nível de transparência usando a fórmula fornecida. Se você quiser meio transparente:

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

E para 25% de transparência:

16 |64            Where 64 is the quarter of 256.
   |4 -0          So it means 40 is quarter transparent.

42

Use o código abaixo para preto:

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

Agora, se você deseja usar a opacidade, pode usar o código abaixo:

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

E o abaixo para o código de opacidade:

100% - FF

95% - F2

90% - E6

85% - D9

80% - CC

75% - AM

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


27

Já existe uma constante predefinida. Use Color.TRANSPARENT.


1
O uso de uma constante deve ser a melhor / mais limpa maneira de fazer isso! Mas, nesse caso, o valor de Color.TRANSPARENTé definido como 0x00000000(não o esperado totalmente opaco 0xFF000000); portanto, dependendo de como você o faz, essa constante pode não ajudar a obter transparência! Ainda +1 por recomendar uma constante!
Levite

24

Já existe um transparente incorporado no Android: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Mas acho que você pode querer tornar transparente o plano de fundo da imagem que está colocando no WebView, por exemplo, com um PNG transparente, em vez do plano de fundo do ImageView. Se a imagem real não for totalmente transparente, o fundo do ImageView não poderá ser visto através dela.


a imagem é transparent..it não funcionavam hav qualquer background..i hv também tentou fundo ImageView configuração como u hv said..but que não funcionava ... plz ajuda ..
mudit

Você pode postar mais alguns detalhes, como um link para a imagem que você está usando e o código e o layout que está usando?
Intrications

17

Caso você queira o código, apenas:

mComponentName.setBackgroundColor(Color.parseColor("#80000000"));

13

Experimente este código :)

É um código hexa totalmente transparente - "# 00000000"


10

Ou, como alternativa, analise a identificação do recurso com o seguinte código:

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

10

No seu arquivo XML, defina um atributo "Alpha"

tal como

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

Você pode atribuir qualquer valor entre 0,0 e 1,0 em decimal para aplicar a transparência necessária. Por exemplo, 0,5 transparência é ideal para componentes desabilitados


5

Para aqueles que ainda enfrentam esse problema, tente este
element.getBackground().setAlpha(0);


Eu recebo umNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky 8/15

1
@IgorGanapolsky: tente assistir seu elementver se é um objeto nulo
SuicideSheep

5

Use o seguinte para total transparência:

#00000000

Quando tentei com o # 80000000, recebi uma sobreposição transparente preta que não quero. Tente alterar os dois primeiros dígitos; controla o nível de transparência, como

#00000000
#10000000
#20000000
#30000000

cor perfeita no escuro transparente
Najib Ahmed Puthawala 11/11/15


4

Mais uma maneira simples:

mComponentName.setBackgroundResource(android.R.color.transparent);

4

Outra opção de trabalho que me deparei é definir android:background="@null"


2

Você também pode usar View.setAlpha(float)para alterar a visibilidade com precisão.

0 seria transparente, 1 totalmente visível. ;)


1
Isso muda o alfa do View, NÃO o fundo!
IgorGanapolsky

A visualização inteira será transparente, incluindo o conteúdo / imagem, e você definirá o alfa que está errado neste caso. O usuário deseja manter a transparência de uma imagem e não alterar a imagem para ser transparente.
Haroun Hajem 17/01

2

Tente usar o seguinte código. Isso o ajudará na íntegra ou mais.

  1. Um arquivo .xml criado para usar esse código para definir a cor do plano de fundo:

    android:background="#000000"

    ou

    android:background="#FFFFFF"

    A imagem está aqui

    Ou você pode configurá-lo programaticamente também.

  2. Além disso, você pode usar esse código programaticamente:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. Além disso, este código para definir a cor de fundo também programaticamente:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Este código para o mesmo programaticamente:

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

A cor depende da sua escolha da cor que você deseja usar para ser transparente. Use principalmente uma cor branca ou #FFFFFF.

Em relação a R.drawable.llabackground: Esta linha de código é para o seu estilo de segundo plano, como algo especial ou diferente para o seu propósito. Você também pode usar isso.


2

Se você usar uma imagem XML desenhável, poderá torná-la transparente, como mostra a figura abaixo, ou usar um código de cores:

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

Digite a descrição da imagem aqui


1

As definições de cores com informações de transparência podem estar no formato

#AARRGGBBou #ARGB.

Você também pode usar o valor mais curto para obter transparência total: # 0000 .

Outros valores são, por exemplo:

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

0
ImageView.setBackground(R.drawable.my_background);

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency

1
Embora esse código possa ajudar a resolver o problema, ele não explica por que e / ou como responde à pergunta. Fornecer esse contexto adicional melhoraria significativamente seu valor a longo prazo. Por favor edite sua resposta para adicionar explicação, incluindo o que limitações e premissas se aplicam.
precisa

0

Tente o seguinte:

#aa000000

Para a transparência 000000 = preto, você pode alterar esses seis números para a cor desejada.


qual é o seu recurso para usar aa antes hex cor
Mina Fawzy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.