Android и настройка альфа для (изображения) просмотра альфа - PullRequest
109 голосов
/ 08 февраля 2011

Действительно ли нет никакого XML-атрибута, аналогичного setAlpha(int)?

Если нет, какие альтернативы есть?

Ответы [ 9 ]

224 голосов
/ 07 мая 2013

Это проще, чем другой ответ. Существует значение xml alpha, которое принимает двойные значения.

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

android:alpha="0.5" сквозной

android:alpha="1.0" полностью видимый

Вот как это работает.

154 голосов
/ 23 января 2013

Нет, нет, посмотрите, как раздел "Связанные атрибуты XML" отсутствует в документации ImageView.setAlpha (int) .Альтернативой является использование View.setAlpha (float) , чей XML-аналог равен android:alpha.Он принимает диапазон от 0,0 до 1,0 вместо 0 до 255. Используйте его, например, как

<ImageView android:alpha="0.4">

Однако последний доступен только с уровня API 11.

46 голосов
/ 08 февраля 2011

Я не уверен насчет XML, но вы можете сделать это с помощью кода следующим образом.

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

В pre-API 11:

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

В API 11 +:

  • диапазон от 0f до 1f (включительно), 0f - прозрачныйи 1f непрозрачный.
13 голосов
/ 06 февраля 2012

Может быть полезной альтернативой для однотонного фона:

Поместите 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: background атрибута LinearLayout между # 00000000 (полностью прозрачный) и # FF000000 (полностью непрозрачный) .

7 голосов
/ 05 августа 2013

Теперь есть альтернатива 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: альфа = "0,7"

Со значением от 0 (прозрачный) до 1 (непрозрачный).

4 голосов
/ 16 сентября 2016

используйте android: alpha = 0.5 для достижения непрозрачности 50% и для превращения значков материала Android из черного в серый.

3 голосов
/ 30 июля 2013

Используйте эту форму для древней версии 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);
2 голосов
/ 23 августа 2018

setAlpha(int) устарело по состоянию на API 16: Android 4.1

Пожалуйста, используйте setImageAlpha(int) вместо

0 голосов
/ 19 февраля 2011

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

...