Update
This commit is contained in:
1 parent
a7a66a9043
commit
0489ef2c39
5 files changed
+79
-36
No files matched your search
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user