美文网首页自定义view
自定义WebView解决WebView与RecyclerView

自定义WebView解决WebView与RecyclerView

作者: 依然爱幽默 | 来源:发表于2016-11-14 10:46 被阅读705次

    有这样一个需求:RecyclerView嵌套WebView时,当WebView显示宽度超出手机屏幕宽度时,需要用手指左右滑动WebView,但是由于手指在滑动时很难保持水平滑动,于是WebView和RecyclerView发生了滑动冲突,当手指稍微偏离水平方向时,WebView的滑动便停止,RecyclerView开始滑动,这样的体验很不好。于是乎便有了这样的自定义WebView:

        public class RecyclerViewFitWebView extends WebView {
            public float oldY;
            public float oldX;
            public float newY;
            public float newX;
    
            public RecyclerViewFitWebView(Context context) {
                super(context);
            }
    
            public RecyclerViewFitWebView(Context context, AttributeSet attrs) {
                super(context, attrs);
            }
    
            @Override
            public boolean onTouchEvent(MotionEvent ev) {
                getParent().getParent().requestDisallowInterceptTouchEvent(true);
                switch (ev.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        newX = ev.getX();
                        newY = ev.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        //手指滑动同时判断滑动方向,一旦滑动方向大于+-60便调用
                        //getParent().getParent().requestDisallowInterceptTouchEvent(false);
                        //将滑动事件交给RecyclerView来处理
                        oldX = newX;
                        oldY = newY;
                        newX = ev.getX();
                        newY = ev.getY();
                        float moveX = Math.abs(oldX - newX);
                        float moveY = Math.abs(oldY - newY);
                        //moveX * 1.73 < moveY  ,判断左右滑动范围为+-60度
                        if (moveX * 1.73 < moveY) {
                            getParent().getParent().requestDisallowInterceptTouchEvent(false);
                        }
                        break;
                }
                return super.onTouchEvent(ev);
            }
        }
    
    

    相关文章

      网友评论

      • 道是当时只是寻常:你好 RecyclerView item 是webview 滑动卡顿你那边又出现过吗 请问你是怎么处理的
        依然爱幽默:@BlueBoy_fb0d 我的weiview中显示的内容是固定的html字符串,内容比较简单,没试过痛过url从网络中获取数据
        道是当时只是寻常:@依然爱幽默 可以说下你的实现吗 这边列表中有多个webview 滑动的时候要重新设置 url 而且高度还要根据返回设置 所以会卡顿 请问 有没有解决方案 或者讲下你们的实现方式。谢谢
        依然爱幽默:@BlueBoy_fb0d 你好,我的项目中滑动很流畅,很少出现卡顿的现象

      本文标题:自定义WebView解决WebView与RecyclerView

      本文链接:https://www.haomeiwen.com/subject/vglhpttx.html