Я на самом деле просто столкнулся с этим и работал через него.(В моем случае) Галерея захватывает события касания после самого первого касания (это происходит, когда ImageView.onTouchEvent () возвращает false), что никогда не позволяет ImageView обрабатывать эти события после самого первого.Это можно исправить, реализовав три вещи.
Во-первых, в вашем ImageView с возможностью масштабирования убедитесь, что onTouchEvent всегда возвращает true, чтобы указать, что он обрабатывает сенсорные события.Это гарантирует, что событие касания никогда не отправляется в галерею, что позволяет событию второго пальца и любому движению обрабатываться ImageView.
Во-вторых, вам нужно будет создать какой-то флаг в ImageView.указывая, действительно ли оно в настоящее время увеличено.
Последнее, вам нужно вручную захватить событие касания в Галерее, так как оно никогда не будет передано из ImageView.Это можно сделать, создав пользовательский класс, расширяющий Gallery, и переопределив onInterceptTouchEvent ().Этот метод захватывает событие касания, когда оно находится на пути к дочернему ImageView.Отмена этого дает нам возможность позволить ОБА ImageView и Галерее обрабатывать событие касания.Ниже приведен код, который работал для меня.
@Override
public boolean onInterceptTouchEvent( MotionEvent ev ) {
View view = getSelectedView();
CustomZoomImageView image = (CustomZoomImageView) view.findViewById( R.id.Image );
if ( !image.isDraggable ) {
onTouchEvent( ev );
}
return super.onInterceptTouchEvent( ev );
}
Переменная isDraggable - это мой индикатор того, увеличено изображение или нет.Если изображение не перетаскивается, то есть не увеличивается, мы также передаем событие касания в Галерею для обнаружения пролистывания.
Удачи!