Это в некоторой степени зависит от того, чего вы хотите достичь ...
Если вы хотите отобразить третий тип фона, когда у пользователя два пальца вниз, нет состояния рисования, на которое вы можете ссылаться напрямуювыполнить.Вам нужно будет совместить одно из существующих состояний, которое не часто используется в сенсорном режиме (например, выбранное состояние), и реализовать настраиваемый обработчик касания для объекта элемента списка, чтобы установить это состояние.Например, реализуйте onTouchEvent()
в представлении каждого элемента списка (или добавьте onTouchListener()
, если у вас нет пользовательского класса), найдите событие ACTION_POINTER_DOWN
, чтобы сообщить вам, что второй палец опустился, и вызовите setSelected()
в представлении для запуска рисования, которое вы установили для android:state_selected
в вашем <selector>
.
Если вы просто хотите очистить состояние в этом случае, вы можете отменить событие касания, когда более чемодин палец обнаружен.В этом случае вы пытаетесь настроить метод ListView.onInterceptTouchEvent()
для поиска события ACTION_PONTER_DOWN
и возврата true
.Это научит ListView
украсть касание обратно от его дочернего элемента вторым пальцем, что отменит нажатое состояние элемента списка.Обязательно перезвоните super
в этом случае, чтобы не нарушать всю существующую логику, ListView
используемую для прокрутки и т. Д.
Остерегайтесь случаев, когда существующая реализация AbsListView
может получитьпо-вашему здесь.Например, текущая реализация onIntercepTouchEvent()
ищет ACTION_POINTER_UP
для переключения основного сенсорного пальца с первого на второй.Это поведение может вызвать странные артефакты в вашей настройке, если вы не знаете об этом.
HTH.