Android ViewPager 中嵌套webview 的滚动处理
16lz
2021-01-23
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:17 Asok 376 10 | answered Jan 20 at 15:12 cV2 631 4 14 |
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer