Android实现SwipeRefreshLayout首次进入自动刷新

发布时间 - 2026-01-10 22:15:18    点击率:

看到了Android版知乎实现了这种效果,就自己也实现了一下。

先来一张效果图

实现方式:

方法一:

①在onWindowFocusChanged()方法中,设置为刷新状态为true

@Override
  public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    mSwipeRefreshLayout.setRefreshing(true);
  }

②在获取数据完成后设置刷新状态为false

if (mSwipeRefreshLayout.isRefreshing()) {
              mSwipeRefreshLayout.setRefreshing(false);
            }

方法二:

①调用mSwipeRefreshLayout.measure()方法后,设置刷新状态为true

//手动调用,通知系统去测量
    mSwipeRefreshLayout.measure(0,0);
    mSwipeRefreshLayout.setRefreshing(true);

②在获取数据完成后设置刷新状态为false

if (mSwipeRefreshLayout.isRefreshing()) {
              mSwipeRefreshLayout.setRefreshing(false);
            }

说明:
方法一和方法二的第一步的目的,都是为了在SwipeRefreshLayout绘制完成之后,再设置刷新状态为true,否则大多数情况下,SwipeRefreshLayout刷新球会不显示。

源码:

package org.raphets.swiperefreshlayoutdemo;

import android.graphics.Color;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
  private SwipeRefreshLayout mSwipeRefreshLayout;
  private TextView mTextView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.srl);
    mTextView = (TextView) findViewById(R.id.tv);


    //设置刷新球颜色
    mSwipeRefreshLayout.setColorSchemeColors(Color.BLUE, Color.RED, Color.YELLOW);
    mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.parseColor("#BBFFFF"));
    //手动调用,通知系统去测量
//    mSwipeRefreshLayout.measure(0,0);
    mSwipeRefreshLayout.setRefreshing(true);
    getData();
  }

  /**
   * 模拟网络请求
   */
  private void getData() {
    new Thread() {
      @Override
      public void run() {
        super.run();
        //模拟网络请求
        try {
          Thread.sleep(3000);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        //在UI线程中更新UI
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            mTextView.setText("首次进入自动刷新");
            if (mSwipeRefreshLayout.isRefreshing()) {
              mSwipeRefreshLayout.setRefreshing(false);
            }
          }
        });
      }
    }.start();
  }

  @Override
  public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    mSwipeRefreshLayout.setRefreshing(true);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # SwipeRefreshLayout  # 自动刷新  # Android SwipeRefreshLayout超详细讲解  # Android 使用SwipeRefreshLayout控件仿抖音做的视频下拉刷新效果  # Android SwipeRefreshLayout仿抖音app静态刷新  # android使用SwipeRefreshLayout实现ListView下拉刷新上拉加载  # android基于SwipeRefreshLayout实现类QQ的侧滑删除  # Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法  # android中SwipeRefresh实现各种上拉  # 下拉刷新示例  # Android使用Item Swipemenulistview实现仿QQ侧滑删除功能  # Android 中 Swipe、Scroll 和 Fling  # 都是  # 实现了  # 完成后  # 首次  # 设置为  # 先来  # 大家多多  # 情况下  # 看到了  # false  # runOnUiThread  # isRefreshing  # span  # measure  # hasFocus  # boolean  # super  # setRefreshing  # mSwipeRefreshLayout  # package 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: js代码实现下拉菜单【推荐】  如何彻底删除建站之星生成的Banner?  Laravel如何配置任务调度?(Cron Job示例)  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Swift中swift中的switch 语句  高性能网站服务器配置指南:安全稳定与高效建站核心方案  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  如何做网站制作流程,*游戏网站怎么搭建?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  ,交易猫的商品怎么发布到网站上去?  移动端脚本框架Hammer.js  ,网页ppt怎么弄成自己的ppt?  制作公司内部网站有哪些,内网如何建网站?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  如何在阿里云香港服务器快速搭建网站?  音响网站制作视频教程,隆霸音响官方网站?  JavaScript模板引擎Template.js使用详解  如何选择可靠的免备案建站服务器?  深入理解Android中的xmlns:tools属性  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  如何在云服务器上快速搭建个人网站?  Laravel怎么判断请求类型_Laravel Request isMethod用法  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何在云虚拟主机上快速搭建个人网站?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  C语言设计一个闪闪的圣诞树  Laravel用户密码怎么加密_Laravel Hash门面使用教程  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何快速完成中国万网建站详细流程?  如何安全更换建站之星模板并保留数据?  如何挑选优质建站一级代理提升网站排名?  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  Android使用GridView实现日历的简单功能  LinuxCD持续部署教程_自动发布与回滚机制  Laravel如何创建自定义Artisan命令?(代码示例)  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?