1. implement a custom ViewPager Instance like this:
import android.content.Context; <br>import android.support.v4.view.ViewPager; <br>import android.util.AttributeSet; <br>import android.util.Log; <br>import android.view.MotionEvent;public class CustomViewPager extends ViewPager { private MagazineWebView_WithoutFlipWebView mCurrentPageWebView_; //custom webview public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent event) { if (Constants.LOGGING) { Log.v(Constants.LOG_OEAMTC_APP, "CustomViewPager - onInterceptTouchEvent"); } // if view zoomed out (view starts at 33.12... scale level) ... allow // zoom within webview, otherwise disallow (allow viewpager to change // view) if (mCurrentPageWebView_ != null && (mCurrentPageWebView_.getScale() * 100) > 34) {<br> Log.v(Constants.LOG_OEAMTC_APP, "CustomViewPager - intrcepted: " + String.valueOf((mCurrentPageWebView_.getScale() * > 100)));<br> this.requestDisallowInterceptTouchEvent(true); } else { if (mCurrentPageWebView_ != null) { Log.v(Constants.LOG_OEAMTC_APP, "CustomViewPager - not intrcepted: " + String.valueOf(mCurrentPageWebView_.getScale() * 100)); } this.requestDisallowInterceptTouchEvent(false); } return super.onInterceptTouchEvent(event); } public MagazineWebView_WithoutFlipWebView getCurrentPageWebView() { return mCurrentPageWebView_; } public void setCurrentPageWebView(MagazineWebView_WithoutFlipWebView currentPageWebView) { mCurrentPageWebView_ = currentPageWebView; }}
2. in your main (ViewPager) Activity add the following lines to the view pager
mViewPager_ = new AwesomePagerAdapter();<br> viewpapgerInLayout = (CustomViewPager) findViewById(R.id.awesomepager);<br> viewpapgerInLayout.setAdapter(mViewPager_);<br> viewpapgerInLayout.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {<br> @Override public void onPageSelected(int position) { viewpapgerInLayout.setCurrentPageWebView(mLstPagesWebviews_.get(position)); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { } });
3. finally, run it :=) if the zoom level is at initial zoom, changes pages is allowed, all the other time you can navigate your web view
Ps.: *Don't forget* to change your ViewPager in your *.xml file with the CustomViewPager Class you just created
good luck
share|edit|flag |
edited Jul 26 at 13:17Asok 37610 |
answered Jan 20 at 15:12cV2 631414 |