Webview与ScrollView事件分发

在开发中我们经常遇到各种各样的与ScrollView的事件分发,如 ListView 、RecyclView等,那么今天我们就来说说WebView与ScrollView之间的事件分发,为什么会有这样的功能需要我们处理呢?因为WebView当页面铺满整个屏幕时,触摸向上向下是会自动的进行滚动的效果,而ScrollView是当各个控件如果多的时候,页面铺满了,为了能让一个页面能显示我们想要达到的效果而引用它,因为它具备自动滚动的效果。
所以,WebView与ScrollView要进行事件分发,才能达到我们想要的效果。

1、其实webView与ScrollView之间的事件分发与ListView、RecyleView没有多大的区别,这里讲一种,首先自定义一个MyScrollView去继承ScrollView,代码如下:

public class MyScrollView extends ScrollView {
  private GestureDetector mGesture;

  public MyScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
    mGesture= new GestureDetector(context, new YScrollDetector());
    setFadingEdgeLength(0);
  }

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    return super.onInterceptTouchEvent(ev) &&    
    mGesture.onTouchEvent(ev);
}
//当向上或者向下活动的时候进行分发
class YScrollDetector extends SimpleOnGestureListener {
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,    
        float distanceY) {
        if (Math.abs(distanceY) > Math.abs(distanceX)) {
            return true;
        }
        return false;
    }
}}

2、在布局文件中使用如下:

 
    
      

      

    


  

    
        

        
        
        
    


3、效果如图所示:
一、滑动前

Webview与ScrollView事件分发_第1张图片
S70227-165833.jpg

二、滑动后

Webview与ScrollView事件分发_第2张图片
S70227-165839.jpg

就很好的搞定了感谢老黄的实例 黄培忠 http://www.jianshu.com/u/61710f750c82 。代码以贴出。

你可能感兴趣的:(Webview与ScrollView事件分发)