From 0489ef2c39a0530f14336ee90e2f1e08c44d7f8b Mon Sep 17 00:00:00 2001 From: seven332 Date: Fri, 15 May 2015 21:15:07 +0800 Subject: [PATCH] Update --- .../java/com/hippo/effect/ViewTransition.java | 10 ++-- .../ehviewer/ui/scene/GalleryListScene.java | 10 ++++ .../hippo/ehviewer/widget/ContentLayout.java | 33 +++++++++++-- .../widget/refreshlayout/RefreshLayout.java | 46 ++++++++----------- app/src/main/res/values/colors.xml | 16 +++++-- 5 files changed, 79 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/com/hippo/effect/ViewTransition.java b/app/src/main/java/com/hippo/effect/ViewTransition.java index c007760f4..4fe665252 100644 --- a/app/src/main/java/com/hippo/effect/ViewTransition.java +++ b/app/src/main/java/com/hippo/effect/ViewTransition.java @@ -53,11 +53,11 @@ public class ViewTransition { return mShownView; } - public void showView(int shownView) { - showView(shownView, true); + public boolean showView(int shownView) { + return showView(shownView, true); } - public void showView(int shownView, boolean animation) { + public boolean showView(int shownView, boolean animation) { View[] views = mViews; int length = views.length; if (shownView >= length || shownView < 0) { @@ -104,6 +104,10 @@ public class ViewTransition { } } } + + return true; + } else { + return false; } } 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 7465e7fb3..368219cf7 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 @@ -683,6 +683,16 @@ public class GalleryListScene extends Scene implements SearchBar.Helper, AppHandler.getInstance().post(mSearchBarPositionTask); } + @Override + protected void onShowProgress() { + showSearchBar(true); + } + + @Override + protected void onShowText() { + showSearchBar(true); + } + @Override protected void getPageData(int taskId, int type, int page) { try { 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 9df241419..bccc7083d 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java @@ -82,6 +82,19 @@ public class ContentLayout extends FrameLayout { mImageView = mTipView.getChildAt(0); mTextView = (TextView) mTipView.getChildAt(1); + mRefreshLayout.setHeaderColorSchemeResources( + R.color.loading_indicator_red, + R.color.loading_indicator_purple, + R.color.loading_indicator_blue, + R.color.loading_indicator_cyan, + R.color.loading_indicator_green, + R.color.loading_indicator_yellow); + mRefreshLayout.setFooterColorSchemeResources( + R.color.loading_indicator_red, + R.color.loading_indicator_blue, + R.color.loading_indicator_green, + R.color.loading_indicator_orange); + // mRecyclerViewOriginTop = mRecyclerView.getPaddingTop(); mRecyclerViewOriginBottom = mRecyclerView.getPaddingBottom(); @@ -194,6 +207,12 @@ public class ContentLayout extends FrameLayout { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState){ if (newState == RecyclerView.SCROLL_STATE_IDLE) { + // For footer refresh + if (mRefreshLayout.isAlmostBottom()) { + mRefreshLayout.requsetFooterRefresh(); + } + + // For current index if (mPageVolume <= 0) { return; } @@ -279,21 +298,29 @@ public class ContentLayout extends FrameLayout { protected abstract void onScrollToPosition(); + protected abstract void onShowProgress(); + + protected abstract void onShowText(); + public void showContent() { mViewTransition.showView(0); } public void showProgressBar() { - showProgressBar(true); + mViewTransition.showView(1, false); } public void showProgressBar(boolean animation) { - mViewTransition.showView(1, animation); + if (mViewTransition.showView(1, animation)) { + onShowProgress(); + } } public void showText(CharSequence text) { - mViewTransition.showView(2); mTextView.setText(text); + if (mViewTransition.showView(2)) { + onShowText(); + } } /** diff --git a/app/src/main/java/com/hippo/widget/refreshlayout/RefreshLayout.java b/app/src/main/java/com/hippo/widget/refreshlayout/RefreshLayout.java index 00bec6b15..3c3490a86 100644 --- a/app/src/main/java/com/hippo/widget/refreshlayout/RefreshLayout.java +++ b/app/src/main/java/com/hippo/widget/refreshlayout/RefreshLayout.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Canvas; import android.support.v4.view.MotionEventCompat; +import android.support.v4.view.ScrollingView; import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.util.DisplayMetrics; @@ -556,8 +557,7 @@ public class RefreshLayout extends ViewGroup { public void setFooterColorSchemeResources(int colorRes1, int colorRes2, int colorRes3, int colorRes4) { final Resources res = getResources(); - setFooterColorSchemeColors(res.getColor(colorRes1), res.getColor(colorRes2), - res.getColor(colorRes3), res.getColor(colorRes4)); + setFooterColorSchemeColors(res.getColor(colorRes1), res.getColor(colorRes2), res.getColor(colorRes3), res.getColor(colorRes4)); } /** @@ -570,16 +570,23 @@ public class RefreshLayout extends ViewGroup { mProgressBar.setColorScheme(color1, color2, color3, color4); } + public void requsetFooterRefresh() { + if (isEnabled() && !mHeaderRefreshing && !mFooterRefreshing && mFooterEnable && + (mFooterListener == null || mFooterListener.onFooterRefresh())) { + setFooterRefreshing(true); + } + } + public void setHeaderEnable(boolean headerEnable) { mHeaderEnable = headerEnable; - if (headerEnable == false && mHeaderRefreshing == true) { + if (!headerEnable && mHeaderRefreshing) { setHeaderRefreshing(false); } } public void setFooterEnable(boolean footerEnable) { mFooterEnable = footerEnable; - if (footerEnable == false && mFooterRefreshing == true) { + if (!footerEnable && mFooterRefreshing) { setFooterRefreshing(false); } } @@ -674,8 +681,7 @@ public class RefreshLayout extends ViewGroup { getMeasuredWidth() - getPaddingLeft() - getPaddingRight(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec( getMeasuredHeight() - getPaddingTop() - getPaddingBottom(), MeasureSpec.EXACTLY)); - mCircleView.measure(MeasureSpec.makeMeasureSpec(mCircleWidth, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(mCircleHeight, MeasureSpec.EXACTLY)); + mCircleView.measure(MeasureSpec.makeMeasureSpec(mCircleWidth, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(mCircleHeight, MeasureSpec.EXACTLY)); if (!mUsingCustomStart && !mOriginalOffsetCalculated) { mOriginalOffsetCalculated = true; mCurrentTargetOffsetTop = mOriginalOffsetTop = -mCircleView.getMeasuredHeight(); @@ -716,12 +722,14 @@ public class RefreshLayout extends ViewGroup { if (mTarget instanceof AbsListView) { final AbsListView absListView = (AbsListView) mTarget; return absListView.getLastVisiblePosition() > absListView.getCount() - 2; + } else if (mTarget instanceof ScrollingView) { + final ScrollingView scrollingView = (ScrollingView) mTarget; + final int offset = scrollingView.computeVerticalScrollOffset(); + final int range = scrollingView.computeVerticalScrollRange() - + scrollingView.computeVerticalScrollExtent(); + return offset >= range; } else { - if (android.os.Build.VERSION.SDK_INT >= 14) { - return !ViewCompat.canScrollVertically(mTarget, getHeight() / 4); - } else { - return true; - } + return !ViewCompat.canScrollVertically(mTarget, 1); } } @@ -735,14 +743,6 @@ public class RefreshLayout extends ViewGroup { return false; } - if (mFooterEnable && isAlmostBottom()) { - // Check footer - if (mFooterListener == null || mFooterListener.onFooterRefresh()) { - setFooterRefreshing(true); - return false; - } - } - if (!mHeaderEnable || canChildScrollUp() || mFooterRefreshing) { // Fail fast if we're not in a state where a swipe is possible return false; @@ -815,14 +815,6 @@ public class RefreshLayout extends ViewGroup { return false; } - if (mFooterEnable && isAlmostBottom()) { - // Check footer - if (mFooterListener == null || mFooterListener.onFooterRefresh()) { - setFooterRefreshing(true); - return false; - } - } - if (!mHeaderEnable || canChildScrollUp() || mFooterRefreshing) { // Fail fast if we're not in a state where a swipe is possible return false; diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d7beba4a5..74cab8b06 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -54,12 +54,14 @@ #ff009688 #ff00796b - #ffff5722 - #ffff9800 - #ffffc107 + #ffaa00ff + #ff00acc1 + #ff7cb342 + #fff9a825 + #ffff7043 #de000000 @@ -88,4 +90,12 @@ #ff333333 #ffeeff41 + #ffe53935 + @color/material_purple_a700 + #ff1d87e4 + @color/material_cyan_600 + @color/material_light_green_600 + @color/material_yellow_800 + @color/material_deep_Orange_400 +