List of usage examples for android.support.v4.widget NestedScrollView getScrollY
public final int getScrollY()
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; } }