解決android中viewpager和內嵌html滑動事件衝突
阿新 • • 發佈:2019-02-02
這幾天專案迭代,有個大的板塊是整體套用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滑動的觸控範圍太小的話比較困難。這是個比笨的方案了吧。如果有更好的建議請不吝賜教~