diff options
Diffstat (limited to 'app/src/main/java/uk/co/blatech/blaupload/ui/ZoomViewPager.java')
-rw-r--r-- | app/src/main/java/uk/co/blatech/blaupload/ui/ZoomViewPager.java | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/app/src/main/java/uk/co/blatech/blaupload/ui/ZoomViewPager.java b/app/src/main/java/uk/co/blatech/blaupload/ui/ZoomViewPager.java new file mode 100644 index 0000000..e0b837e --- /dev/null +++ b/app/src/main/java/uk/co/blatech/blaupload/ui/ZoomViewPager.java @@ -0,0 +1,75 @@ +package uk.co.blatech.blaupload.ui; + +import android.content.Context; +import android.support.v4.view.ViewPager; +import android.util.AttributeSet; +import android.view.MotionEvent; + +/** + * Found at http://stackoverflow.com/questions/7814017/is-it-possible-to-disable-scrolling-on-a-viewpager. + * Convenient way to temporarily disable ViewPager navigation while interacting with ImageView. + * + * Julia Zudikova + */ + +/** + * Hacky fix for Issue #4 and + * http://code.google.com/p/android/issues/detail?id=18990 + * <p/> + * ScaleGestureDetector seems to mess up the touch events, which means that + * ViewGroups which make use of onInterceptTouchEvent throw a lot of + * IllegalArgumentException: pointerIndex out of range. + * <p/> + * There's not much I can do in my code for now, but we can mask the result by + * just catching the problem and ignoring it. + * + * @author Chris Banes + */ +public class ZoomViewPager extends ViewPager { + + private boolean isLocked; + + public ZoomViewPager(Context context) { + super(context); + isLocked = false; + } + + public ZoomViewPager(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) { + if (!isLocked) { + return super.onTouchEvent(event); + } + return false; + } + + public void toggleLock() { + isLocked = !isLocked; + } + + public void setLocked(boolean isLocked) { + this.isLocked = isLocked; + } + + public boolean isLocked() { + return isLocked; + } + +}
\ No newline at end of file |