Imposta lo sfondo trasparente di un'immagine visualizzata su Android


Risposte:


571

Nel tuo XML imposta l' Backgroundattributo su qualsiasi colore, White(#FFFFFF)tonalità o Black(#000000)tonalità. Se si desidera la trasparenza, basta inserire 80 prima del codice hash effettivo:

#80000000

Questo cambierà qualsiasi colore che desideri in uno trasparente .. :)


3
@Harshad: è possibile impostare, diciamo, una trasparenza del 40% per un'immagine di sfondo impostata con View.setBackgroundResource(R.drawable.something)?
Luis A. Florit,

@ LuisA.Florit Ho trovato questo link in cui è necessario moltiplicare per 0,4 (40/100) per il valore RGB. Non sono sicuro che sia utile, ma puoi provarlo. forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad

3
@Harshad: scusa, non ho capito la tua risposta. Non ho alcun valore RGB, ma un TextView con un'immagine di sfondo che voglio essere, diciamo, trasparente al 50%. Ma, in ogni caso, ho trovato la risposta qui a StackOverflow: View.getBackground().setAlpha(50). Non potrebbe essere più semplice, vero? : o) Comunque, grazie per il tuo aiuto !!
Luis A. Florit,

21
Se aggiungi un numero compreso tra 01 e 99 prima dell'effettivo codice hash, otterrai la trasparenza. Ad esempio: Nero con più trasparenza - #10000000 Nero con meno trasparenza - #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp Non solo da 01 a 99, poiché il resto dei numeri sono anche esadecimali, quindi puoi mettere qualsiasi cosa da 00 a ff. Per il cinquanta per cento di trasparenza dovresti mettere 80 invece di 50, e per gli altri hai alcuni calcoli di base da fare ...
Nemanja Kovacevic,

571

È possibile impostare lo sfondo trasparente di qualsiasi layout, vista o componente aggiungendo questo codice in XML:

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

4
Ho avuto un problema con le versioni precedenti di Android che non gestivano # ff000000 come puro trasparente. Usandolo risolto.
loeschg

11
Probabilmente perché #FF 00 00 00 = 100% nero.
Derk-Jan,

3
@Ioeschg Le prime 2 lettere sono per il canale alfa. # 00xxxxxx sarebbe trasparente, mentre x è qualsiasi valore esadecimale desiderato.
user1032613

10
E l'equivalente programmaticamente se qualcuno è interessato è Android.Resource.Color.Transparent :)
leoneboaventura

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

179

Oltre a quanto menzionato da Harshad:

Due caratteri esadecimali possono essere aggiunti a qualsiasi codice colore esadecimale. I primi due caratteri in un codice colore esadecimale a 8 cifre rappresentano la sua opacità in Android.

I due caratteri esadecimali possono variare da 00 a FF. Per esempio,

  • Esagono nero opaco normale- "# 000000"
  • Completamente trasparente - "# 00000000"
  • Completamente opaco - "# FF000000"
  • 50% trasparente - "# 7F000000"

In questo modo puoi cambiare qualsiasi colore a qualsiasi livello di trasparenza.

Per trovare il prefisso esadecimale da una percentuale:

Dividi il numero percentuale per 100 e moltiplicalo per 255 per ottenere il valore decimale. Convertire il decimale in esadecimale qui .

Ad esempio, per il 50%, 50/100 * 255 = 127. Usando il collegamento si ottiene il valore esadecimale 7F.

Fonte: Android: come creare uno sfondo trasparente o opaco


3
in realtà, la trasparenza perfetta del 50% è 7F e non 80;)
shinyuX

147

Se si desidera aggiungere il 20% o il 30% di trasparenza, è necessario precedere altri due caratteri al codice esadecimale, come CC.

Nota

android:background="#CCFF0088" in XML

dove CC è il valore alfa, FF è il fattore rosso, 00 è il fattore verde e 88 è il fattore blu.

Alcuni codici di opacità:

Valori di opacità esadecimale

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

Puoi anche impostare l'opacità a livello di codice come:

yourView.getBackground().setAlpha(127);

Impostare l'opacità tra 0 (completamente trasparente) su 255 (completamente opaco). Il 127,5 è esattamente il 50%.

Puoi creare qualsiasi livello di trasparenza usando la formula indicata. Se vuoi metà trasparente:

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

E per una trasparenza del 25%:

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

42

Usa il codice qui sotto per il nero:

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

Ora, se si desidera utilizzare l'opacità, è possibile utilizzare il codice seguente:

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

E il seguito per il codice di opacità:

100% - FF

95% - F2

90% - E6

85% - D9

80% - CC

75% - BF

70% - B3

65% - A6

60% - 99

55% - 8 ° C

50% - 80

45% - 73

40% - 66

35% - 59

30% - 4 giorni

25% - 40

20% - 33

15% - 26

10% - 1A

5% - 0D

0% - 00


