Java Code Examples for com.handmark.pulltorefresh.library.PullToRefreshBase.State#OVERSCROLLING

The following examples show how to use com.handmark.pulltorefresh.library.PullToRefreshBase.State#OVERSCROLLING . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: OverscrollHelper.java    From Social with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 2
Source File: OverscrollHelper.java    From sctalk with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 3
Source File: OverscrollHelper.java    From BigApp_Discuz_Android with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 4
Source File: OverscrollHelper.java    From FanXin-based-HuanXin with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 5
Source File: OverscrollHelper.java    From LbaizxfPulltoRefresh with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 6
Source File: OverscrollHelper.java    From GifAssistant with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 7
Source File: OverscrollHelper.java    From PullToRefreshLibrary with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 8
Source File: OverscrollHelper.java    From SweetMusicPlayer with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 9
Source File: OverscrollHelper.java    From ONE-Unofficial with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 10
Source File: OverscrollHelper.java    From bmob-android-demo-paging with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 11
Source File: OverscrollHelper.java    From iSCAU-Android with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 12
Source File: OverscrollHelper.java    From PullToRefresh-PinnedSection-ListView with MIT License 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 13
Source File: OverscrollHelper.java    From handmarkPulltorefreshLibrary with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 14
Source File: OverscrollHelper.java    From zen4android with MIT License 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 15
Source File: OverscrollHelper.java    From effective_android_sample with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}
 
Example 16
Source File: OverscrollHelper.java    From FacebookNewsfeedSample-Android with Apache License 2.0 4 votes vote down vote up
/**
 * Helper method for Overscrolling that encapsulates all of the necessary
 * function. This is the advanced version of the call.
 * 
 * @param view - PullToRefreshView that is calling this.
 * @param deltaX - Change in X in pixels, passed through from from
 *            overScrollBy call
 * @param scrollX - Current X scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param deltaY - Change in Y in pixels, passed through from from
 *            overScrollBy call
 * @param scrollY - Current Y scroll value in pixels before applying deltaY,
 *            passed through from from overScrollBy call
 * @param scrollRange - Scroll Range of the View, specifically needed for
 *            ScrollView
 * @param fuzzyThreshold - Threshold for which the values how fuzzy we
 *            should treat the other values. Needed for WebView as it
 *            doesn't always scroll back to it's edge. 0 = no fuzziness.
 * @param scaleFactor - Scale Factor for overscroll amount
 * @param isTouchEvent - true if this scroll operation is the result of a
 *            touch event, passed through from from overScrollBy call
 */
public static void overScrollBy(final PullToRefreshBase<?> view, final int deltaX, final int scrollX,
		final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
		final float scaleFactor, final boolean isTouchEvent) {

	final int deltaValue, currentScrollValue, scrollValue;
	switch (view.getPullToRefreshScrollDirection()) {
		case HORIZONTAL:
			deltaValue = deltaX;
			scrollValue = scrollX;
			currentScrollValue = view.getScrollX();
			break;
		case VERTICAL:
		default:
			deltaValue = deltaY;
			scrollValue = scrollY;
			currentScrollValue = view.getScrollY();
			break;
	}

	// Check that OverScroll is enabled and that we're not currently
	// refreshing.
	if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
		final Mode mode = view.getMode();

		// Check that Pull-to-Refresh is enabled, and the event isn't from
		// touch
		if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
			final int newScrollValue = (deltaValue + scrollValue);

			if (PullToRefreshBase.DEBUG) {
				Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
						+ ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
						+ ", CurrentScroll: " + currentScrollValue);
			}

			if (newScrollValue < (0 - fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showHeaderLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
				}
			} else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
				// Check the mode supports the overscroll direction, and
				// then move scroll
				if (mode.showFooterLoadingLayout()) {
					// If we're currently at zero, we're about to start
					// overscrolling, so change the state
					if (currentScrollValue == 0) {
						view.setState(State.OVERSCROLLING);
					}

					view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
				}
			} else if (Math.abs(newScrollValue) <= fuzzyThreshold
					|| Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
				// Means we've stopped overscrolling, so scroll back to 0
				view.setState(State.RESET);
			}
		} else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
			// This condition means that we were overscrolling from a fling,
			// but the user has touched the View and is now overscrolling
			// from touch instead. We need to just reset.
			view.setState(State.RESET);
		}
	}
}