Ответ 1
Шаг 1
создайте три разных layer_list xml в папке с возможностью рисования для трех разных состояний кнопки. Например, имя этих xml равно layer1.xml, layer2.xml, layer3.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<gradient
android:angle="270"
android:startColor="#0000ff"
android:endColor="#0000dd"
android:type="linear"
/>
</shape>
</item>
</layer-list>
Шаг 2 создайте селектор xml с именем btn_background.xml и передайте атрибут layer_list xml в атрибуте drawable
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/layer1">
</item>
<item android:state_focused="true" android:drawable="@drawable/layer2">
</item>
<item android:drawable="@drawable/layer3">
</item>
</selector>
шаг 3
Установите селектор xml в качестве фона кнопки android:background="@drawable/btn_background"