From fc03b967b3b8b37d4e4370ce611329e8ccab5dda Mon Sep 17 00:00:00 2001 From: seven332 Date: Sun, 10 May 2015 15:32:29 +0800 Subject: [PATCH] Update --- .../java/com/hippo/effect/ViewTransition.java | 4 +++ .../ehviewer/ui/scene/GalleryListScene.java | 2 +- .../hippo/ehviewer/widget/ContentLayout.java | 32 +++++++++++++------ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/hippo/effect/ViewTransition.java b/app/src/main/java/com/hippo/effect/ViewTransition.java index ba4d7234d..c007760f4 100644 --- a/app/src/main/java/com/hippo/effect/ViewTransition.java +++ b/app/src/main/java/com/hippo/effect/ViewTransition.java @@ -49,6 +49,10 @@ public class ViewTransition { showView(0, false); } + public int getShownViewIndex() { + return mShownView; + } + public void showView(int shownView) { showView(shownView, true); } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index 3a23fd1df..07f4db668 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -287,7 +287,7 @@ public class GalleryListScene extends Scene implements SearchBar.Helper, } } else if (v == mRefreshFab) { toggleFabLayout(); - // TODO do go to top and refresh + mGalleryListHelper.goToTopAndRefresh(); } else if (v == mGoToFab) { toggleFabLayout(); // TODO do go to diff --git a/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java b/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java index 58ff7beda..8fbbb34f0 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java @@ -101,13 +101,9 @@ public class ContentLayout extends FrameLayout { public void setFitPaddingTop(int fitPaddingTop) { // RecyclerView - mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), - mRecyclerViewOriginTop + fitPaddingTop, - mRecyclerView.getPaddingRight(), - mRecyclerView.getPaddingBottom()); + mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerViewOriginTop + fitPaddingTop, mRecyclerView.getPaddingRight(), mRecyclerView.getPaddingBottom()); // RefreshLayout - mRefreshLayout.setProgressViewOffset(false, fitPaddingTop, - fitPaddingTop + UiUtils.dp2pix(getContext(), 32)); // TODO + mRefreshLayout.setProgressViewOffset(false, fitPaddingTop, fitPaddingTop + UiUtils.dp2pix(getContext(), 32)); // TODO } public void setFitPaddingBottom(int fitPaddingBottom) { @@ -116,9 +112,7 @@ public class ContentLayout extends FrameLayout { mRecyclerView.getPaddingTop(), mRecyclerView.getPaddingRight(), mRecyclerViewOriginBottom + fitPaddingBottom); // Snackbar - mSnackbar.setPadding(mSnackbar.getPaddingLeft(), - mSnackbar.getPaddingTop(), mSnackbar.getPaddingRight(), - mSnackbarOriginBottom + fitPaddingBottom); + mSnackbar.setPadding(mSnackbar.getPaddingLeft(), mSnackbar.getPaddingTop(), mSnackbar.getPaddingRight(), mSnackbarOriginBottom + fitPaddingBottom); } public abstract static class ContentHelper @@ -226,6 +220,7 @@ public class ContentLayout extends FrameLayout { mLayoutManager = generateLayoutManager(); mViewTransition = new ViewTransition(mRefreshLayout, mProgressBar, mTipView); + mViewTransition.showView(2, false); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setAdapter(this); @@ -410,6 +405,25 @@ public class ContentLayout extends FrameLayout { doRefresh(); } + /** + * Only work when data is loaded + */ + public void goToTopAndRefresh() { + if (mViewTransition.getShownViewIndex() == 0 && + !mRefreshLayout.isRefreshing()) { + // Go to top + mRecyclerView.stopScroll(); + mLayoutManager.smoothScrollToPosition(mRecyclerView, null, 0); + // Show header refresh + mRefreshLayout.setHeaderRefreshing(true); + // Do refresh + doRefresh(); + } + } + + /** + * Only work when data is loaded + */ public void goTo(int page) { if (page < 0 || page >= mPageSize) { throw new IndexOutOfBoundsException("Page size is " + mPageSize + ", page is " + page);