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.