Есть ли способ установить алгоритм рисования с помощью 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> 

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

    Я не думаю, что есть способ сделать это. Существует атрибут 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, но оно делает это из селектора, поэтому затрагивается только один файл.

    Используйте функцию оттенка Bitmap, помните, что оттенок будет окрашивать существующие пиксели, поэтому используйте белый цвет. Например, # 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> 

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

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

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

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

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

    Intereting Posts
    Смешивание плагинов для Android от градиента и градиентно-экспериментального Как добавить предложение ограничения с помощью поставщика контента Есть ли способ проверить версию приложения Play Store VersionCode? ExoPlayer – воспроизводить 10 файлов один за другим Android: получить элементы из массива строк и показать их один за другим в текстовом режиме Android: одновременное воспроизведение большого количества видео Доступ к контактам сим-карты в android Как выполнить тестирование объекта с помощью google-api-client Получатель SMS BroadCast получает много раз? Google Cloud Function Node.js Firebase Url Custom DialogFragment с различными анимациями для разных ориентаций Есть ли способ сделать webview, работающий под управлением Android 4.0, на приемлемом уровне? Услуги Android: привязка по требованию против привязки к #onCreate () Консоль моей Android-студии не печатает сообщение журнала DialogFragment – невозможно выполнить это действие после onSaveInstanceState