Android 在ScrollView中使用OnOverScroll
您如何在Android 在ScrollView中使用OnOverScroll,android,scrollview,Android,Scrollview,您如何在滚动视图中准确使用onOverScrolled protected void onOverScrolled (int scrollX, int scrollY, boolean clampedX, boolean clampedY) clampedX和clampedY布尔值确实会告诉我是否发生过滚动,但滚动值并没有说明过滚动的程度(它们总是0或最大滚动)。他们的观点是什么 而且,它总是被呼叫。我希望只有当其中一个钳制值为true时才会调用它。我对ScrollView进行了子类化,以提供
滚动视图
中准确使用onOverScrolled
protected void onOverScrolled (int scrollX, int scrollY, boolean clampedX, boolean clampedY)
clampedX
和clampedY
布尔值确实会告诉我是否发生过滚动,但滚动值并没有说明过滚动的程度(它们总是0或最大滚动)。他们的观点是什么
而且,它总是被呼叫。我希望只有当其中一个钳制值为true时才会调用它。我对ScrollView进行了子类化,以提供更有用的OnOverScrold。看起来是这样的:
public interface OnOverScrolledListener {
void onOverScrolled(android.widget.ScrollView scrollView,
int deltaX, int deltaY, boolean clampedX, boolean clampedY);
}
private OnOverScrolledListener mOnOverScrolledListener;
private int mOverScrollByDeltaX;
private int mOverScrollByDeltaY;
@Override protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
this.mOverScrollByDeltaX = deltaX;
this.mOverScrollByDeltaY = deltaY;
final boolean result = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
return result;
};
@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
if (mOnOverScrolledListener != null && (clampedX || clampedY)) {
mOnOverScrolledListener.onOverScrolled(this, mOverScrollByDeltaX, mOverScrollByDeltaY, clampedX, clampedY);
}
}
public OnOverScrolledListener getOnOverScrolledListener() {
return mOnOverScrolledListener;
}
public void setOnOverScrolledListener(OnOverScrolledListener onOverScrolledListener) {
this.mOnOverScrolledListener = onOverScrolledListener;
}