Съемный селектор с одинаковым изображением, но с другой непрозрачностью

Я хочу сохранить пространство приложения со следующей идеей. Но я не уверен, что это возможно.

Я хочу иметь селектор:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/arrow_forward" android:state_enabled="true" /> <item android:drawable="@drawable/arrow_forward_disabled" android:state_enabled="false"/> </selector> 

Где arrow_forward – это png-изображение, а arrow_forward_disabled – одно и arrow_forward_disabled же изображение, но с непрозрачностью 70%. Я пытался добиться этого с помощью layer-list но без успеха. Есть ли решение?

Если вы используете ShapeDrawable, вместо PNG вы можете использовать цвета, которые вы используете для установки разных непрозрачных объектов, я расскажу о некоторых вариантах:

  1. Если вы используете ShapeDrawable, вы можете назначить разные непрозрачности с использованием цвета (первые 2 символа в цветовой строке являются непрозрачностью, то есть # ffbada55 не является прозрачным зеленым, а # 80bada55 – зеленым с некоторой непрозрачностью)
  2. Это не будет работать для непрозрачности, но вы можете применить цветовой фильтр с использованием существующего API (это может быть вариация вашего эффекта на основе цвета, но все равно не позволит вам изменить непрозрачность вашего PNG) Цветовой фильтр API

  3. Создавайте собственные PNG, каждый из которых имеет непрозрачность

Я думаю (как и другие ответы), что Вариант № 3 является самым простым и будет работать лучше всего.

В нижней строке вы не можете изменить непрозрачность ресурса PNG с помощью XML, вы можете создать Drawable (возможно, использовать его в качестве фона для вашего PNG), и вы сможете изменить непрозрачность этого, используя его определение цветовых ресурсов ,

Невозможно применить непрозрачность в xml. Это возможно только с помощью двух изображений.

Вы используете PNG-файлы, вам нужно будет создать 2 png с различными непрозрачностью.

1º PNG – Включить. 100% непрозрачность.

2º PNG – отключено. 70% непрозрачность.

После этого вам нужно создать XML-селектор с двумя разными состояниями:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/btn_disabled" /> <item android:drawable="@drawable/btn_active" /> </selector> 

Вы также можете использовать кнопки формы с различной непрозрачностью, используя альфа ARGB (#AARRGGBB). Пример: # 80FFFFFF (непрозрачность 50%) ( источник )

Пример:

Включено:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="20dp"/> <solid android:color="#002aff" /> </shape> 

Отключено (непрозрачность 70%: # b3002aff):

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="20dp"/> <solid android:color="#b3002aff" /> </shape> 
Intereting Posts
Когда клавиатура открывает изменения высоты списка ListView Такое же меню вариантов во всех мероприятиях на Android Как получить точку касания (вверху и слева) независимо от вида, окна в титане Вытащить базу данных из эмулятора genymotion на локальный диск Почему бы не переопределить классы Java в разных версиях Android? Список всех названий улиц и дорог в Google в API Android – музыкальный плеер на экране уведомлений (верхний раскрывающийся экран) Как заставить Доза на Зефир? Как получить захват экрана при двойном разрешении? Навигационный ящик ниже прозрачной панели действий OnBackStackChanged () вызывается дважды, когда новый фрагмент добавляется в backstack Определите, работает ли на корневом устройстве SQLiteException: таблица уже существует Как отклонить инфо-окно в Android-API Google Maps v2 Почему возникает ошибка при объявлении вложенного статического класса фрагмента как частного?