27

Esiste già una costante predefinita. Usa Color.TRANSPARENT.


1
L'uso di una costante dovrebbe essere il modo migliore / più pulito per farlo! Ma in questo caso, il valore di Color.TRANSPARENTè impostato su 0x00000000(non il previsto completamente opaco 0xFF000000), quindi a seconda di come lo fai, questa costante potrebbe non aiutare davvero a raggiungere la trasparenza! Ancora +1 per raccomandare una costante!
Levita,

24

Esiste già un trasparente integrato in Android: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Ma penso che potresti voler rendere trasparente lo sfondo dell'immagine che stai inserendo nel WebView, ad esempio con un PNG trasparente, anziché lo sfondo di ImageView. Se l'immagine reale non è affatto trasparente, lo sfondo di ImageView non può essere visto attraverso di essa.


l'immagine è trasparente..non ha alcun sfondo..i ho anche provato a impostare lo sfondo di imageview come hai detto..ma non ha funzionato ... per favore ..
mudit

Puoi pubblicare altri dettagli come un link all'immagine che stai utilizzando e il codice e il layout che stai utilizzando?
Intricazioni

17

Nel caso lo desideri nel codice, basta:

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

13

Prova questo codice :)

È un codice hexa completamente trasparente - "# 00000000"


10

Oppure, in alternativa, analizzare l'ID risorsa con il seguente codice:

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

10

Nel tuo file XML, imposta un attributo "Alpha"

ad esempio

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

È possibile fornire qualsiasi valore compreso tra 0,0 e 1,0 in decimale per applicare la trasparenza richiesta. Ad esempio, la trasparenza 0,5 è ideale per il componente disabilitato


5

Per coloro che stanno ancora affrontando questo problema, puoi provare questo
element.getBackground().setAlpha(0);


Ricevo unNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky l'

1
@IgorGanapolsky: prova a elementvedere se è un oggetto null
SuicideSheep

5

Utilizzare quanto segue per la massima trasparenza:

#00000000

Quando ho provato con # 80000000 ho ottenuto un overlay trasparente nero che non voglio. Prova a cambiare le prime due cifre; controlla il livello di trasparenza, come

#00000000
#10000000
#20000000
#30000000

colore perfetto su trasparente scuro
Najib Ahmed Puthawala


4

Un altro modo semplice:

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

4

Un'altra opzione di lavoro che ho trovato è di impostare android:background="@null"


2

È inoltre possibile utilizzare View.setAlpha(float)per modificare precisamente la visibilità.

0 sarebbe trasparente, 1 completamente visibile. ;)


1
Ciò cambia l'alfa della vista, NON il suo sfondo!
IgorGanapolsky,

L'intera vista sarà quindi trasparente, compresi i contenuti / l'immagine in essa contenuti, l'impostazione dell'alfa che in questo caso è errata. L'utente vuole mantenere la trasparenza di un'immagine senza cambiare l'immagine per renderla trasparente.
Haroun Hajem,

2

Prova a usare il seguente codice. Ti aiuterà in tutto o in più.

  1. Un file .xml progettato per utilizzare questo codice per impostare il colore di sfondo:

    android:background="#000000"

    o

    android:background="#FFFFFF"

    L'immagine è qui

    Oppure puoi impostarlo anche a livello di codice.

  2. Inoltre è possibile utilizzare questo codice a livello di codice:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. Anche questo codice per impostare il colore di sfondo anche a livello di codice:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Questo codice per lo stesso a livello di codice:

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

Il colore dipende dalla scelta del colore che si desidera utilizzare per il trasparente. Utilizza principalmente un colore bianco o #FFFFFF.

Riguardo R.drawable.llabackground: questa riga di codice è per il tuo stile di sfondo, come qualcosa di speciale o diverso per il tuo scopo. Puoi anche usare questo.


2

Se si utilizza un'immagine XML disegnabile, è possibile renderla trasparente come mostrato nell'immagine seguente oppure è possibile utilizzare un codice colore:

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

Inserisci qui la descrizione dell'immagine


1

Le definizioni di colore con informazioni sulla trasparenza possono essere nel modulo

#AARRGGBBoppure #ARGB.

È inoltre possibile utilizzare il valore più breve per la massima trasparenza: # 0000 .

Altri valori sono ad esempio:

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
Sebbene questo codice possa aiutare a risolvere il problema, non spiega perché e / o come risponde alla domanda. Fornire questo contesto aggiuntivo migliorerebbe significativamente il suo valore a lungo termine. Si prega di modificare la risposta di aggiungere spiegazioni, tra cui quello che si applicano le limitazioni e le assunzioni.
Toby Speight,

0

Prova questo:

#aa000000

Per la trasparenza 000000 = nero, è possibile modificare questi sei numeri per il colore desiderato.


qual è la tua risorsa da usare aa prima dell'esagono di colore
Mina Fawzy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.