44import android .support .annotation .NonNull ;
55import android .view .View ;
66
7+ import com .facebook .react .bridge .Arguments ;
78import com .facebook .react .bridge .ReadableArray ;
89import com .facebook .react .bridge .ReadableMap ;
10+ import com .facebook .react .bridge .WritableMap ;
911import com .facebook .react .common .MapBuilder ;
1012import com .facebook .react .uimanager .ThemedReactContext ;
1113import com .facebook .react .uimanager .ViewGroupManager ;
1214import com .facebook .react .uimanager .annotations .ReactProp ;
15+ import com .facebook .react .uimanager .annotations .ReactPropGroup ;
1316import com .facebook .react .uimanager .events .RCTEventEmitter ;
1417import com .lmy .header .AnyHeader ;
18+ import com .scwang .smartrefresh .layout .api .RefreshFooter ;
1519import com .scwang .smartrefresh .layout .api .RefreshHeader ;
1620import com .scwang .smartrefresh .layout .api .RefreshLayout ;
21+ import com .scwang .smartrefresh .layout .constant .RefreshState ;
1722import com .scwang .smartrefresh .layout .listener .OnLoadMoreListener ;
23+ import com .scwang .smartrefresh .layout .listener .OnMultiPurposeListener ;
1824import com .scwang .smartrefresh .layout .listener .OnRefreshListener ;
1925
2026import 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