我正在使用Chris Bane的PhotoView在ViewPager中顯示ImageViews。我想在用戶放大圖像時禁用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()。我想我必須實現一個聽衆,但我不確定哪一個會是最好的。預先感謝幫助我!
編輯:我想出了我自己的!
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時,將會覆蓋在scale == 1時的額外縮小。 我在ViewPager中使用它,它攔截了縮小。這一個應該做的伎倆。 – vchelbanster