blob: 039f92dae051374f601ed69393e2517a5927c7d3 (
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.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;
import it.niedermann.nextcloud.deck.DeckLog;
public class AttachmentImageView extends ZoomImageView {
public AttachmentImageZoomListener zoomListener;
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);
}
@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;
}
}
}
|