Есть ли способ установить алгоритм рисования с помощью 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 / Java: проверьте правильность URL-адреса youtube Как использовать onActivityResult (..), если действие вызывается из меню Создание пользовательской функции в sqlite3 в android Разрешение отказа читать с emailprovider в android Как создать 100% пользовательский DialogFragment @SuppressWarnings vs @SuppressLint Как я могу поместить ListView в ScrollView без его свертывания? Как преобразовать массив байтов изображения в кодировку base64, представляющую jpg Настройка диалогов по программному обеспечению Вызывается: java.lang.IllegalArgumentException: поставщик = сеть ClassNotFoundException: не нашел класс на пути: DexPathList Зачем использовать putFloat (String key, float value), putInt (String key, int value) вместо перегрузки put (…) Android eclipse – восклицательный знак рядом с названием проекта Как сортировать геотоны в соответствии с расстоянием от текущего местоположения в Android Метод retrieveRequestToken повышает «Не удалось связаться с поставщиком услуг: null»