From 139f80f0cfd41c963ec2398118565ef6d11c5583 Mon Sep 17 00:00:00 2001 From: Paul Bourke Date: Mon, 24 Sep 2012 00:49:43 +0100 Subject: [PATCH] Disable ViewPager when photo viewer zoomed in Work around common limitation with GestureImageView when using with ViewPager. Requires some modifications to GestureImageView outlined at https://github.com/jasonpolites/gesture-imageview/issues/30 --- libs/gesture-imageview-6074916f.jar | Bin 27229 -> 0 bytes libs/gesture-imageview-c2e7e16f.jar | Bin 0 -> 27431 bytes res/layout/photoviewer.xml | 2 +- .../activities/PhotoViewerActivity.java | 16 +++++-- .../glimmr/common/ViewPagerDisable.java | 42 ++++++++++++++++ src/com/bourke/glimmr/event/Events.java | 4 -- .../fragments/viewer/PhotoViewerFragment.java | 45 +++++++++++++----- 7 files changed, 86 insertions(+), 23 deletions(-) delete mode 100644 libs/gesture-imageview-6074916f.jar create mode 100644 libs/gesture-imageview-c2e7e16f.jar create mode 100644 src/com/bourke/glimmr/common/ViewPagerDisable.java diff --git a/libs/gesture-imageview-6074916f.jar b/libs/gesture-imageview-6074916f.jar deleted file mode 100644 index cdf6d4d2800f3d478883e9b99dfad3f8e50e8ecb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27229 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 - diff --git a/src/com/bourke/glimmr/activities/PhotoViewerActivity.java b/src/com/bourke/glimmr/activities/PhotoViewerActivity.java index f3b5369..51a5306 100644 --- a/src/com/bourke/glimmr/activities/PhotoViewerActivity.java +++ b/src/com/bourke/glimmr/activities/PhotoViewerActivity.java @@ -7,12 +7,11 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; -import android.support.v4.view.ViewPager; +import com.bourke.glimmr.common.ViewPagerDisable; import android.util.Log; import com.bourke.glimmr.common.Constants; -import com.bourke.glimmr.event.Events.IOverlayVisbilityListener; import com.bourke.glimmr.fragments.viewer.PhotoViewerFragment; import com.bourke.glimmr.R; @@ -26,6 +25,7 @@ import java.util.ArrayList; import java.util.List; import com.googlecode.flickrjandroid.people.User; +import android.support.v4.view.ViewPager; /** * Activity for viewing photos. @@ -34,14 +34,15 @@ * a startIndex in a zoomable ImageView. */ public class PhotoViewerActivity extends BaseActivity - implements ViewPager.OnPageChangeListener, IOverlayVisbilityListener { + implements ViewPager.OnPageChangeListener, + PhotoViewerFragment.IPhotoViewerCallbacks { private static final String TAG = "Glimmr/PhotoViewerActivity"; private List mPhotos = new ArrayList(); private PhotoViewerPagerAdapter mAdapter; - private ViewPager mPager; + private ViewPagerDisable mPager; private List> mFragList = new ArrayList>(); @@ -72,7 +73,7 @@ private void handleIntent(Intent intent) { } mAdapter = new PhotoViewerPagerAdapter(getSupportFragmentManager()); - mPager = (ViewPager) findViewById(R.id.pager); + mPager = (ViewPagerDisable) findViewById(R.id.pager); mPager.setAdapter(mAdapter); /* Don't show the PageIndicator if there's a lot of items */ if (mPhotos.size() <= Constants.LINE_PAGE_INDICATOR_LIMIT) { @@ -128,6 +129,11 @@ public void onVisibilityChanged() { } } + @Override + public void onZoomed(boolean isZoomed) { + mPager.setPagingEnabled(!isZoomed); + } + class PhotoViewerPagerAdapter extends FragmentStatePagerAdapter { public PhotoViewerPagerAdapter(FragmentManager fm) { super(fm); diff --git a/src/com/bourke/glimmr/common/ViewPagerDisable.java b/src/com/bourke/glimmr/common/ViewPagerDisable.java new file mode 100644 index 0000000..9b689f3 --- /dev/null +++ b/src/com/bourke/glimmr/common/ViewPagerDisable.java @@ -0,0 +1,42 @@ +package com.bourke.glimmr.common; + +import android.content.Context; + +import android.support.v4.view.ViewPager; + +import android.util.AttributeSet; + +import android.view.MotionEvent; + +/** + * Extend ViewPager to allow the paging to be disabled/mEnabled. + */ +public class ViewPagerDisable extends ViewPager { + + private boolean mEnabled; + + public ViewPagerDisable(Context context, AttributeSet attrs) { + super(context, attrs); + mEnabled = true; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (mEnabled) { + return super.onTouchEvent(event); + } + return false; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + if (mEnabled) { + return super.onInterceptTouchEvent(event); + } + return false; + } + + public void setPagingEnabled(boolean enabled) { + mEnabled = enabled; + } +} diff --git a/src/com/bourke/glimmr/event/Events.java b/src/com/bourke/glimmr/event/Events.java index 5e31ea4..8179feb 100644 --- a/src/com/bourke/glimmr/event/Events.java +++ b/src/com/bourke/glimmr/event/Events.java @@ -60,8 +60,4 @@ public interface IPhotoInfoReadyListener { public interface ICommentAddedListener { void onCommentAdded(String commentId); } - - public interface IOverlayVisbilityListener { - void onVisibilityChanged(); - } } diff --git a/src/com/bourke/glimmr/fragments/viewer/PhotoViewerFragment.java b/src/com/bourke/glimmr/fragments/viewer/PhotoViewerFragment.java index 823c7c7..e7a9c89 100644 --- a/src/com/bourke/glimmr/fragments/viewer/PhotoViewerFragment.java +++ b/src/com/bourke/glimmr/fragments/viewer/PhotoViewerFragment.java @@ -1,6 +1,8 @@ package com.bourke.glimmr.fragments.viewer; +import com.bourke.glimmr.activities.PhotoViewerActivity; import com.actionbarsherlock.widget.ShareActionProvider; +import com.polites.android.GestureImageView; import android.content.Intent; import android.os.Bundle; @@ -23,7 +25,6 @@ import com.bourke.glimmr.activities.ExifInfoDialogActivity; import com.bourke.glimmr.common.Constants; import com.bourke.glimmr.event.Events.IFavoriteReadyListener; -import com.bourke.glimmr.event.Events.IOverlayVisbilityListener; import com.bourke.glimmr.event.Events.IPhotoInfoReadyListener; import com.bourke.glimmr.fragments.base.BaseFragment; import com.bourke.glimmr.fragments.viewer.PhotoViewerFragment; @@ -34,6 +35,7 @@ import com.googlecode.flickrjandroid.photos.Photo; import java.util.concurrent.atomic.AtomicBoolean; +import android.view.MotionEvent; public final class PhotoViewerFragment extends BaseFragment implements IPhotoInfoReadyListener, IFavoriteReadyListener { @@ -46,15 +48,15 @@ public final class PhotoViewerFragment extends BaseFragment private MenuItem mFavoriteButton; private LoadPhotoInfoTask mTask; private AtomicBoolean mIsFavoriting = new AtomicBoolean(false); - private IOverlayVisbilityListener mVisibilityListener; + private IPhotoViewerCallbacks mListener; public static PhotoViewerFragment newInstance(Photo photo, - IOverlayVisbilityListener visiblityListener) { + IPhotoViewerCallbacks listener) { if (Constants.DEBUG) Log.d("Glimmr/PhotoViewerFragment", "newInstance"); PhotoViewerFragment photoFragment = new PhotoViewerFragment(); photoFragment.mBasePhoto = photo; - photoFragment.mVisibilityListener = visiblityListener; + photoFragment.mListener = listener; return photoFragment; } @@ -71,16 +73,28 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mLayout = (RelativeLayout) inflater.inflate( R.layout.photoviewer_fragment, container, false); mAq = new AQuery(mActivity, mLayout); - mAq.id(R.id.image).clicked( - new View.OnClickListener() { - @Override - public void onClick(View v) { - /* Set our own visiblity and update others */ - setOverlayVisibility(mActionBar.isShowing()); - mVisibilityListener.onVisibilityChanged(); - } - }); + + mAq.id(R.id.image).clicked(new View.OnClickListener() { + @Override + public void onClick(View v) { + /* Set our own visiblity and update others */ + setOverlayVisibility(mActionBar.isShowing()); + mListener.onVisibilityChanged(); + } + }); + + final GestureImageView i = + (GestureImageView) mLayout.findViewById(R.id.image); + i.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + mListener.onZoomed(i.isZoomed()); + return false; + } + }); + refreshOverlayVisibility(); + return mLayout; } @@ -320,4 +334,9 @@ public void refreshOverlayVisibility() { protected String getLogTag() { return TAG; } + + public interface IPhotoViewerCallbacks { + void onVisibilityChanged(); + void onZoomed(boolean isZoomed); + } }