Tôi đang sử dụng PhotoView của Chris Bane để hiển thị ImageViews trong ViewPager. Tôi muốn tắt tính năng cuộn của ViewPager khi người dùng đã phóng to hình ảnh. Tôi đã tìm thấy điều này Hacky ViewPager có thể được sử dụng để bật/tắt tính năng cuộn bằng cách gọi toggleLock().Trình nghe thu phóng cho 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;
}
}
Vì vậy, vấn đề của tôi ở đây là tôi không chắc chắn vào thời điểm nào tôi phải gọi toogleLock(). Tôi đoán tôi phải thực hiện một người nghe, nhưng tôi không chắc người nghe nào là người giỏi nhất. Cảm ơn trước vì đã giúp tôi!
EDIT: Tôi đã tự mình tìm ra!
photoview.setOnMatrixChangeListener(new PhotoViewAttacher.OnMatrixChangedListener() {
@Override
public void onMatrixChanged(RectF rectF) {
if (photoview.getScale() > 1) {
sPager.setLocked(true);
} else {
sPager.setLocked(false);
}
}
});
Tốt nhất, người đàn ông! Một lưu ý: mặc dù: kiểm tra photoview.getScale! = 1 sẽ bao gồm thu phóng thêm khi đã ở tỷ lệ == 1. Tôi đã sử dụng tính năng này trong ViewPager và nó đã chặn việc thu nhỏ. Điều này nên làm các trick. – vchelbanster