PhotoViewAttacher
boolean onFling(MotionEvent, MotionEvent, float, float)
предотвращает вызов метода onFling
моего OnSingleFlingListener
, если текущая шкала не является минимальной.
Я реализовал OnSingleFlingListener
из com.github.chrisbanes.photoview
.Однако, поскольку метод onFling
виден только пакету, сначала вызывается метод PhotoViewAttacher
onFling
.PhotoViewAttacher.onFling
предотвращает вызов моего onFling
метода при scale > DEFAULT_MIN_SCALE
.Мне нужно позвонить, если только scale > getMediumScale()
.(scale == getMediumScale()
когда ширина моего изображения соответствует ширине окна.) Как я могу обойти это?Нужно ли мне делать собственную копию всего пакета PhotoView
и изменять OnSingleFlingListener.onFling
, чтобы он был общедоступным?
Мой код:
public class BasicViewActivity extends AppCompatActivity implements DownloadCallback, OnSingleFlingListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
. . .
return true;
}
OnSingleFlingListener:
package com.github.chrisbanes.photoview;
public interface OnSingleFlingListener {
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY);
}
PhotoViewAttacher:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (mSingleFlingListener != null) {
if (getScale() > DEFAULT_MIN_SCALE) {
return false;
}
. . .
return mSingleFlingListener.onFling(e1, e2, velocityX, velocityY);
}
return false;
}
Я хочу, чтобы мой onFling
вызывался при getScale() <= getMediumScale()
.Вместо этого мой onFling
метод вызывается только тогда, когда getScale() == DEFAULT_MIN_SCALE
.