WebView和手势识别有冲突--个人笔记

手势识别和webview很多时候会出现冲突,一般我们用于接收GestureDetector对象的方法是OnTouchevent();,而在View组件占用了屏幕空间之后,这个方法就无效了,只有换成 dispatchTouchEvent方法才有效!

GestureDetector detector = new GestureDetector(this,this);

需要重写的方法

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {    
            detector.onTouchEvent(ev);        
            webView.onTouchEvent(ev);//这几行代码也要执行,将webview载入MotionEvent对象一下,况且用载入把,不知道用什么表述合适    
    return super.dispatchTouchEvent(ev);
}

下面是滑动的识别,可以记录一下
//滑动

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {    
    if(e1!=null){        
        float beginY = e1.getY();        
        float endY = e2.getY();        
        if(beginY-endY>60&&Math.abs(velocityY)>0){   //上滑            
            layout.setVisibility(View.GONE);        
        }else if(endY-beginY>60&&Math.abs(velocityY)>0){   //下滑       
            layout.setVisibility(View.VISIBLE);        
        }    
    }    
    return false;
}
    原文作者:不识水的鱼
    原文地址: https://www.jianshu.com/p/4e05ce75ba7b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