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.


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.


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ść.

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


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


4

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


4

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

Użyj setImageAlpha(int)zamiast tego


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

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.