自定義WebView解決WebView與RecyclerView滑動(dòng)沖突

有這樣一個(gè)需求:RecyclerView嵌套WebView時(shí),當(dāng)WebView顯示寬度超出手機(jī)屏幕寬度時(shí),需要用手指左右滑動(dòng)WebView,但是由于手指在滑動(dòng)時(shí)很難保持水平滑動(dòng),于是WebView和RecyclerView發(fā)生了滑動(dòng)沖突,當(dāng)手指稍微偏離水平方向時(shí),WebView的滑動(dòng)便停止,RecyclerView開始滑動(dòng),這樣的體驗(yàn)很不好。于是乎便有了這樣的自定義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:
                    //手指滑動(dòng)同時(shí)判斷滑動(dòng)方向,一旦滑動(dòng)方向大于+-60便調(diào)用
                    //getParent().getParent().requestDisallowInterceptTouchEvent(false);
                    //將滑動(dòng)事件交給RecyclerView來(lái)處理
                    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  ,判斷左右滑動(dòng)范圍為+-60度
                    if (moveX * 1.73 < moveY) {
                        getParent().getParent().requestDisallowInterceptTouchEvent(false);
                    }
                    break;
            }
            return super.onTouchEvent(ev);
        }
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容