Ответ 1
Я не думаю, что есть способ сделать это. Существует атрибут android:alpha
, но он применяется к представлениям, а не к чертежам. Он доступен только с уровня API 11.
Легко, как и сам. Я хочу создать альфа-кнопку, которая будет иметь выбранный способ:
<?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>
Спасибо всем.
Я не думаю, что есть способ сделать это. Существует атрибут android:alpha
, но он применяется к представлениям, а не к чертежам. Он доступен только с уровня API 11.
Прошло некоторое время с 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.
Я добился того же, используя выталкиваемый
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#5000ddff" />
</shape>
Здесь используется альфа 50, которая устанавливает уровень непрозрачности. Надеюсь, что поможет
Я искал то же самое. Несмотря на то, что это было опубликовано более четырех лет назад, это топ-пост, когда вы запускаете эту проблему, поэтому я отвечу здесь.
Это мое решение
<?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>
Для тех, кто имеет ту же проблему, что и 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>
Подробнее здесь.
Моя цель состояла в том, чтобы сделать кнопку, которую она выбрала, и нажала состояния в другой альфа - но используя тот же (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>
Я использую следующее для пользовательского переключателя, который должен быть зачеркнут по диагонали, когда он отключен.
Пример изображения 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>
Я думаю, вы могли бы создать свой собственный drawable, который мог бы принять этот аргумент как параметр. Я никогда не делал такого.
ознакомьтесь с этой ссылкой:
Как установить значение альфа-значения для drawable в StateListDrawable?
Если это невозможно, вы всегда можете сделать это в коде...
вот 2 ссылки, которые я нашел об этом, если вы хотите использовать растровые изображения:
Я согласен с 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>