diff --git a/README.md b/README.md index 760a5ab9..f7a5e3e4 100644 --- a/README.md +++ b/README.md @@ -104,8 +104,8 @@ SmartRefreshLayout的目标是打造一个强大,稳定,成熟的下拉刷 #### 1.在 build.gradle 中添加依赖 ``` //1.1.0 API改动过大,老用户升级需谨慎 -compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-7' -compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-7'//没有使用特殊Header,可以不加这行 +compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-8' +compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-8'//没有使用特殊Header,可以不加这行 compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须) //1.0.5 当1.1.0出现问题可以回退到1.0.5.1 diff --git a/README_EN.md b/README_EN.md index 570b5b5d..dbce11f8 100644 --- a/README_EN.md +++ b/README_EN.md @@ -98,8 +98,8 @@ Please rest assured that I have divided it into three packages, when used to ref ## Usage #### 1.Add a gradle dependency. ``` -compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-7' -compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-7'//If you use the special Header +compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-8' +compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-8'//If you use the special Header compile 'com.android.support:appcompat-v7:25.3.1' diff --git a/app/build.gradle b/app/build.gradle index 4b0d5368..ccb44c99 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -54,7 +54,7 @@ dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4' testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4' -// + // compile project(':refresh-footer') // compile project(':refresh-header') // compile project(':refresh-layout') @@ -90,8 +90,8 @@ dependencies { compile 'de.hdodenhof:circleimageview:2.1.0' compile 'jp.wasabeef:recyclerview-animators:2.2.6' compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.3' - compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-7' - compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-7' + compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-8' + compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-8' testCompile 'junit:junit:4.12' compile 'com.github.bumptech.glide:glide:4.0.0-RC1' diff --git a/art/md_donationlist.md b/art/md_donationlist.md index 7972d33d..770781c3 100644 --- a/art/md_donationlist.md +++ b/art/md_donationlist.md @@ -4,10 +4,11 @@ |昵称|日期|方式|留言|友情连接| |:---:|:---:|:---:|:---:|:---:| +|[*作]|2018-7-2|阿里|👍|| |[未留名]|2018-6-28|微信|👍👍👍👍👍👍👍|| |[pay_join]|2018-6-27|腾讯|👍|| |[pay_join]|2018-6-22|腾讯|👍|| -|[*田田]|2018-6-22|阿里||👍| +|[*田田]|2018-6-22|阿里|👍|| |[未留名]|2018-6-21|微信||[github/xybcoder](https://github/xybcoder)| |[pay_join]|2018-6-19|腾讯|👍|| |[未留名]|2018-6-13|微信|谢谢帮我解决问题|| diff --git a/refresh-header/build.gradle b/refresh-header/build.gradle index 16931444..01259853 100644 --- a/refresh-header/build.gradle +++ b/refresh-header/build.gradle @@ -45,7 +45,7 @@ publish { userOrg = 'scwang90' groupId = 'com.scwang.smartrefresh' artifactId = 'SmartRefreshHeader' - version = '1.1.0-alpha-7' + version = '1.1.0-alpha-8' description = 'Some delicate headers of SmartRefreshLayout' website = "https://github.com/scwang90/${rootProject.name}" } diff --git a/refresh-header/src/main/java/com/scwang/smartrefresh/header/fungame/FunGameBase.java b/refresh-header/src/main/java/com/scwang/smartrefresh/header/fungame/FunGameBase.java index ff61b0c0..3f34537c 100644 --- a/refresh-header/src/main/java/com/scwang/smartrefresh/header/fungame/FunGameBase.java +++ b/refresh-header/src/main/java/com/scwang/smartrefresh/header/fungame/FunGameBase.java @@ -72,13 +72,14 @@ public boolean onTouchEvent(MotionEvent event) { final double H = mScreenHeightPixels * 2 / 3; final double x = Math.max(0, dy * 0.5); final double y = Math.min(M * (1 - Math.pow(100, -x / H)), x);// 公式 y = M(1-40^(-x/H)) - mRefreshKernel.moveSpinner((int) y, false); + mRefreshKernel.moveSpinner(Math.max(1, (int) y), false); } else { - final double M = mHeaderHeight * 2; - final double H = mScreenHeightPixels * 2 / 3; - final double x = -Math.min(0, dy * 0.5); - final double y = -Math.min(M * (1 - Math.pow(100, -x / H)), x);// 公式 y = M(1-40^(-x/H)) - mRefreshKernel.moveSpinner((int) y, false); +// final double M = mHeaderHeight * 2; +// final double H = mScreenHeightPixels * 2 / 3; +// final double x = -Math.min(0, dy * 0.5); +// final double y = -Math.min(M * (1 - Math.pow(100, -x / H)), x);// 公式 y = M(1-40^(-x/H)) +// mRefreshKernel.moveSpinner((int) y, false); + mRefreshKernel.moveSpinner(1, false); } break; case MotionEvent.ACTION_UP: @@ -98,13 +99,16 @@ public boolean onTouchEvent(MotionEvent event) { // // - boolean enableLoadMore; +// boolean enableLoadMore; protected void onManualOperationStart() { if (!mManualOperation) { mManualOperation = true; mRefreshContent = mRefreshKernel.getRefreshContent(); - enableLoadMore = mRefreshKernel.getRefreshLayout().isEnableLoadMore(); - mRefreshKernel.getRefreshLayout().setEnableLoadMore(false); +// if (mRefreshContent instanceof CoordinatorLayoutListener) { +// ((CoordinatorLayoutListener) mRefreshContent).onCoordinatorUpdate(true, false); +// } +// enableLoadMore = mRefreshKernel.getRefreshLayout().isEnableLoadMore(); +// mRefreshKernel.getRefreshLayout().setEnableLoadMore(false); View contentView = mRefreshContent.getView(); MarginLayoutParams params = (MarginLayoutParams)contentView.getLayoutParams(); params.topMargin += mHeaderHeight; @@ -117,13 +121,14 @@ protected void onManualOperationStart() { protected void onManualOperationRelease() { if (mIsFinish) { mManualOperation = false; - mRefreshKernel.getRefreshLayout().setEnableLoadMore(enableLoadMore); +// if (mRefreshContent instanceof CoordinatorLayoutListener) { +// ((CoordinatorLayoutListener) mRefreshContent).onCoordinatorUpdate(true, true); +// } +// mRefreshKernel.getRefreshLayout().setEnableLoadMore(enableLoadMore); if (mTouchY != -1) {//还没松手 onFinish(mRefreshKernel.getRefreshLayout(), mLastFinish); -// mRefreshKernel.setStateRefreshingFinish(); mRefreshKernel.setState(RefreshState.RefreshFinish); mRefreshKernel.animSpinner(0); -// mRefreshKernel.getRefreshLayout().finishRefresh(0); } else { mRefreshKernel.moveSpinner(mHeaderHeight, true); } diff --git a/refresh-layout/build.gradle b/refresh-layout/build.gradle index d94e6073..c6fa5ebc 100644 --- a/refresh-layout/build.gradle +++ b/refresh-layout/build.gradle @@ -52,7 +52,7 @@ publish { userOrg = 'scwang90' groupId = 'com.scwang.smartrefresh' artifactId = 'SmartRefreshLayout' - version = '1.1.0-alpha-7' + version = '1.1.0-alpha-8' description = 'An intelligent refresh layout' website = "https://github.com/scwang90/${rootProject.name}" } \ No newline at end of file diff --git a/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/SmartRefreshLayout.java b/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/SmartRefreshLayout.java index d1880801..5a3bee5c 100644 --- a/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/SmartRefreshLayout.java +++ b/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/SmartRefreshLayout.java @@ -294,6 +294,7 @@ public SmartRefreshLayout(Context context, AttributeSet attrs, int defStyleAttr) mManualLoadMore = ta.hasValue(R.styleable.SmartRefreshLayout_srlEnableLoadMore); mManualHeaderTranslationContent = ta.hasValue(R.styleable.SmartRefreshLayout_srlEnableHeaderTranslationContent); + mManualFooterTranslationContent = ta.hasValue(R.styleable.SmartRefreshLayout_srlEnableFooterTranslationContent); mManualNestedScrolling = mManualNestedScrolling || ta.hasValue(R.styleable.SmartRefreshLayout_srlEnableNestedScrolling); mHeaderHeightStatus = ta.hasValue(R.styleable.SmartRefreshLayout_srlHeaderHeight) ? DimensionStatus.XmlLayoutUnNotify : mHeaderHeightStatus; mFooterHeightStatus = ta.hasValue(R.styleable.SmartRefreshLayout_srlFooterHeight) ? DimensionStatus.XmlLayoutUnNotify : mFooterHeightStatus; @@ -1242,7 +1243,7 @@ protected void setViceState(RefreshState state) { } protected boolean isEnableTranslationContent(boolean enable, RefreshInternal internal) { - return enable || internal.getSpinnerStyle() == SpinnerStyle.FixedBehind; + return enable || mEnablePureScrollMode || internal.getSpinnerStyle() == SpinnerStyle.FixedBehind; } protected boolean isEnableRefreshOrLoadMore(boolean enable) { @@ -1966,6 +1967,7 @@ public SmartRefreshLayout setEnableHeaderTranslationContent(boolean enabled) { @Override public SmartRefreshLayout setEnableFooterTranslationContent(boolean enabled) { this.mEnableFooterTranslationContent = enabled; + this.mManualFooterTranslationContent = true; return this; } @@ -3021,7 +3023,7 @@ public RefreshKernel moveSpinner(int spinner, boolean isDragging) { if (mRefreshContent != null) { Integer tSpinner = null; if (spinner >= 0 && mRefreshHeader != null) { - if (isEnableTranslationContent(SmartRefreshLayout.this.mEnableHeaderTranslationContent, SmartRefreshLayout.this.mRefreshHeader)) { + if (isEnableTranslationContent(mEnableHeaderTranslationContent, mRefreshHeader)) { tSpinner = spinner; } else if (oldSpinner < 0) { tSpinner = 0; @@ -3056,7 +3058,7 @@ public RefreshKernel moveSpinner(int spinner, boolean isDragging) { if (oldSpinner != mSpinner) { if (mRefreshHeader.getSpinnerStyle() == SpinnerStyle.Translate) { mRefreshHeader.getView().setTranslationY(mSpinner); - if (mHeaderBackgroundColor != 0 && mPaint != null && !mEnableHeaderTranslationContent) { + if (mHeaderBackgroundColor != 0 && mPaint != null && !isEnableTranslationContent(mEnableHeaderTranslationContent,mRefreshHeader)) { thisView.invalidate(); } } else if (mRefreshHeader.getSpinnerStyle() == SpinnerStyle.Scale){ @@ -3095,7 +3097,7 @@ public RefreshKernel moveSpinner(int spinner, boolean isDragging) { if (oldSpinner != mSpinner) { if (mRefreshFooter.getSpinnerStyle() == SpinnerStyle.Translate) { mRefreshFooter.getView().setTranslationY(mSpinner); - if (mFooterBackgroundColor != 0 && mPaint != null && !mEnableFooterTranslationContent) { + if (mFooterBackgroundColor != 0 && mPaint != null && !isEnableTranslationContent(mEnableFooterTranslationContent, mRefreshFooter)) { thisView.invalidate(); } } else if (mRefreshFooter.getSpinnerStyle() == SpinnerStyle.Scale){ @@ -3174,16 +3176,6 @@ public RefreshKernel requestNeedTouchEventFor(@NonNull RefreshInternal internal, } return this; } -// @Override -// public RefreshKernel requestNeedTouchEventWhenRefreshing(boolean request) { -// mHeaderNeedTouchEventWhenRefreshing = request; -// return this; -// } -// @Override -// public RefreshKernel requestNeedTouchEventWhenLoading(boolean request) { -// mFooterNeedTouchEventWhenLoading = request; -// return this; -// } @Override public RefreshKernel requestDefaultTranslationContentFor(@NonNull RefreshInternal internal, boolean translation) { @@ -3200,14 +3192,6 @@ public RefreshKernel requestDefaultTranslationContentFor(@NonNull RefreshInterna } return this; } -// @Override -// public RefreshKernel requestDefaultHeaderTranslationContent(boolean translation) { -// if (!mManualHeaderTranslationContent) { -// mManualHeaderTranslationContent = true; -// mEnableHeaderTranslationContent = translation; -// } -// return this; -// } @Override public RefreshKernel requestRemeasureHeightFor(@NonNull RefreshInternal internal) { if (mRefreshHeader != null && mRefreshHeader.equals(internal)) { @@ -3221,20 +3205,6 @@ public RefreshKernel requestRemeasureHeightFor(@NonNull RefreshInternal internal } return this; } -// @Override -// public RefreshKernel requestRemeasureHeightForHeader() { -// if (mHeaderHeightStatus.notified) { -// mHeaderHeightStatus = mHeaderHeightStatus.unNotify(); -// } -// return this; -// } -// @Override -// public RefreshKernel requestRemeasureHeightForFooter() { -// if (mFooterHeightStatus.notified) { -// mFooterHeightStatus = mFooterHeightStatus.unNotify(); -// } -// return this; -// } @Override public RefreshKernel requestFloorDuration(int duration) { mFloorDuration = duration; diff --git a/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/api/RefreshKernel.java b/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/api/RefreshKernel.java index cd7c578a..c0c88377 100644 --- a/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/api/RefreshKernel.java +++ b/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/api/RefreshKernel.java @@ -64,63 +64,23 @@ public interface RefreshKernel { * @return RefreshKernel */ RefreshKernel requestDrawBackgroundFor(RefreshInternal internal, int backgroundColor); -// /** -// * 指定在下拉时候为 Header 绘制背景 -// * @param backgroundColor 背景颜色 -// * @return RefreshKernel -// */ -// RefreshKernel requestDrawBackgroundForHeader(int backgroundColor); -// /** -// * 指定在下拉时候为 Footer 绘制背景 -// * @param backgroundColor 背景颜色 -// * @return RefreshKernel -// */ -// RefreshKernel requestDrawBackgroundForFooter(int backgroundColor); /** * 请求事件 * @param request 请求 * @return RefreshKernel */ RefreshKernel requestNeedTouchEventFor(@NonNull RefreshInternal internal, boolean request); -// /** -// * 请求事件 -// * @param request 请求 -// * @return RefreshKernel -// */ -// RefreshKernel requestNeedTouchEventWhenRefreshing(boolean request); -// /** -// * 请求事件 -// * @param request 请求 -// * @return RefreshKernel -// */ -// RefreshKernel requestNeedTouchEventWhenLoading(boolean request); /** * 请求设置默认内容滚动设置 * @param translation 移动 * @return RefreshKernel */ RefreshKernel requestDefaultTranslationContentFor(@NonNull RefreshInternal internal, boolean translation); -// /** -// * 请求设置默认内容滚动设置 -// * @param translation 移动 -// * @return RefreshKernel -// */ -// RefreshKernel requestDefaultHeaderTranslationContent(boolean translation); /** * 请求重新测量 headerHeight 或 footerHeight , 要求 height 高度为 WRAP_CONTENT * @return RefreshKernel */ RefreshKernel requestRemeasureHeightFor(@NonNull RefreshInternal internal); -// /** -// * 请求重新测量 headerHeight , 要求 header 高度为 WRAP_CONTENT -// * @return RefreshKernel -// */ -// RefreshKernel requestRemeasureHeightForHeader(); -// /** -// * 请求重新测量 footerHeight , 要求 footer 高度为 WRAP_CONTENT -// * @return RefreshKernel -// */ -// RefreshKernel requestRemeasureHeightForFooter(); /** * 设置二楼回弹时长 * @param duration 二楼回弹时长 diff --git a/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/util/DesignUtil.java b/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/util/DesignUtil.java index f40674f3..c7d002bf 100644 --- a/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/util/DesignUtil.java +++ b/refresh-layout/src/main/java/com/scwang/smartrefresh/layout/util/DesignUtil.java @@ -6,7 +6,6 @@ import android.view.ViewGroup; import com.scwang.smartrefresh.layout.api.RefreshKernel; -import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.CoordinatorLayoutListener; /** @@ -20,13 +19,13 @@ public static void checkCoordinatorLayout(View content, RefreshKernel kernel, Co try {//try 不能删除,不然会出现兼容性问题 if (content instanceof CoordinatorLayout) { kernel.getRefreshLayout().setEnableNestedScroll(false); - wrapperCoordinatorLayout(((ViewGroup) content), kernel.getRefreshLayout(),listener); + wrapperCoordinatorLayout(((ViewGroup) content)/*, kernel.getRefreshLayout()*/,listener); } } catch (Throwable ignored) { } } - private static void wrapperCoordinatorLayout(ViewGroup layout, final RefreshLayout refreshLayout, final CoordinatorLayoutListener listener) { + private static void wrapperCoordinatorLayout(ViewGroup layout/*, final RefreshLayout refreshLayout*/, final CoordinatorLayoutListener listener) { for (int i = layout.getChildCount() - 1; i >= 0; i--) { View view = layout.getChildAt(i); if (view instanceof AppBarLayout) { @@ -35,7 +34,8 @@ private static void wrapperCoordinatorLayout(ViewGroup layout, final RefreshLayo public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { listener.onCoordinatorUpdate( verticalOffset >= 0, - refreshLayout.isEnableLoadMore() && (appBarLayout.getTotalScrollRange() + verticalOffset) <= 0); + /*refreshLayout.isEnableLoadMore() && */ + (appBarLayout.getTotalScrollRange() + verticalOffset) <= 0); } }); } diff --git a/settings.gradle b/settings.gradle index d1f9d513..73660936 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ -include ':app', ':app-design' +include ':app'//, ':app-design' include ':refresh-layout', ':refresh-header', ':refresh-footer'