# SwipeRefreshLayout **Repository Path**: aowtec_yaolinnan/SwipeRefreshLayout ## Basic Information - **Project Name**: SwipeRefreshLayout - **Description**: 自定义刷新控件(用法和SwipeRefreshLayout类似) - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-21 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SwipeRefreshLayout 自定义刷新控件(用法和SwipeRefreshLayout类似)
支持下拉刷新和上拉加载更多
非侵入式,对原来的ListView、RecyclerView没有任何影响,用法和SwipeRefreshLayout类似。
支持RecyclerView,ListView,ScrollView,GridView等等。
被包含的View(RecyclerView,ListView etc.)可跟随手指的滑动而滑动
默认是跟随手指的滑动而滑动,也可以设置为不跟随:setTargetScrollWithLayout(false)
回调方法很多 比如:onRefresh() onPullDistance(int distance)和onPullEnable(boolean enable)开发人员可以根据下拉过程中distance的值做一系列动画。
1、布局中与CoordinatorLayout嵌套使用
```Java ``` 2、与AppBarLayout联动使用
```Java mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { int y=Math.abs(verticalOffset); if(y==0){ //完全展开状态 mRefreshLayout.setEnabled(true); }else{ //处于折叠状态 mRefreshLayout.setEnabled(false); } } }); mRefreshLayout.setOnPullRefreshListener(new SuperSwipeRefreshLayout.OnPullRefreshListener(){ @Override public void onRefresh() { //刷新处理事件 mRefreshLayout.postDelayed(new Runnable() { @Override public void run() { mRefreshLayout.setRefreshText(getResources().getString(R.string.refresh_success)); mRefreshLayout.setRefreshing(false); } },2000); } @Override public void onPullDistance(int distance) { //监听刷新控件拖动距离 Log.i(TAG,"pull distance:"+distance); } @Override public void onPullEnable(boolean enable) { } @Override public void onPullFinish() { //刷新事件结束,控件消失 Log.i(TAG,"pull finish"); } }); ``` 3、SuperSwipeRefreshLayout刷新样式支持图标或者其他图形,可以自己通过修改代码在canvas绘制,提供多种方法自定义。代码实现的刷新样式是图标跟随手势下拉扩大和旋转,并提供刷新文案提示,达到刷新触发条件时,图标会不断旋转,直至刷新结束。
```Java defaultProgressView = new CircleProgressView(getContext());//刷新图标
mHeaderText = new TextView(getContext());//刷新提示文字
mHeaderText.setTextColor(0xffffffff);
mHeaderText.setTextSize(TypedValue.COMPLEX_UNIT_DIP,12);
mHeaderText.setGravity(Gravity.CENTER);
```