WebView的缩放与左右滑动手势
来源:互联网 发布:数据终端设备干嘛用 编辑:程序博客网 时间:2024/05/16 11:44
在使用WebView的时候如果需要访问网页时,经常需要使用缩放,一般WebView都喜欢添加左右滑动的监听事件,可以方便的goBack和goForward。如果在打开放大的网页时,会出现一种情况就是,放大了以后需要左右的移动查看完整的内容,但同时左右移动查看的同时又会出发左右滑动的监听事件,导致goBack和goForward。所以为了解决这个问题,自己想了一种解决办法,经实验后发现有效,思路是在放大的时候屏蔽掉滑动的监听事件。
MainActivity.java
public MainActivity extends Activity { private final int FIRST_TIME = 0; private final int SECOND_TIME = 1; private final int SERVERAL_TIME = 2; private float orginalScale = 0; // 原始的scale private float currentScale = 0; // 当前页面的原始scale private int times = FIRST_TIME; // 记录当前页面的缩放次数,每次页面跳转的时候都需要将times设置为FIRST_TIME(注意!!!) private boolean canSlip = false; // 是否能左右滑动,因为缩放的时候需要屏蔽掉左右滑动防止goBack和goForward @Override public void onCreate(Bundle savedInstanceState) { // 设置缩放 webView.getSettings().setBuiltInZoomControls(true);// 使页面适应用户屏幕webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true);mWebView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {Toast.makeText(getActivity(), "Oh no! " + description, Toast.LENGTH_SHORT).show();super.onReceivedError(view, errorCode, description, failingUrl); } @Override public void onScaleChanged(WebView view, float oldScale, float newScale) { // 记录当前页面未缩放时的currentScale if (times == FIRST_TIME) { orginalScale = oldScale; currentScale = newScale; times = SECOND_TIME; } // 有手机版的网页启动时都会两次scale变化,这个currentScale是手机网页未缩放时的scale,原理不太明白 else if (times == SECOND_TIME && newScale == orginalScale) { currentScale = newScale; times = SERVERAL_TIME; } // 已经缩放了网页 else { times = SERVERAL_TIME; } // 如果当前缩放规模不等于未缩放时的规模,则不允许滑动切换网页 if (currentScale != newScale) { canSlip = false; } // 如果当前缩放规模等于未缩放时的规模,则允许滑动切换网页 else { canSlip = true; } super.onScaleChanged(view, oldScale, newScale); } }); } public boolean onTouchEvent(MotionEvent event) { if (canSlip) { gestureDetector.onTouchEvent(event); } return super.onTouchEvent(event); } }要获取WebView的缩放规模,本来可以使用getScale函数,但现在官方已经不推荐使用,推荐使用WebViewClient里面的onScaleChanged回调函数,所以缩放规模的判断放到此函数中。
0 0
- WebView的缩放与左右滑动手势
- uitableviewcell的左右滑动手势
- iOS UIScrollView左右滑动手势与返回手势冲突的解决办法
- unity 鼠标手势的左右滑动
- Unity3d 鼠标手势的左右滑动
- android 手势左右滑动
- android手势左右滑动
- android 手势左右滑动
- android 手势左右滑动
- android手势左右滑动
- ios 左右滑动手势
- viewPager+photoView实现图片轮播和手势缩放功能 支持手势缩放的imageView 如何实现相册左右滑动和手势缩放 如何让图片自适应控件大小 photoView如何使用(上)
- IOS 手势之左右滑动
- 使用手势模拟左右滑动
- 左右滑动与上下滑动的冲突
- 通过左右滑动缩放图片
- Android中Activity中左右滑动手势的监听
- Android处理手势识别的解决方法(左右滑动)
- ArrayList底层实现
- 请分别输入年月日三个数值,计算出这是这一年的第几天?
- 技术的未来
- O2O、C2C、B2B、B2C 区别
- Myeclipse里tomcat严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]
- WebView的缩放与左右滑动手势
- Struts2中的OGNL详解
- C++类函数小结
- 企业发放奖金,根据员工销售额提成.(超出部分)假如员工的销售额是i,那么计算规则如下:i < 10万,10%提成;。。。输入员工的销售额,计算出他的提成
- c语言中static的作用
- C#--如何获得文件保存路径的.txt文件
- 15/sep work summary:glassfish添加oracle数据源、mac切换java版本
- msyql 时间戳转日常时间
- HDU 5008 Boring String Problem(西安网络赛B题)