1. 程式人生 > >解決android中viewpager和內嵌html滑動事件衝突

解決android中viewpager和內嵌html滑動事件衝突

           這幾天專案迭代,有個大的板塊是整體套用H5來做。由於H5裡還有好多小模組,需要一個滑動切換的效果,而android端只是提供一個空的fragment,佔據著viewpager的一個板塊。最開始的效果滑動起來分外尷尬。。

          解決思路是這樣的:當我們的觸控點在螢幕的左右邊緣的時候,讓viewpager來滾動,實現幾個fragment之間的切換,如果不是在邊緣觸發滑動的話,交給webview,由H5做相關的切換處理。

         final DisplayMetrics dm = new DisplayMetrics();
        WindowManager manager = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(dm);
        mWebview.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        int point = (int) event.getX();
                        if (point > 0 && point < 50 || point > dm.widthPixels - 50 && point < dm.widthPixels) {
                            mWebview.requestDisallowInterceptTouchEvent(false);
                        } else {
                            mWebview.requestDisallowInterceptTouchEvent(true);
                        }
                        break;
                }

                return false;
            }
        });

    我使用的手機是寬度1080畫素,手勢觸控在0~50和1030~1080間的時候做整體的滑動還是比較敏感的,如果這個是fragment滑動的觸控範圍太小的話比較困難。這是個比笨的方案了吧。如果有更好的建議請不吝賜教~