Изменение фона кнопки при касании

Я хочу изменить зеленый фон кнопки, когда это коснется, не используя OnTouchListener. У меня есть такая ситуация: я кладу некоторые буты в слой, затем слой на другом слое и последний слой на другом слое. Когда я касаюсь кнопки, фон меняется (im используя OnTouchListener прямо сейчас), но если я перетаскиваю палец за пределы кнопки, а затем вынимаю его из экрана, фон кнопки остается изображением из состояния, когда он прикасается ( В противном случае, если я нажму кнопку, а финишер с кнопки – на фоне меняется фон)

1. Подготовьте 3 изображения для состояний кнопок и поместите их в папку с resource/drawable .

2. создайте новый XML-файл в папке res/drawable/ , в любом из имен, которые вы хотите, в этом случае мы просто укажем имя как my_button.xml . Этот файл определяет, какое состояние кнопки принадлежит какому изображению.

Теперь вы можете обратиться к этой кнопке с помощью этого Id: @ drawable / my_button.

Файл: res / drawable / my_button.xml

Создайте xml-файл, используя изображение кнопки, подобное этому с помощью my_button.xml в папке с возможностью my_button.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_pressed_yellow" android:state_pressed="true" /> <item android:drawable="@drawable/button_focused_orange" android:state_focused="true" /> <item android:drawable="@drawable/button_normal_green" /> </selector> 

Добавьте обычную кнопку и прикрепите фоновое изображение выше «my_button» через

 android:background:@drawable/my_button 

Селектор будет следующим:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/btn_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/btn_focused" /> <!-- focused --> <item android:drawable="@drawable/btn_default" /> <!-- default --> </selector>