diff --git a/app/src/main/java/com/gh/common/view/InterceptNestedScrollView.java b/app/src/main/java/com/gh/common/view/InterceptNestedScrollView.java
deleted file mode 100644
index 4987e9e31e..0000000000
--- a/app/src/main/java/com/gh/common/view/InterceptNestedScrollView.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.gh.common.view;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-import androidx.core.widget.NestedScrollView;
-
-public class InterceptNestedScrollView extends NestedScrollView {
-
-
- public InterceptNestedScrollView(Context context) {
- super(context);
- }
-
- public InterceptNestedScrollView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
-
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- getParent().requestDisallowInterceptTouchEvent(true);
- return super.dispatchTouchEvent(ev);
- }
-
-}
diff --git a/app/src/main/java/com/gh/common/view/NestedScrollWebView.java b/app/src/main/java/com/gh/common/view/NestedScrollWebView.java
new file mode 100644
index 0000000000..46b73bb3fc
--- /dev/null
+++ b/app/src/main/java/com/gh/common/view/NestedScrollWebView.java
@@ -0,0 +1,164 @@
+package com.gh.common.view;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+import androidx.core.view.MotionEventCompat;
+import androidx.core.view.NestedScrollingChild;
+import androidx.core.view.NestedScrollingChildHelper;
+import androidx.core.view.ViewCompat;
+import wendu.dsbridge.DWebView;
+
+public class NestedScrollWebView extends DWebView implements NestedScrollingChild {
+
+ public static final String TAG = NestedScrollWebView.class.getSimpleName();
+
+ private int mLastMotionY;
+
+ private final int[] mScrollOffset = new int[2];
+ private final int[] mScrollConsumed = new int[2];
+
+ private int mNestedYOffset;
+ private boolean mChange;
+
+ private NestedScrollingChildHelper mChildHelper;
+
+ public NestedScrollWebView(Context context) {
+ super(context);
+ init();
+ }
+
+ public NestedScrollWebView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+
+ private void init() {
+ mChildHelper = new NestedScrollingChildHelper(this);
+ setNestedScrollingEnabled(true);
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ getParent().requestDisallowInterceptTouchEvent(true);
+ return super.dispatchTouchEvent(ev);
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ boolean result = false;
+
+ MotionEvent trackedEvent = MotionEvent.obtain(event);
+
+ final int action = MotionEventCompat.getActionMasked(event);
+
+ if (action == MotionEvent.ACTION_DOWN) {
+ mNestedYOffset = 0;
+ }
+
+ int y = (int) event.getY();
+
+ event.offsetLocation(0, mNestedYOffset);
+
+ switch (action) {
+ case MotionEvent.ACTION_DOWN:
+ mLastMotionY = y;
+ startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL);
+ result = super.onTouchEvent(event);
+ mChange = false;
+ break;
+ case MotionEvent.ACTION_MOVE:
+ int deltaY = mLastMotionY - y;
+
+ if (dispatchNestedPreScroll(0, deltaY, mScrollConsumed, mScrollOffset)) {
+ deltaY -= mScrollConsumed[1];
+ trackedEvent.offsetLocation(0, mScrollOffset[1]);
+ mNestedYOffset += mScrollOffset[1];
+ }
+
+ int oldY = getScrollY();
+ mLastMotionY = y - mScrollOffset[1];
+ int newScrollY = Math.max(0, oldY + deltaY);
+ deltaY -= newScrollY - oldY;
+ if (dispatchNestedScroll(0, newScrollY - deltaY, 0, deltaY, mScrollOffset)) {
+ mLastMotionY -= mScrollOffset[1];
+ trackedEvent.offsetLocation(0, mScrollOffset[1]);
+ mNestedYOffset += mScrollOffset[1];
+ }
+ if(mScrollConsumed[1]==0 && mScrollOffset[1]==0) {
+ if(mChange){
+ mChange =false;
+ trackedEvent.setAction(MotionEvent.ACTION_DOWN);
+ super.onTouchEvent(trackedEvent);
+ }else {
+ result = super.onTouchEvent(trackedEvent);
+ }
+ trackedEvent.recycle();
+ }else{
+ if(Math.abs(mLastMotionY - y) >= 10) {
+ if (!mChange) {
+ mChange = true;
+ super.onTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0));
+ }
+ }
+
+ }
+ break;
+ case MotionEvent.ACTION_POINTER_DOWN:
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ stopNestedScroll();
+ result = super.onTouchEvent(event);
+ break;
+ }
+ return result;
+ }
+
+ // NestedScrollingChild
+ @Override
+ public void setNestedScrollingEnabled(boolean enabled) {
+ mChildHelper.setNestedScrollingEnabled(enabled);
+ }
+
+ @Override
+ public boolean isNestedScrollingEnabled() {
+ return mChildHelper.isNestedScrollingEnabled();
+ }
+
+ @Override
+ public boolean startNestedScroll(int axes) {
+ return mChildHelper.startNestedScroll(axes);
+ }
+
+ @Override
+ public void stopNestedScroll() {
+ mChildHelper.stopNestedScroll();
+ }
+
+ @Override
+ public boolean hasNestedScrollingParent() {
+ return mChildHelper.hasNestedScrollingParent();
+ }
+
+ @Override
+ public boolean dispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int[] offsetInWindow) {
+ return mChildHelper.dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, offsetInWindow);
+ }
+
+ @Override
+ public boolean dispatchNestedPreScroll(int dx, int dy, int[] consumed, int[] offsetInWindow) {
+ return mChildHelper.dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow);
+ }
+
+ @Override
+ public boolean dispatchNestedFling(float velocityX, float velocityY, boolean consumed) {
+ return mChildHelper.dispatchNestedFling(velocityX, velocityY, consumed);
+ }
+
+ @Override
+ public boolean dispatchNestedPreFling(float velocityX, float velocityY) {
+ return mChildHelper.dispatchNestedPreFling(velocityX, velocityY);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt
index a1a4f1a521..3416dd1dd3 100644
--- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt
@@ -480,7 +480,6 @@ class GameDetailFragment : NormalFragment() {
val webBundle = Bundle()
webBundle.putString(EntranceUtils.KEY_URL, "${it.link}?timestamp=${System.currentTimeMillis()}")
webBundle.putBoolean(WebFragment.KEY_OPEN_NATIVE_PAGE, true)
- webBundle.putBoolean(WebFragment.KEY_IS_ZONE_PAGE, true)
webFragment.arguments = webBundle
fragmentsList.add(webFragment)
} else {
diff --git a/app/src/main/java/com/halo/assistant/fragment/WebFragment.java b/app/src/main/java/com/halo/assistant/fragment/WebFragment.java
index 573e3585d1..35b5664bd9 100644
--- a/app/src/main/java/com/halo/assistant/fragment/WebFragment.java
+++ b/app/src/main/java/com/halo/assistant/fragment/WebFragment.java
@@ -76,7 +76,6 @@ public class WebFragment extends NormalFragment {
public static final String KEY_BACK_CONFIRMATION_CONTENT = "back_confirmation_content";
public static final String KEY_OPEN_NATIVE_PAGE = "open_native_page";
public static final String KEY_GAME_NAME = "game_name";
- public static final String KEY_IS_ZONE_PAGE = "is_zone_page";
@BindView(R.id.news_webview)
DWebView mWebView;
@@ -111,8 +110,7 @@ public class WebFragment extends NormalFragment {
@Override
protected int getLayoutId() {
- return getArguments().getBoolean(KEY_IS_ZONE_PAGE, false) ?
- R.layout.fragment_scrollview_web : R.layout.fragment_web;
+ return R.layout.fragment_web;
}
@Override
diff --git a/app/src/main/res/layout/fragment_scrollview_web.xml b/app/src/main/res/layout/fragment_scrollview_web.xml
deleted file mode 100644
index 52ec8091ee..0000000000
--- a/app/src/main/res/layout/fragment_scrollview_web.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_web.xml b/app/src/main/res/layout/fragment_web.xml
index bb86c7f3fd..fdb7882802 100644
--- a/app/src/main/res/layout/fragment_web.xml
+++ b/app/src/main/res/layout/fragment_web.xml
@@ -3,7 +3,7 @@
android:layout_width = "match_parent"
android:layout_height = "match_parent" >
-