Оказывается, я преждевременно использовал событие touch в моей реализации onTouch (). Когда я увидел событие ACTION_UP, я использовал его, возвращая значение true, и поэтому распространение события было остановлено до того, как селектор получил его. Вместо этого, возвращая значение false, включается поведение селектора, и изображение возвращается к значению по умолчанию.
Другими словами, я n00b.
Причина, по которой я сначала этого не заметил, заключалась в том, что событие ACTION_DOWN, казалось, работало нормально, и я тоже его потреблял. Позже я обнаружил, что это было событие ACTION_MOVE, а не событие ACTION_DOWN, которое вызывало изменение изображения кнопки, поскольку я возвращал false для всех других событий.