栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android下拉刷新的实现(一) - SwipeRefreshLayout篇

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android下拉刷新的实现(一) - SwipeRefreshLayout篇

Android下拉刷新的实现(一) - SwipeRefreshLayout篇 关于作者

已经工作三年的95后程序员,坐标上海。平时在公司写Android原生App,业务时间会抽空学习Java后端,目标是成为全栈工程师,志同道合的可以私我聊聊haha。加入CSDN快4年了,看了很多优秀作者的博客收获很多。后面的时间里,我写也会整理总结一些工作中使用到的知识分享出来。我的座右铭:人生在勤,不索何获。大家一起努力加油吧

正文部分

Android下拉刷新的实现系列文章准备了两篇,对应SwipeRefreshLayou和PtrFrameLayout。SwipeRefreshLayout作为Android原生的下拉刷新控件,UI效果比较简洁,也比较容易开发,但是实现的效果过于简单,对于提升页面的美观度有着局限性;PtrFrameLayout是一款下拉刷新框架,提供的UI效果比较好,复杂度也会高一点,大家可以按照自己的实际情况来进行选择

1、使用场景

当界面中的数据需要刷新时,通过下拉界面从而触发刷新,刷新开始的同时会去请求数据,等到数据请求结束关掉Loading

2、实现效果

3、gradle引用
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
4、具体使用 4.1、xml布局,将需要更新的内容布局嵌套到SwipeRefreshLayout中



    

        

    

4.2、代码设置

1、findViewById

SwipeRefreshLayout swipeRefreshLayout = findViewById(R.id.swipe_refresh_layout);

2、Loading的样式设置

//设置进度条的颜色
swipeRefreshLayout.setColorSchemeResources(R.color.green);
//设置进度条的背景颜色
swipeRefreshLayout.setProgressBackgroundColorSchemeResource(R.color.d3_bg_gray);

设置后的效果

3、代码中设置监听器,监听到刷新事件后开始请求数据,请求结束后关闭Loading

//设置刷新监听器
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    @Override
    public void onRefresh() {
        //开始网络请求
        String url = "...";
        final Request request = new Request.Builder().url(url).build();
    	  //开启子线程进行网络请求
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    final Response response = okHttpClient.newCall(request).execute();
                  	//请求结束后,切换到主线程处理UI
                    mainHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            //关闭刷新
                            swipeRefreshLayout.setRefreshing(false);
                            try {
                               Toast.makeText(SwipeRefreshLayoutDemoActivity.this,response.body().string(),Toast.LENGTH_LONG).show();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
});
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969963.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号