mirror of
https://github.com/Tencent/Hippy.git
synced 2026-10-29 06:06:52 +08:00
fix(android): scroll view page scroll problem
This commit is contained in:
+18
-7
@@ -18,6 +18,7 @@ package com.tencent.mtt.hippy.views.scroll;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.widget.HorizontalScrollView;
|
||||
@@ -137,7 +138,6 @@ public class HippyHorizontalScrollView extends HorizontalScrollView implements H
|
||||
int action = event.getAction() & MotionEvent.ACTION_MASK;
|
||||
if (action == MotionEvent.ACTION_DOWN && !mDragging) {
|
||||
mDragging = true;
|
||||
startScrollX = getScrollX();
|
||||
if (mScrollBeginDragEventEnable) {
|
||||
LogUtils.d("HippyHorizontalScrollView", "emitScrollBeginDragEvent");
|
||||
HippyScrollViewEventHelper.emitScrollBeginDragEvent(this);
|
||||
@@ -173,6 +173,12 @@ public class HippyHorizontalScrollView extends HorizontalScrollView implements H
|
||||
if (!mScrollEnabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int action = event.getAction() & MotionEvent.ACTION_MASK;
|
||||
if (action == MotionEvent.ACTION_DOWN) {
|
||||
startScrollX = getScrollX();
|
||||
}
|
||||
|
||||
if (super.onInterceptTouchEvent(event)) {
|
||||
if (mScrollBeginDragEventEnable) {
|
||||
LogUtils.d("HippyHorizontalScrollView", "emitScrollBeginDragEvent");
|
||||
@@ -223,22 +229,27 @@ public class HippyHorizontalScrollView extends HorizontalScrollView implements H
|
||||
}
|
||||
|
||||
protected void doPageScroll() {
|
||||
smoothScrollToPage();
|
||||
|
||||
if (mMomentumScrollBeginEventEnable) {
|
||||
HippyScrollViewEventHelper.emitScrollMomentumBeginEvent(this);
|
||||
}
|
||||
|
||||
smoothScrollToPage();
|
||||
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mMomentumScrollEndEventEnable) {
|
||||
HippyScrollViewEventHelper.emitScrollMomentumEndEvent(HippyHorizontalScrollView.this);
|
||||
if (mDoneFlinging) {
|
||||
if (mMomentumScrollEndEventEnable) {
|
||||
HippyScrollViewEventHelper.emitScrollMomentumEndEvent(HippyHorizontalScrollView.this);
|
||||
}
|
||||
} else {
|
||||
mDoneFlinging = true;
|
||||
postOnAnimationDelayed(this, HippyScrollViewEventHelper.MOMENTUM_DELAY);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
postOnAnimationDelayed(runnable, HippyScrollViewEventHelper.MOMENTUM_DELAY * 2);
|
||||
postOnAnimationDelayed(runnable, HippyScrollViewEventHelper.MOMENTUM_DELAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -283,7 +294,7 @@ public class HippyHorizontalScrollView extends HorizontalScrollView implements H
|
||||
|
||||
if ((page == maxPage - 1) && offset > 0) {
|
||||
page = page + 1;
|
||||
} else if (Math.abs(offset) > width/4) {
|
||||
} else if (Math.abs(offset) > width/5) {
|
||||
page = (offset > 0) ? page + 1 : page - 1;
|
||||
}
|
||||
|
||||
|
||||
+17
-7
@@ -117,7 +117,6 @@ public class HippyVerticalScrollView extends ScrollView implements HippyViewBase
|
||||
int action = event.getAction() & MotionEvent.ACTION_MASK;
|
||||
if (action == MotionEvent.ACTION_DOWN && !mDragging) {
|
||||
mDragging = true;
|
||||
startScrollY = getScrollY();
|
||||
if (mScrollBeginDragEventEnable) {
|
||||
HippyScrollViewEventHelper.emitScrollBeginDragEvent(this);
|
||||
}
|
||||
@@ -154,6 +153,12 @@ public class HippyVerticalScrollView extends ScrollView implements HippyViewBase
|
||||
if (!mScrollEnabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int action = event.getAction() & MotionEvent.ACTION_MASK;
|
||||
if (action == MotionEvent.ACTION_DOWN) {
|
||||
startScrollY = getScrollY();
|
||||
}
|
||||
|
||||
if (super.onInterceptTouchEvent(event)) {
|
||||
if (mScrollBeginDragEventEnable) {
|
||||
HippyScrollViewEventHelper.emitScrollBeginDragEvent(this);
|
||||
@@ -207,22 +212,27 @@ public class HippyVerticalScrollView extends ScrollView implements HippyViewBase
|
||||
}
|
||||
|
||||
protected void doPageScroll() {
|
||||
smoothScrollToPage();
|
||||
|
||||
if (mMomentumScrollBeginEventEnable) {
|
||||
HippyScrollViewEventHelper.emitScrollMomentumBeginEvent(this);
|
||||
}
|
||||
|
||||
smoothScrollToPage();
|
||||
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mMomentumScrollEndEventEnable) {
|
||||
HippyScrollViewEventHelper.emitScrollMomentumEndEvent(HippyVerticalScrollView.this);
|
||||
if (mDoneFlinging) {
|
||||
if (mMomentumScrollEndEventEnable) {
|
||||
HippyScrollViewEventHelper.emitScrollMomentumEndEvent(HippyVerticalScrollView.this);
|
||||
}
|
||||
} else {
|
||||
mDoneFlinging = true;
|
||||
postOnAnimationDelayed(this, HippyScrollViewEventHelper.MOMENTUM_DELAY);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
postOnAnimationDelayed(runnable, HippyScrollViewEventHelper.MOMENTUM_DELAY * 2);
|
||||
postOnAnimationDelayed(runnable, HippyScrollViewEventHelper.MOMENTUM_DELAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -267,7 +277,7 @@ public class HippyVerticalScrollView extends ScrollView implements HippyViewBase
|
||||
|
||||
if ((page == maxPage - 1) && offset > 0) {
|
||||
page = page + 1;
|
||||
} else if (Math.abs(offset) > height/4) {
|
||||
} else if (Math.abs(offset) > height/5) {
|
||||
page = (offset > 0) ? page + 1 : page - 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user