Просмотр изображений увеличение и уменьшение внутри просмотра галереи в Android - PullRequest
1 голос
/ 16 сентября 2011

Я разрабатываю одно приложение для поддержки изображений, такое как приложение галереи.Работает нормально, но мне нужно реализовать эффект увеличения и уменьшения масштаба для полноразмерного просмотра изображений.В полноразмерном виде я использую галерею, а в галерее у меня есть изображения, которые отображаются по одному.Мне нужно реализовать масштабирование пинч для видимого изображения в виде галереи.

Я искал в сети долгое время, но у меня было только увеличение масштаба изображения при просмотре изображения, если я буду использовать это представление изображения в представлении галереи, представление галереи по методу прокрутки было скрывать только представление выполненных изображений onScroll () и onFling ()методы.так что у кого-нибудь есть идеи поделиться со мной.

Заранее спасибо

1 Ответ

3 голосов
/ 03 ноября 2011

Я на самом деле просто столкнулся с этим и работал через него.(В моем случае) Галерея захватывает события касания после самого первого касания (это происходит, когда 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 - это мой индикатор того, увеличено изображение или нет.Если изображение не перетаскивается, то есть не увеличивается, мы также передаем событие касания в Галерею для обнаружения пролистывания.

Удачи!

...