Я использую PhotoView Chris Bane для отображения ImageViews в ViewPager. Я хочу отключить прокрутку ViewPager, когда пользователь увеличил изображение. Я уже нашел это Hacky ViewPager, которое можно использовать для включения/выключения прокрутки путем вызова toggleLock().Зум-прослушиватель для PhotoView
public class HackyViewPager extends ViewPager {
private boolean isLocked;
public HackyViewPager(Context context) {
super(context);
isLocked = false;
}
public HackyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
isLocked = false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (!isLocked) {
try {
return super.onInterceptTouchEvent(ev);
}
catch (IllegalArgumentException e) {
e.printStackTrace();
return false;
}
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return !isLocked && super.onTouchEvent(event);
}
public void toggleLock() {
isLocked = !isLocked;
}
public void setLocked(boolean isLocked) {
this.isLocked = isLocked;
}
public boolean isLocked() {
return isLocked;
}
}
Итак, моя проблема заключается в том, что я не уверен, в какой момент мне нужно позвонить toogleLock(). Наверное, мне нужно реализовать слушателя, но я не уверен, какой из них был бы лучшим. Заранее спасибо за то, что помогли мне!
EDIT: Я понял это самостоятельно!
photoview.setOnMatrixChangeListener(new PhotoViewAttacher.OnMatrixChangedListener() {
@Override
public void onMatrixChanged(RectF rectF) {
if (photoview.getScale() > 1) {
sPager.setLocked(true);
} else {
sPager.setLocked(false);
}
}
});
Хорошо один человек! Одно замечание: проверка photoview.getScale! = 1 будет охватывать дополнительное масштабирование, когда оно уже находится в масштабе == 1. Я использовал это в ViewPager, и это перехватывало уменьшение. Это должно сделать трюк. – vchelbanster