Подтвердить что ты не робот

Есть ли способ установить гибкую Alpha с помощью XML?

Легко, как и сам. Я хочу создать альфа-кнопку, которая будет иметь выбранный способ:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Play/Pause -->
    <item android:state_selected="false" android:drawable="@drawable/item" />
    <item android:state_selected="true" android:drawable="@drawable/item" />

</selector>

Я хотел бы сделать что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Play/Pause -->
    <item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" />
    <item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" />

</selector>

Спасибо всем.

4b9b3361

Ответ 1

Я не думаю, что есть способ сделать это. Существует атрибут android:alpha, но он применяется к представлениям, а не к чертежам. Он доступен только с уровня API 11.

Ответ 2

Прошло некоторое время с OP, но лично нашел решение, которое работало намного лучше для меня, чем предлагаемые ответы. Создание BitmapDrawable позволяет легко установить альфа:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/your_drawble"
    android:alpha="77">
</bitmap>

Альфа может быть любым значением от 0 до 255. Обратите внимание, что это своего рода инверсия значения цвета HEX альфа, так как, например, 70% альфа будет B3 в HEX и 77 в BitmapDrawable.

Ответ 3

Я добился того же, используя выталкиваемый

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#5000ddff" />
</shape>

Здесь используется альфа 50, которая устанавливает уровень непрозрачности. Надеюсь, что поможет

Ответ 4

Я искал то же самое. Несмотря на то, что это было опубликовано более четырех лет назад, это топ-пост, когда вы запускаете эту проблему, поэтому я отвечу здесь.

Это мое решение

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <bitmap android:alpha="@integer/not_pressed_alpha" android:src="@drawable/item"/>
    </item>
    <item android:state_pressed="true" android:drawable="@drawable/item" />
</selector>

Ответ 5

Для тех, кто имеет ту же проблему, что и OP, AppCompat теперь позволяет вам установить параметр "альфа", как он пожелал в своем целевом коде:

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Play/Pause -->
    <item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" />
    <item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" />

</selector>

Подробнее здесь.

Ответ 6

Моя цель состояла в том, чтобы сделать кнопку, которую она выбрала, и нажала состояния в другой альфа - но используя тот же (png) ресурс и затрагивая как можно меньше файлов.

Мое решение похоже на изменение альфы в BitmapDrawable, но оно делает это из селектора, поэтому затрагивается только один файл.

Используйте функцию оттенка растрового изображения, помните, что оттенок будет окрашивать существующие пиксели, поэтому используйте белый цвет. Например, # 80FFFFFF - сохранить цвет оригинальным, но уменьшить альфа на 50% Это также можно использовать для изменения цвета значка при нажатии.

Это мой доступный XML файл:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true">
        <bitmap
            android:src="@drawable/ic_camera"
            android:tint="#80FFFFFF">
        </bitmap>
    </item>
    <item android:state_pressed="true">
        <bitmap
            android:src="@drawable/ic_camera"
            android:tint="#80FFFFFF">
        </bitmap>
    </item>
    <item>
        <bitmap
            android:src="@drawable/ic_camera">
        </bitmap>
    </item>
</selector>

Ответ 7

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

Пример изображения 5 переключателей, 4 из которых включены

  <item android:state_enabled="false">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <size
              android:height="35dp"
              android:width="35dp"/>
          <stroke
              android:color="@color/someGrey"
              android:width="1dp"/>
          <corners android:radius="1dp"/>
        </shape>
      </item>
      <item>
        <rotate
            android:fromDegrees="135"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="135">
          <shape android:shape="line">
            <stroke
                android:color="@color/someGrey"
                android:width="1dp"/>
          </shape>
        </rotate>
      </item>
    </layer-list>
  </item>

Ответ 8

Я думаю, вы могли бы создать свой собственный drawable, который мог бы принять этот аргумент как параметр. Я никогда не делал такого.

ознакомьтесь с этой ссылкой:

Как установить значение альфа-значения для drawable в StateListDrawable?

Если это невозможно, вы всегда можете сделать это в коде...

вот 2 ссылки, которые я нашел об этом, если вы хотите использовать растровые изображения:

Ответ 9

Я согласен с Kasium Sugest, поэтому для некоторых версий Android спецификации Alpha указаны в процентах.

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/your_drawble"
    android:alpha="0.5">
</bitmap>