Я подключил ScaleGestureDetector к OnTouchListener, как указано в документации Android. По какой-то причине ScaleGestureDetector не всегда обнаруживает конец жеста сжатия. Чаще всего это происходит при быстром пережатии от большого к меньшему.
Эффект заключается в том, что после того, как я отпустил оба пальца, детектор не запускает событие окончания жеста. Если я коснусь экрана одним из них после этого, он все равно будет думать, что я продолжаю жест масштабирования (продолжает запускать события onScale). Мне нужно сделать еще один жест, чтобы детектор сработал в конце события.
Я добавил журналы в OnTouchListener, и когда жест масштабирования застревает, я по-прежнему обычно получаю события движения при использовании одного пальца, а event.getPointerCount() равно 1.
Я удостоверился, что у меня нет никаких других слушателей, вмешивающихся. Представление с onTouchListener — не единственное представление на экране, но этот эффект возникает и тогда, когда я очень осторожно начинаю и заканчиваю жест внутри этого представления.
Есть ли способ улучшить обнаружение конца?
Или, если я могу вручную настроить ScaleGestureDetector на запуск onScaleEnd и изменить scaleGestureDetector.isInProgress()
на false?