zoukankan      html  css  js  c++  java
  • webview 实现滑动前进后退功能

    实现该功能大家一定会想到在OnTouchListener里实现

    webview.setOnTouchListener(new OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        startX = (int) event.getX();
                        break;
                    case MotionEvent.ACTION_UP:
                        int endX = (int) event.getX();
                        if(endX>startX && webview.canGoBack() && endX-startX>scrollSize){
                            webview.goBack();
                        }else if(endX<startX &&webview.canGoForward() && startX-endX>scrollSize){
                            webview.goForward();
                        }
                        break;
                    default:
                        break;
                    }
                    return false;
                }
            });

    这里要注意的是,返回值要为false,将此事件继续向下传递.否则会引起 超链接不起作用的问题.

    将onTouch()事件中的返回值改为false之后,有时候仍然还是不会触发onTouch()事件,那是因为加了缩放功能,使得Touch事件会失效。由于webview的缩放同样会响应onTouch事件的,所以会覆盖掉我们自己设置的onTouhc监听,引起了事件的冲突。

    解决冲突的方法如下:

    将touch事件写到dispatchTouchEvent中

    @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
    
            webview.setOnTouchListener(new OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        startX = (int) event.getX();
                        break;
                    case MotionEvent.ACTION_UP:
                        int endX = (int) event.getX();
                        if(endX>startX && webview.canGoBack() && endX-startX>scrollSize){
                            webview.goBack();
                        }else if(endX<startX &&webview.canGoForward() && startX-endX>scrollSize){
                            webview.goForward();
                        }
                        break;
                    default:
                        break;
                    }
                    return false;
                }
            });
            return super.dispatchTouchEvent(ev);
        }


  • 相关阅读:
    Swift入门篇-Hello World
    Swift入门篇-swift简介
    Minecraft 插件 world edit 的cs 命令
    搭建本地MAVEN NEXUS 服务
    MC java 远程调试 plugin 开发
    企业内部从零开始安装docker hadoop 提纲
    javascript 命令方式 测试例子
    ca des key crt scr
    JSF 抽象和实现例子 (函数和属性)
    form 上传 html 代码
  • 原文地址:https://www.cnblogs.com/kelina2mark/p/5336487.html
Copyright © 2011-2022 走看看