Example usage for android.support.v4.widget NestedScrollView getScrollY

List of usage examples for android.support.v4.widget NestedScrollView getScrollY

Introduction

In this page you can find the example usage for android.support.v4.widget NestedScrollView getScrollY.

Prototype

public final int getScrollY() 

Source Link

Document

Return the scrolled top position of this view.

Usage

From source file:com.zzc.androidtrain.view.refresh.Utils.java

public static boolean syncOffset(SmoothAppBarLayout smoothAppBarLayout, View target, int verticalOffset,
        View scroll) {/*from w w w  .  ja  va 2s  .  c o  m*/
    boolean isSelected = target == scroll;
    if (scroll instanceof NestedScrollView) {
        NestedScrollView nestedScrollView = (NestedScrollView) scroll;
        if (nestedScrollView.getScrollY() < verticalOffset || (!isSelected && isScrollToTop(target))) {
            nestedScrollView.scrollTo(0, verticalOffset);
        }
        if (isSelected && (nestedScrollView.getScrollY() < verticalOffset || verticalOffset == 0)) {
            nestedScrollView.scrollTo(0, 0);
            smoothAppBarLayout.syncOffset(0);
        }
    } else if (scroll instanceof RecyclerView) {
        RecyclerView recyclerView = (RecyclerView) scroll;
        boolean isAccuracy = recyclerView.getLayoutManager()
                .findViewByPosition(ObservableRecyclerView.HEADER_VIEW_POSITION) != null;
        if (isAccuracy && recyclerView.computeVerticalScrollOffset() < verticalOffset) {
            recyclerView.scrollBy(0, verticalOffset - recyclerView.computeVerticalScrollOffset());
        } else if (!isSelected && isScrollToTop(target)) {
            recyclerView.scrollToPosition(ObservableRecyclerView.HEADER_VIEW_POSITION);
        }
        if (isAccuracy && isSelected
                && (recyclerView.computeVerticalScrollOffset() < verticalOffset || verticalOffset == 0)) {
            recyclerView.scrollToPosition(ObservableRecyclerView.HEADER_VIEW_POSITION);
            smoothAppBarLayout.syncOffset(0);
        }
    }
    return true;
}

From source file:com.android.argb.edhlc.Utils.java

public static void makeViewVisible(View view) {
    int viewTop = view.getTop();
    int viewBottom = view.getBottom();

    for (;;) {/*from w w w .j av a  2  s .c om*/
        ViewParent viewParent = view.getParent();
        if (viewParent == null || !(viewParent instanceof ViewGroup))
            break;

        ViewGroup viewGroupParent = (ViewGroup) viewParent;
        if (viewGroupParent instanceof NestedScrollView) {

            NestedScrollView nestedScrollView = (NestedScrollView) viewGroupParent;
            int height = nestedScrollView.getHeight();
            int screenTop = nestedScrollView.getScrollY();
            int screenBottom = screenTop + height;
            int fadingEdge = nestedScrollView.getVerticalFadingEdgeLength();

            // leave room for top fading edge as long as rect isn't at very top
            if (viewTop > 0)
                screenTop += fadingEdge;

            // leave room for bottom fading edge as long as rect isn't at very bottom
            if (viewBottom < nestedScrollView.getChildAt(0).getHeight())
                screenBottom -= fadingEdge;

            int scrollYDelta = 0;

            if (viewBottom > screenBottom && viewTop > screenTop) {
                // need to move down to get it in view: move down just enough so
                // that the entire rectangle is in view (or at least the first
                // screen size chunk).

                if (viewBottom - viewTop > height) // just enough to get screen size chunk on
                    scrollYDelta += (viewTop - screenTop);
                else // get entire rect at bottom of screen
                    scrollYDelta += (viewBottom - screenBottom);

                // make sure we aren't scrolling beyond the end of our content
                int bottom = nestedScrollView.getChildAt(0).getBottom();
                int distanceToBottom = bottom - screenBottom;
                scrollYDelta = Math.min(scrollYDelta, distanceToBottom);

            } else if (viewTop < screenTop && viewBottom < screenBottom) {
                // need to move up to get it in view: move up just enough so that
                // entire rectangle is in view (or at least the first screen
                // size chunk of it).

                if (viewBottom - viewTop > height) // screen size chunk
                    scrollYDelta -= (screenBottom - viewBottom);
                else // entire rect at top
                    scrollYDelta -= (screenTop - viewTop);

                // make sure we aren't scrolling any further than the top our content
                scrollYDelta = Math.max(scrollYDelta, -nestedScrollView.getScrollY());
            }
            nestedScrollView.smoothScrollBy(0, scrollYDelta);
            break;
        }
        // Transform coordinates to parent:
        int dy = viewGroupParent.getTop() - viewGroupParent.getScrollY();
        viewTop += dy;
        viewBottom += dy;

        view = viewGroupParent;
    }
}

From source file:com.cryart.sabbathschool.viewmodel.SSReadingViewModel.java

@Override
public void onSelectionStarted(float x, float y) {
    if (ssReadingActivityBinding != null) {
        LinearLayout view = ssReadingActivityBinding.ssReadingViewPager.findViewWithTag(
                "ssReadingView_" + ssReadingActivityBinding.ssReadingViewPager.getCurrentItem());
        NestedScrollView scrollView = view.findViewById(R.id.ss_reading_view_scroll);

        y = y - scrollView.getScrollY() + ssReadingActivityBinding.ssReadingViewPager.getTop();

        DisplayMetrics metrics = new DisplayMetrics();
        ((SSReadingActivity) context).getWindowManager().getDefaultDisplay().getMetrics(metrics);
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) ssReadingActivityBinding.ssContextMenu.ssReadingContextMenu
                .getLayoutParams();/* w  w w . jav  a  2 s. c om*/

        int contextMenuWidth = ssReadingActivityBinding.ssContextMenu.ssReadingContextMenu.getWidth();
        int contextMenuHeight = ssReadingActivityBinding.ssContextMenu.ssReadingContextMenu.getHeight();

        int screenWidth = metrics.widthPixels;
        int screenHeight = metrics.heightPixels;

        int margin = SSHelper.convertDpToPixels(context, 20);
        int jumpMargin = SSHelper.convertDpToPixels(context, 60);

        int contextMenuX = (int) x - (contextMenuWidth / 2);
        int contextMenuY = scrollView.getTop() + (int) y - contextMenuHeight - margin;

        if (contextMenuX - margin < 0) {
            contextMenuX = margin;
        }

        if (contextMenuX + contextMenuWidth + margin > screenWidth) {
            contextMenuX = screenWidth - margin - contextMenuWidth;
        }

        if (contextMenuY - margin < 0) {
            contextMenuY = contextMenuY + contextMenuHeight + jumpMargin;
        }

        params.setMargins(contextMenuX, contextMenuY, 0, 0);
        ssReadingActivityBinding.ssContextMenu.ssReadingContextMenu.setLayoutParams(params);
        ssReadingActivityBinding.ssContextMenu.ssReadingContextMenu.setVisibility(View.VISIBLE);
        highlightId = 0;
    }
}