Цього можна досягти, створивши файл, що виписує xml, що містить список станів для кнопки. Наприклад, якщо ви створюєте новий XML-файл під назвою "button.xml" із таким кодом:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/YOURIMAGE" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient" />
<item android:drawable="@drawable/YOURIMAGE" />
</selector>
Щоб зберегти фонове зображення із затемненим виглядом при натисканні, створіть другий файл XML і назвіть його gradient.xml із наступним кодом:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap android:src="@drawable/YOURIMAGE"/>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:angle="90" android:startColor="#880f0f10" android:centerColor="#880d0d0f" android:endColor="#885d5d5e"/>
</shape>
</item>
</layer-list>
У xml вашої кнопки встановіть фон як кнопку xml, наприклад
android:background="@drawable/button"
Сподіваюся, це допомагає!
Редагувати: Змінено вищевказаний код для відображення зображення (YOURIMAGE) у кнопці на відміну від кольору блоку.