Skip to content

Commit

Permalink
1.解决纯滚动模式和内容滚动设置false的冲突
Browse files Browse the repository at this point in the history
2.更新文档
  • Loading branch information
scwang90 committed Jul 2, 2018
1 parent d5df2e7 commit 4aee53f
Show file tree
Hide file tree
Showing 11 changed files with 39 additions and 103 deletions.
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions README_EN.md
Expand Up @@ -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'
Expand Down
6 changes: 3 additions & 3 deletions app/build.gradle
Expand Up @@ -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')
Expand Down Expand Up @@ -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'
Expand Down
3 changes: 2 additions & 1 deletion art/md_donationlist.md
Expand Up @@ -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|微信|谢谢帮我解决问题||
Expand Down
2 changes: 1 addition & 1 deletion refresh-header/build.gradle
Expand Up @@ -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}"
}
Expand Up @@ -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:
Expand All @@ -98,13 +99,16 @@ public boolean onTouchEvent(MotionEvent event) {
//</editor-fold>

//<editor-fold desc="abstract">
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;
Expand All @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion refresh-layout/build.gradle
Expand Up @@ -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}"
}
Expand Up @@ -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;
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -1966,6 +1967,7 @@ public SmartRefreshLayout setEnableHeaderTranslationContent(boolean enabled) {
@Override
public SmartRefreshLayout setEnableFooterTranslationContent(boolean enabled) {
this.mEnableFooterTranslationContent = enabled;
this.mManualFooterTranslationContent = true;
return this;
}

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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){
Expand Down Expand Up @@ -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){
Expand Down Expand Up @@ -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) {
Expand All @@ -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)) {
Expand All @@ -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;
Expand Down
Expand Up @@ -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 二楼回弹时长
Expand Down
Expand Up @@ -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;

/**
Expand All @@ -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) {
Expand All @@ -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);
}
});
}
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
@@ -1,2 +1,2 @@
include ':app', ':app-design'
include ':app'//, ':app-design'
include ':refresh-layout', ':refresh-header', ':refresh-footer'

0 comments on commit 4aee53f

Please sign in to comment.