Skip to content

Commit 42e94d8

Browse files
committed
SmartRefreshControl添加headerHeight和onHeaderPulling属性
1 parent f81cee6 commit 42e94d8

4 files changed

Lines changed: 87 additions & 28 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.idea

SmartRefreshControl.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,10 @@ class SmartRefreshControl extends Component {
7373
SmartRefreshControl.propTypes = {
7474
onRefresh: PropTypes.func,
7575
onLoadMore: PropTypes.func,
76+
onHeaderPulling:PropTypes.func,
7677
enableRefresh: PropTypes.bool,//是否启用下拉刷新功能
7778
HeaderComponent:PropTypes.object,
79+
headerHeight:PropTypes.number,
7880
autoRefresh:PropTypes.shape({
7981
refresh:PropTypes.bool,
8082
time:PropTypes.number,

android/src/main/java/com/lmy/smartrefreshlayout/Events.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
public enum Events {
88
REFRESH("onSmartRefresh"),
9-
LOADMORE("onLoadMore");
9+
LOADMORE("onLoadMore"),
10+
HEADER_PULLING("onHeaderPulling");
1011

1112
private final String mName;
1213

android/src/main/java/com/lmy/smartrefreshlayout/SmartRefreshLayoutManager.java

Lines changed: 82 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,23 @@
44
import android.support.annotation.NonNull;
55
import android.view.View;
66

7+
import com.facebook.react.bridge.Arguments;
78
import com.facebook.react.bridge.ReadableArray;
89
import com.facebook.react.bridge.ReadableMap;
10+
import com.facebook.react.bridge.WritableMap;
911
import com.facebook.react.common.MapBuilder;
1012
import com.facebook.react.uimanager.ThemedReactContext;
1113
import com.facebook.react.uimanager.ViewGroupManager;
1214
import com.facebook.react.uimanager.annotations.ReactProp;
15+
import com.facebook.react.uimanager.annotations.ReactPropGroup;
1316
import com.facebook.react.uimanager.events.RCTEventEmitter;
1417
import com.lmy.header.AnyHeader;
18+
import com.scwang.smartrefresh.layout.api.RefreshFooter;
1519
import com.scwang.smartrefresh.layout.api.RefreshHeader;
1620
import com.scwang.smartrefresh.layout.api.RefreshLayout;
21+
import com.scwang.smartrefresh.layout.constant.RefreshState;
1722
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
23+
import com.scwang.smartrefresh.layout.listener.OnMultiPurposeListener;
1824
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
1925

2026
import java.util.List;
@@ -39,25 +45,6 @@ public class SmartRefreshLayoutManager extends ViewGroupManager<ReactSmartRefres
3945
private static final String COMMAND_FINISH_REFRESH_NAME="finishRefresh";
4046
private static final int COMMAND_FINISH_REFRESH_ID=0;
4147

42-
static {
43-
//设置全局的Header构建器
44-
/* ReactSmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
45-
@Override
46-
public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
47-
//layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
48-
return new ReactClassicsHeader(context).setEnableLastTime(false);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
49-
}
50-
});
51-
//设置全局的Footer构建器
52-
ReactSmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
53-
@Override
54-
public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
55-
//指定为经典Footer,默认是 BallPulseFooter
56-
return new ReactClassicsFooter(context);
57-
}
58-
});*/
59-
}
60-
6148
@Override
6249
public String getName() {
6350
return REACT_CLASS;
@@ -88,6 +75,19 @@ public Map<String, Integer> getCommandsMap() {
8875
COMMAND_FINISH_REFRESH_NAME,COMMAND_FINISH_REFRESH_ID
8976
);
9077
}
78+
79+
/**
80+
* 设置headerHeight
81+
* @param view
82+
* @param headerHeight
83+
*/
84+
@ReactProp(name = "headerHeight")
85+
public void setHeaderHeight(ReactSmartRefreshLayout view,float headerHeight){
86+
if(headerHeight != 0.0f) {
87+
view.setHeaderHeight(headerHeight);
88+
89+
}
90+
}
9191
/**
9292
* 是否启用下拉刷新功能
9393
* @param view
@@ -169,18 +169,73 @@ public void addViews(ReactSmartRefreshLayout parent, List<View> views) {
169169

170170
@Override
171171
protected void addEventEmitters(ThemedReactContext reactContext, ReactSmartRefreshLayout view) {
172-
view.setOnRefreshListener(new OnRefreshListener() {
172+
view.setOnMultiPurposeListener(new OnMultiPurposeListener() {
173173
@Override
174-
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
175-
//刷新触发
176-
mEventEmitter.receiveEvent(getTargetId(),Events.REFRESH.toString(),null);
174+
public void onHeaderPulling(RefreshHeader header, float percent, int offset, int headerHeight, int extendHeight) {
175+
WritableMap writableMap = Arguments.createMap();
176+
writableMap.putDouble("percent",percent);
177+
writableMap.putInt("offset",offset);
178+
writableMap.putInt("headerHeight",headerHeight);
179+
mEventEmitter.receiveEvent(getTargetId(),Events.HEADER_PULLING.toString(),writableMap);
177180
}
178-
});
179-
view.setOnLoadMoreListener(new OnLoadMoreListener() {
181+
182+
@Override
183+
public void onHeaderReleased(RefreshHeader header, int headerHeight, int extendHeight) {
184+
185+
}
186+
187+
@Override
188+
public void onHeaderReleasing(RefreshHeader header, float percent, int offset, int headerHeight, int extendHeight) {
189+
190+
}
191+
192+
@Override
193+
public void onHeaderStartAnimator(RefreshHeader header, int headerHeight, int extendHeight) {
194+
195+
}
196+
197+
@Override
198+
public void onHeaderFinish(RefreshHeader header, boolean success) {
199+
200+
}
201+
202+
@Override
203+
public void onFooterPulling(RefreshFooter footer, float percent, int offset, int footerHeight, int extendHeight) {
204+
205+
}
206+
207+
@Override
208+
public void onFooterReleased(RefreshFooter footer, int footerHeight, int extendHeight) {
209+
210+
}
211+
212+
@Override
213+
public void onFooterReleasing(RefreshFooter footer, float percent, int offset, int footerHeight, int extendHeight) {
214+
215+
}
216+
180217
@Override
181-
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
182-
//加载更多触发
218+
public void onFooterStartAnimator(RefreshFooter footer, int footerHeight, int extendHeight) {
219+
220+
}
221+
222+
@Override
223+
public void onFooterFinish(RefreshFooter footer, boolean success) {
224+
225+
}
226+
227+
@Override
228+
public void onLoadMore(RefreshLayout refreshLayout) {
183229
mEventEmitter.receiveEvent(getTargetId(),Events.LOADMORE.toString(),null);
230+
}
231+
232+
@Override
233+
public void onRefresh(RefreshLayout refreshLayout) {
234+
mEventEmitter.receiveEvent(getTargetId(),Events.REFRESH.toString(),null);
235+
}
236+
237+
@Override
238+
public void onStateChanged(RefreshLayout refreshLayout, RefreshState oldState, RefreshState newState) {
184239

185240
}
186241
});

0 commit comments

Comments
 (0)