ViewPager2 嵌套WebView 處理滑動(dòng)沖突

先說結(jié)論
嵌套后webview豎向滑動(dòng)一卡一卡的播掷,最后修改ViewPager2的最小切換頁面邊距降低切換靈敏度烘豹,使一些常規(guī)滑動(dòng)不會(huì)被攔截

try {
    final Field recyclerViewField = ViewPager2.class.getDeclaredField("mRecyclerView");
    recyclerViewField.setAccessible(true);
    final RecyclerView recyclerView = (RecyclerView) recyclerViewField.get(viewPager);
    final Field touchSlopField = RecyclerView.class.getDeclaredField("mTouchSlop");
    touchSlopField.setAccessible(true);
    final int touchSlop = (int) touchSlopField.get(recyclerView);
    touchSlopField.set(recyclerView, touchSlop*5);//通過獲取原有的最小滑動(dòng)距離 *n來增加此值
} catch (Exception ignore) {
}

處理完垂直滑動(dòng),又來了橫向滑動(dòng)

addJavascriptInterface WebView網(wǎng)頁端通知原生是否需要橫向滑動(dòng),設(shè)置boolean標(biāo)志
webMoveX = (TextUtils.equals(event,"DOWN")||TextUtils.equals(event,"MOVE_X"));
重寫onTouchEvent在webview需要滑動(dòng)的時(shí)候通知父控件不要攔截事件
@Override
public boolean onTouchEvent(MotionEvent event) {
if (webMoveX) {
super.requestDisallowInterceptTouchEvent(true);
}
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
downFlag = true;
break;
case MotionEvent.ACTION_MOVE:
float dx = Math.abs(event.getX() - startX);
float dy = Math.abs(event.getY() - startY);
//首次為豎直滑動(dòng) 后續(xù)滑動(dòng)webview處理
if (downFlag && dy > dx){
super.requestDisallowInterceptTouchEvent(true);
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
downFlag = false;
break;
}
return super.onTouchEvent(event);
}

提供一個(gè)簡易處理初始上下滑動(dòng)WebView然后左右滑動(dòng)觸發(fā)ViewPager2切換沖突的方案

    //重寫webview  onScrollChanged  優(yōu)先響應(yīng)webview內(nèi)部滑動(dòng) 如果webview內(nèi)部滑動(dòng)完成瘟裸,則響應(yīng)外部的滑動(dòng),把webview包含到下拉刷新后此方法不調(diào)用了棍郎,調(diào)用的是下拉刷新的該方法.待研究...
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        //處理初始上下滑動(dòng)WebView然后左右滑動(dòng)觸發(fā)ViewPager2切換
        super.requestDisallowInterceptTouchEvent(true);
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (webMoveX) {
            super.requestDisallowInterceptTouchEvent(true);
        }
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                startX = event.getX();
                startY = event.getY();
                downFlag = true;
                break;
            case MotionEvent.ACTION_MOVE:
                float dx = Math.abs(event.getX() - startX);
                float dy = Math.abs(event.getY() - startY);
                //首次為豎直滑動(dòng)且非下拉刷新 后續(xù)滑動(dòng)webview處理
                if (!pullToRefresh && downFlag && dy > dx){
                    super.requestDisallowInterceptTouchEvent(true);
                }
                break;
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_CANCEL:
                downFlag = false;
                break;
        }
        return super.onTouchEvent(event);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钦讳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子掐暮,更是在濱河造成了極大的恐慌蝎抽,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件路克,死亡現(xiàn)場離奇詭異樟结,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)精算,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門瓢宦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灰羽,你說我怎么就攤上這事驮履。” “怎么了廉嚼?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵玫镐,是天一觀的道長。 經(jīng)常有香客問我怠噪,道長恐似,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任傍念,我火速辦了婚禮矫夷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捂寿。我一直安慰自己口四,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布秦陋。 她就那樣靜靜地躺著蔓彩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赤嚼,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天旷赖,我揣著相機(jī)與錄音,去河邊找鬼更卒。 笑死等孵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹂空。 我是一名探鬼主播俯萌,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼上枕!你這毒婦竟也來了咐熙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤辨萍,失蹤者是張志新(化名)和其女友劉穎棋恼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锈玉,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爪飘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拉背。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片师崎。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖去团,靈堂內(nèi)的尸體忽然破棺而出抡诞,到底是詐尸還是另有隱情,我是刑警寧澤土陪,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站肴熏,受9級特大地震影響鬼雀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛙吏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一源哩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鸦做,春花似錦励烦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春屉栓,著一層夾襖步出監(jiān)牢的瞬間舷蒲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工友多, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牲平,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓域滥,卻偏偏與公主長得像纵柿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子启绰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容