Skip to content

Commit cf84cee

Browse files
committed
fix bug #18
1 parent 9b9036c commit cf84cee

File tree

2 files changed

+51
-6
lines changed

2 files changed

+51
-6
lines changed

SmartRefreshControl.js

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,21 @@ class SmartRefreshControl extends Component {
4747
componentWillMount() {
4848
this._panResponder = PanResponder.create({
4949
onMoveShouldSetPanResponderCapture: (evt, gestureState) => {
50-
if(Math.abs(gestureState.dx)>1 || Math.abs(gestureState.dy) >1){
50+
if(this.shiftPercent >= 0.039 || this.footerShiftPercent >= 0.068){//满足条件捕获事件
5151
return true
5252
}
5353
return false;
5454
}
5555
});
5656
}
57+
58+
shiftPercent = 0;//header位移百分比,默认为0
59+
60+
footerShiftPercent = 0; // footer位移百分比
61+
/**
62+
* 渲染Header
63+
* @return {*}
64+
*/
5765
renderHeader=()=>{
5866
const {HeaderComponent}=this.props;
5967
if(HeaderComponent){
@@ -63,16 +71,51 @@ class SmartRefreshControl extends Component {
6371
}
6472
return <DefaultHeader/>
6573
}
74+
/**
75+
* 刷新时触发
76+
* @private
77+
*/
6678
_onSmartRefresh=()=>{
67-
this.props.onRefresh && this.props.onRefresh();
79+
let {onRefresh} = this.props;
80+
onRefresh && onRefresh();
6881
}
69-
//TODO://还未实现
70-
renderFooter=()=>{
71-
return null;
82+
/**
83+
* 下拉过程
84+
* @param event
85+
* @private
86+
*/
87+
_onHeaderPulling=(event)=>{
88+
this.shiftPercent = event.nativeEvent.percent;
89+
let {onHeaderPulling,onHeaderMoving} = this.props;
90+
onHeaderMoving && onHeaderMoving(event);
91+
onHeaderPulling && onHeaderPulling(event);
7292
}
93+
/**
94+
* 释放过程
95+
* @param event
96+
* @private
97+
*/
98+
_onHeaderReleasing=(event)=>{
99+
this.shiftPercent = event.nativeEvent.percent;
100+
let {onHeaderReleasing,onHeaderMoving} = this.props;
101+
onHeaderMoving && onHeaderMoving(event);
102+
onHeaderReleasing && onHeaderReleasing(event);
103+
}
104+
/**
105+
* 底部位移过程
106+
* @param event
107+
* @private
108+
*/
109+
_onFooterMoving=(event)=>{
110+
this.footerShiftPercent = event.nativeEvent.percent;
111+
}
112+
73113
render() {
74114
const nativeProps ={...this.props,...{
75115
onSmartRefresh:this._onSmartRefresh,
116+
onHeaderPulling:this._onHeaderPulling,
117+
onHeaderReleasing:this._onHeaderReleasing,
118+
onFooterMoving:this._onFooterMoving
76119
}}
77120
return (
78121
<SmartRefreshLayout
@@ -99,6 +142,7 @@ SmartRefreshControl.propTypes = {
99142
onLoadMore: PropTypes.func,
100143
onHeaderPulling:PropTypes.func,
101144
onHeaderReleasing:PropTypes.func,
145+
onHeaderMoving:PropTypes.func,//向外提供的接口
102146
onPullDownToRefresh:PropTypes.func,
103147
onReleaseToRefresh:PropTypes.func,
104148
onHeaderReleased:PropTypes.func,

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ public enum Events {
1111
HEADER_RELEASING("onHeaderReleasing"),//header刷新完成后触发
1212
PULL_DOWN_TO_REFRESH("onPullDownToRefresh"),//下拉开始刷新
1313
RELEASE_TO_REFRESH("onReleaseToRefresh"),//释放刷新
14-
HEADER_RELEASED("onHeaderReleased");//释放时进行刷新
14+
HEADER_RELEASED("onHeaderReleased"),//释放时进行刷新
15+
FOOTER_MOVING("onFooterMoving");//footer移动时触发
1516

1617
private final String mName;
1718

0 commit comments

Comments
 (0)