Android e impostazione alfa per la visualizzazione (immagine) alfa


Risposte:


195

No, non esiste, vedere come manca la sezione "Attributi XML correlati" nella documentazione di ImageView.setAlpha (int) . L'alternativa è usare View.setAlpha (float) la cui controparte XML è android:alpha. Prende un intervallo da 0,0 a 1,0 anziché da 0 a 255. Usalo ad es

<ImageView android:alpha="0.4">

Tuttavia, quest'ultimo è disponibile solo dal livello API 11.


7
Anche se mi sto solo ripetendo qui: ImageView.setAlpha(int)sta prendendo un intpo ' android:alphasta prendendo un float, quindi a rigor di termini quest'ultimo non è l'esatta controparte XML del primo, ma è la controparte di View.setAlpha(float). E come già detto più volte qui, android:alpha/ View.setAlpha(float)sono disponibili solo a partire dal livello API 11.
sschuberth

la differenza è che l'intervallo accettabile è 0-1 per quello float e 0-255 per quello int.
martedì

232

È più facile dell'altra risposta. Esiste un valore xml alphache accetta valori doppi.

android:alpha="0.0" questo è invisibile

android:alpha="0.5" guardare attraverso

android:alpha="1.0" completamente visibile

Funziona così.


15
Esiste setAlpha(float)e android:alphasolo da API 11 (Android 3.0). Prima API 11 si deve usare il codice per impostare alpha per l'immagine. Come sschuberth ha già detto in risposta sopra.
Salw,

@Antonio Perché? Questa risposta non aggiunge alcuna informazione sulla mia e, al contrario, è meno completa.
sschuberth,

@sschuberth la tua risposta è completamente corretta, ma la mancanza di un esempio potrebbe far sì che questa risposta attiri più attenzione della tua. Sebbene la tua risposta fornisca ulteriori informazioni, questa risposta fornisce una soluzione più vicina a ciò di cui ho veramente bisogno. Per favore, aggiungi alcuni esempi per usare ciò che hai spiegato, che sarà di grande aiuto!
Antonio,

@Antonio Fatto. Ho fatto la mia risposta ora super-duper-over-verbose ;-)
sschuberth

53

Non sono sicuro dell'XML, ma puoi farlo tramite il codice nel modo seguente.

ImageView myImageView = new ImageView(this);
myImageView.setAlpha(xxx);

In pre-API 11:

  • l'intervallo è compreso tra 0 e 255 (incluso), 0 è trasparente e 255 è opaco.

In API 11+:

  • l'intervallo va da 0f a 1f (incluso), 0f è trasparente e 1f è opaco.

2
Si lo so. (Speravo che questo fosse implicito nella domanda.) Un punto dell'XML è eliminare parte di questo codice. Non ha senso per me perché alphanon ha una controparte dell'attributo XML quando le varie dimensioni, posizioni lo fanno.
SK9

mi chiedo: perché è deprecato? è perché ora hanno un parametro float?
sviluppatore Android

Sì, puoi usare imageView.setAlpha (1.0f), ma richiede il livello API 11.
Tony Ceralva,

12

Forse un'alternativa utile per uno sfondo a tinta unita:

Inserisci un LinearLayout su ImageView e usa LinearLayout come filtro di opacità. Di seguito un piccolo esempio con uno sfondo nero:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF000000" >

<RelativeLayout
    android:id="@+id/relativeLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon_stop_big" />

    <LinearLayout
        android:id="@+id/opacityFilter"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#CC000000"
        android:orientation="vertical" >
    </LinearLayout>
</RelativeLayout>

Varia Android: attributo di sfondo di LinearLayout tra # 00000000 (completamente trasparente) e # FF000000 (completamente opaco).


1
Non è davvero il migliore per farlo per risolvere l'alfa di un problema di immagine, specialmente sul dispositivo telefonico.
Prakash Nadar,

Funziona alla grande quando vuoi solo rendere trasparente lo sfondo ma NON i suoi figli. L'uso dell'alfa nel contenitore padre rende trasparenti anche tutti i suoi figli
noni,

8

Esiste ora un'alternativa XML:

        <ImageView
        android:id="@+id/example"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/example"
        android:alpha="0.7" />

È: android: alpha = "0.7"

Con un valore compreso tra 0 (trasparente) e 1 (opaco).


4

usa android: alpha = 0,5 per ottenere l'opacità del 50% e per trasformare le icone dei materiali Android da Nero a Grigio.


4

setAlpha(int)è obsoleto a partire dall'API 16:Android 4.1

Si prega di utilizzare setImageAlpha(int)invece


3

Usa questo modulo per la versione antica di Android.

ImageView myImageView;
myImageView = (ImageView) findViewById(R.id.img);

AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
alpha.setDuration(0); 
alpha.setFillAfter(true); 
myImageView.startAnimation(alpha);

0

L'alfa può essere impostata insieme al colore usando il seguente formato esadecimale #ARGB o #AARRGGBB. Vedi http://developer.android.com/guide/topics/resources/color-list-resource.html


Voglio impostare l'alfa di un'immagine usando un attributo XML. questo aiuta?
SK9,

Sto usando questo per bleand layout su un layout con un'immagine di sfondo, sicuramente imposteresti l'alfa di un'immagine nell'immagine stessa?
Concedi il

Cosa intendi con "nell'immagine stessa"? All'interno dell'XML? Potrebbe essere una svista, ma non esiste alcun attributo XML alfa.
SK9

Quando crei l'immagine, intendi aggiungere un livello di trasparenza e impostare l'opacità della tua immagine su 50 o qualsiasi valore tu richieda.
Concedi il

Sono MOLTO sorpreso che Android: la tinta non abbia alcun effetto. Permette un valore alfa ... ma non ha effetto su un'immagine bianca: - (((((((((
Someone Somewhere
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.