android 官方上拉,Android 下拉刷新,上拉更多 框架

1.在 build.gradle 中添加依赖

implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-21'

implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-21'//没有使用特殊Header,可以不加这行

//注意版本与项目一致

implementation 'com.android.support:recyclerview-v7:28.0.0'

2.在XML布局文件中更换为 SmartRefreshLayout

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/refreshlayout"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".activity.Text2Activity">

android:id="@+id/recyclerView"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:cacheColorHint="#00000000"

android:dividerHeight="20dp" />

3.在 Activity 或者 Fragment 中添加代码

SmartRefreshLayout smartRefreshLayout = findViewById(R.id.refreshlayout);

smartRefreshLayout.setOnRefreshListener(new OnRefreshListener() {

@Override

public void onRefresh(RefreshLayout refreshlayout) {

refreshlayout.finishRefresh(2000/*,false*/);//传入false表示刷新失败

}

});

smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {

@Override

public void onLoadMore(RefreshLayout refreshlayout) {

refreshlayout.finishLoadMore(2000/*,false*/);//传入false表示加载失败

}

});

4.使用指定的 Header 和 Footer

a.方法一 全局设置

public class App extends Application {

//static 代码段可以防止内存泄露

static {

//设置全局的Header构建器

SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {

@Override

public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {

layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色

return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header

}

});

//设置全局的Footer构建器

SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {

@Override

public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {

//指定为经典Footer,默认是 BallPulseFooter

return new ClassicsFooter(context).setDrawableSize(20);

}

});

}

}

注意:方法一 设置的Header和Footer的优先级是最低的,如果同时还使用了方法二、三,将会被其它方法取代

b.方法二 XML布局文件指定

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/refreshLayout"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#444444"

app:srlPrimaryColor="#444444"

app:srlAccentColor="@android:color/white"

app:srlEnablePreviewInEditMode="true">

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

android:layout_width="match_parent"

android:layout_height="match_parent"

android:padding="@dimen/dimenPaddingCommon"

android:background="@android:color/white"

android:text="@string/description_define_in_xml"/>

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

注意:方法二 XML设置的Header和Footer的优先级是中等的,会被方法三覆盖。而且使用本方法的时候,Android Studio 会有预览效果,如下图:

3385935349ff

8638325-4b68deb2d1b2f98d.jpg

不过不用担心,只是预览效果,运行的时候只有下拉才会出现~

c.方法三 Java代码设置

final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);

//设置 Header 为 贝塞尔雷达 样式

refreshLayout.setRefreshHeader(new BezierRadarHeader(this).setEnableHorizontalDrag(true));

//设置 Footer 为 球脉冲 样式

refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));

5、详细参数进此网站

例子:

//取消下拉刷新

groupLayout.setEnableRefresh(false);

还有一些重要的方法

/*

这几个方法是比较重要的

*/

// 这两个方法是在加载成功并且还有数据的情况下调用的

refreshLayout.finishRefresh();//结束刷新

refreshLayout.finishLoadMore();//结束加载

// 这两个方法是在加载失败时调用的

refreshLayout.finishRefresh(false);//结束刷新(刷新失败)

refreshLayout.finishLoadMore(false);//结束加载(加载失败)

// 这个方法是在最后一页,没有更多数据时调用的,会在页面底部标记没有更多数据

refreshLayout.finishLoadMoreWithNoMoreData();//完成加载并标记没有更多数据 1.0.4

// 这个方法最重要,当在最后一页调用完上一个完成加载并标记没有更多数据的方法时,需要将refreshLayout的状态更改为还有更多数据的状态,此时就需要调用此方法,参数为false代表还有更多数据,true代表没有更多数据

refreshLayout.setNoMoreData(false);//恢复没有更多数据的原始状态 1.0.5

————————————————

版权声明:本文为CSDN博主「GBYQ66」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/GBYQ66/article/details/80652998

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值