Android i ustawienie alfa dla (obrazu) widoku alfa

Odpowiedzi:

195

Nie, nie ma. Zobacz, jak brakuje sekcji „Powiązane atrybuty XML” w dokumentacji ImageView.setAlpha (int) . Alternatywą jest użycie View.setAlpha (float), którego odpowiednikiem XML jest android:alpha. Zajmuje zakres od 0,0 do 1,0 zamiast od 0 do 255. Użyj go np. Jak

<ImageView android:alpha="0.4">

Jednak ta ostatnia jest dostępna dopiero od poziomu API 11.

sschuberth
źródło
7
Nawet jeśli ja tylko powtarzam tutaj: ImageView.setAlpha(int)jest biorąc intjednocześnie android:alphabierze pływaka, tak ściśle mówiąc ten ostatni nie jest dokładnym odpowiednikiem XML do tego pierwszego, ale jest to odpowiednik View.setAlpha(float). I jak już wielokrotnie wspomniano, android:alpha/ View.setAlpha(float)są dostępne tylko od poziomu API 11.
sschuberth
różnica polega na tym, że dopuszczalny zakres to 0–1 dla liczby zmiennoprzecinkowej i 0–255 dla liczby int.
ataulm
232

To łatwiejsze niż inna odpowiedź. Istnieje wartość xml, alphaktóra przyjmuje podwójne wartości.

android:alpha="0.0" to jest niewidoczne

android:alpha="0.5" widzieć przez

android:alpha="1.0" w pełni widoczne

Tak to działa.

jfcogato
źródło
15
Jest setAlpha(float)i android:alphatylko od API 11 (Android 3.0). W przypadku wcześniejszych wersji API 11 należy użyć kodu, aby ustawić alfa dla obrazu. Jak już powiedział sschuberth w anser powyżej.
Salw
@Antonio Dlaczego? Ta odpowiedź nie dodaje żadnych dodatkowych informacji, a wręcz przeciwnie, jest mniej kompletna.
sschuberth
@sschuberth Twoja odpowiedź jest całkowicie poprawna, ale brak przykładu może sprawić, że będzie ona bardziej zwracać uwagę niż Twoja. Chociaż Twoja odpowiedź zawiera więcej informacji, ta odpowiedź zapewnia rozwiązanie bliższe temu, czego naprawdę potrzebuję. Proszę, dodaj kilka przykładów, aby wykorzystać to, co wyjaśniłeś, które absolutnie pomogą!
Antonio
@Antonio Gotowe. Odpowiedziałem teraz super-duper-over-verbose ;-)
sschuberth
53

Nie jestem pewien co do XML, ale możesz to zrobić za pomocą kodu w następujący sposób.

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

W wersji pre-API 11:

  • zakres wynosi od 0 do 255 (włącznie), 0 oznacza przezroczystość, a 255 nieprzezroczyste.

W API 11+:

  • zakres wynosi od 0f do 1f (włącznie), 0f oznacza przezroczystość, a 1f nieprzezroczystość.
Umesz
źródło
2
Tak, wiem. (Miałem nadzieję, że było to ukryte w pytaniu). Jednym z punktów XML jest usunięcie części tego kodu. Nie ma dla mnie sensu, dlaczego alphanie ma odpowiednika atrybutu XML, skoro mają różne rozmiary i pozycje.
SK9
zastanawiam się: dlaczego jest przestarzały? czy to dlatego, że teraz mają parametr float?
programista Androida
Tak, możesz użyć imageView.setAlpha (1.0f), ale wymaga poziomu API 11.
Tony Ceralva,
12

Może pomocna alternatywa dla jednokolorowego tła:

Umieść LinearLayout na ImageView i użyj LinearLayout jako filtru krycia. W poniższym przykładzie z czarnym tłem:

<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>

Zmieniaj android tło atrybut LinearLayout między # 00000000 (całkowicie przezroczysty) i # FF000000 (całkowicie nieprzezroczysta).

marnaish
źródło
1
Naprawdę nie najlepiej robić to w celu rozwiązania problemu alfa obrazu, zwłaszcza na urządzeniu telefonicznym.
Prakash Nadar
Działa to świetnie, gdy chcesz, aby tło było przezroczyste, ale NIE jego elementy podrzędne. Użycie alfy w kontenerze nadrzędnym sprawia, że ​​wszystkie jego elementy podrzędne również są przezroczyste
noni
8

Istnieje teraz alternatywa XML:

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

To jest: android: alpha = "0.7"

Z wartością od 0 (przezroczysty) do 1 (nieprzezroczysty).

Czarownik
źródło
4

użyj android: alpha = 0.5, aby osiągnąć krycie 50% i zmienić ikony Android Material z czarnego na szary.

Sachiin Gupta
źródło
4

setAlpha(int)jest przestarzałe od API 16:Android 4.1

Użyj setImageAlpha(int)zamiast tego

Alen Lee
źródło
3

Użyj tego formularza do starożytnej wersji Androida.

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);
Rafael
źródło
0

Alfa może być ustawiona wraz z kolorem, używając następującego formatu szesnastkowego #ARGB lub #AARRGGBB. Zobacz http://developer.android.com/guide/topics/resources/color-list-resource.html

Dotacja
źródło
Chcę ustawić alfa obrazu za pomocą atrybutu XML. czy to pomaga?
SK9
Używam tego do rozmywania układów na układzie z obrazem tła, na pewno ustawiłbyś alfa obrazu w samym obrazie?
Grant
Co masz na myśli „w samym obrazie”? W XML? Może to przeoczenie, ale nie ma atrybutu alfa XML.
SK9,
Chodzi mi o to, że kiedy tworzysz obraz, dodajesz warstwę przezroczystości i ustawiasz krycie obrazu na 50 lub inną wymaganą wartość.
Grant
Jestem BARDZO zaskoczony, że android: tint nie działa. Pozwala na wartość alfa ... ale nie ma wpływu na biały obraz: - ((((
Someone Somewhere