Welcome to mirror list, hosted at ThFree Co, Russian Federation.

AttachmentImageView.java « attachments « card « ui « deck « nextcloud « niedermann « it « java « main « src « app - github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 38c6209f3eae1f1f7d2e81b78ad736ada50cd27b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package it.niedermann.nextcloud.deck.ui.card.attachments;

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.otaliastudios.zoom.ZoomImageView;

public class AttachmentImageView extends ZoomImageView {
    public AttachmentImageZoomListener zoomListener;
    private GestureDetector gestureDetector;

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();

        gestureDetector = new GestureDetector(getContext(), new GestureListener());

        if (getContext() instanceof AttachmentImageZoomListener) {
            this.zoomListener = (AttachmentImageZoomListener) getContext();
        } else {
            throw new ClassCastException("Caller must implement " + AttachmentImageZoomListener.class.getCanonicalName());
        }
    }

    public AttachmentImageView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @SuppressLint("ClickableViewAccessibility")
    @Override
    public boolean onTouchEvent(@NonNull MotionEvent ev) {
        int pointerCount = ev.getPointerCount();

        boolean canChange = pointerCount == 1 && getZoom() <= 1;
        zoomListener.onAbleToChangePage(canChange);

        gestureDetector.onTouchEvent(ev);

        return super.onTouchEvent(ev);
    }

    private class GestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onDown(MotionEvent e) {
            return true;
        }

        @Override
        public boolean onDoubleTap(MotionEvent e) {
            float zoomLevel = 2;
            zoomTo(getZoom() < zoomLevel ? zoomLevel : 1, true);

            return true;
        }
    }
}