Android та налаштування альфа для (зображення) альфа перегляду


Відповіді:


195

Ні, немає, подивіться, як у документації на ImageView.setAlpha (int) відсутній розділ "Пов'язані атрибути XML" . В якості альтернативи можна використовувати View.setAlpha (флоат) , чий XML аналог є . Він займає діапазон від 0,0 до 1,0 замість 0 до 255. Використовуйте його, наприклад, якandroid:alpha

<ImageView android:alpha="0.4">

Однак останні доступні лише з рівня 11 API.


7
Навіть якщо я тут просто повторююсь: ImageView.setAlpha(int)певний intчас android:alphaзаймає поплавок, тож строго кажучи, останній не є точним аналогом XML для першого, але це його аналог View.setAlpha(float). Як уже згадувалося тут, android:alpha/ View.setAlpha(float)доступні лише для рівня 11 API.
sschuberth

Різниця полягає в тому, що прийнятний діапазон становить 0-1 для поплавкового і 0-255 для внутрішнього.
ataulm

232

Це простіше, ніж інша відповідь. Існує значення xml, alphaяке приймає подвійні значення.

android:alpha="0.0" це невидимо

android:alpha="0.5" просочуватися

android:alpha="1.0" повно видно

Ось як це працює.


15
Існує setAlpha(float)і android:alphaтільки з API 11 (Android 3.0). Попередній API 11 потрібно використовувати код для встановлення альфа-зображення. Як уже говорилося в sserchberber.
Salw

@Antonio Чому? Ця відповідь не додає жодної інформації на мою, а навпаки, є менш повною.
sschuberth

@sschuberth ваша відповідь цілком правильна, але відсутність прикладу може змусити цю відповідь привернути більше уваги, ніж ваша. Хоча у вашій відповіді подано більше інформації, ця відповідь пропонує рішення, ближче до того, що мені справді потрібно. Будь ласка, додайте кілька прикладів, щоб використовувати те, що ви пояснили, що абсолютно допоможе!
Антоніо

@Antonio Готово. Я зробив свою відповідь зараз супер-пупер-над-багатослівний ;-)
sschuberth

53

Я не впевнений у XML, але ви можете це зробити за кодом наступним чином.

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

У попередньому API 11:

  • діапазон від 0 до 255 (включно), 0 прозорий і 255 непрозорий.

В API 11+:

  • діапазон від 0f до 1f (включно), 0f прозорий і 1f непрозорий.

2
Так, я знаю. (Я сподівався, що це було неявним у питанні.) Один пункт XML - це позбавити частину цього коду. Для мене alphaнемає сенсу, чому немає аналога XML-атрибутів, коли це різні розміри, позиції.
SK9

мені цікаво: чому це застаріле? це тому, що зараз у них є параметр float?
андроїд розробник

Так, ви можете використовувати imageView.setAlpha (1.0f), але для нього потрібен рівень 11.
Tony Ceralva

12

Може бути корисною альтернативою для простого фону:

Покладіть LinearLayout над ImageView і використовуйте LinearLayout як фільтр непрозорості. У наступному невеликому прикладі з чорним фоном:

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

Варіюйте Android: фон атрибут LinearLayout між # 00000000 (повністю прозорий) і # FF000000 (повністю непрозорий).


1
Насправді це не найкраще для вирішення проблеми альфа-зображення, особливо на пристрої телефону.
Пракаш Надар

Це чудово працює, коли ви просто хочете зробити фон прозорим, але НЕ його дочірнім. Використання альфи на батьківському контейнері також робить усі його дитини прозорими
noni

8

Зараз існує альтернатива 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"

Зі значенням від 0 (прозорий) до 1 (непрозорий).


4

використовуйте android: alpha = 0,5, щоб досягти непрозорості 50% та перетворити піктограми Android Material з чорного на сірий.


4

setAlpha(int)застаріло як API 16:Android 4.1

Будь ласка, використовуйте setImageAlpha(int)замість цього


3

Використовуйте цю форму для старовинної версії 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

Альфа можна встановити разом із кольором, використовуючи наступний шістнадцятковий формат #ARGB або #AARRGGBB. Дивіться сторінку http://developer.android.com/guide/topics/resources/color-list-resource.html


Я хочу встановити альфа зображення за допомогою атрибута XML. Чи допомагає це?
SK9

Я використовую це для змішування макетів на макеті з фоновим зображенням, напевно, ви б встановили альфа зображення в самому зображенні?
Грант

Що ви маєте на увазі «в самому образі»? У межах XML? Це може бути недогляд, але немає атрибута альфа-XML.
SK9

Я маю на увазі, коли ви створюєте зображення, ви додавали б рівень прозорості та встановлювали непрозорість зображення на 50 або будь-яке значення, яке вам потрібно.
Грант

Я ДУЖЕ здивований, що android: відтінок не має ефекту. Це дозволяє мати значення альфа ..., але це не впливає на біле зображення: - (((((
Хтось десь
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.