В моем приложении для Android у меня есть ImageView
, где я хотел бы, чтобы пользователь мог бросить его влево/вправо/вверх/вниз, чтобы изменить изображение (статические карты) на соседнее. Но вдобавок хотелось бы возможности масштабирования щипком и саму карту.
Я могу заставить работать либо бросание, либо масштабирование, но не вместе. Я использую GestureDetector
(с SimpleOnGestureListener
) для броска. И я использую ScaleGestureDetector
(из Понимание мультитач) для масштабирования.
Трудность состоит в том, чтобы определить, какой слушатель жестов вызывать при касании. Это не проблема кодирования, а проблема логики. При касании одним пальцем это бросок или чешуя? Даже когда используется пинч-зум, начальный MotionEvent
— это ACTION_DOWN. Я пытался использовать размер изображения (внутренний или масштабированный?) в качестве точки принятия решения. Но начальная операция масштабирования (когда размер изображения является внутренним, и я хочу увеличить его) с ACTION_DOWN, кажется, ускользает от меня.
Кто-нибудь успешно справлялся с этим ранее?