ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LoadingAndRetryManager 完全指南:一个库让 Android 加载、重试、空页面三态切换不再痛苦

LoadingAndRetryManager 完全指南:一个库让 Android 加载、重试、空页面三态切换不再痛苦 LoadingAndRetryManager 完全指南一个库让 Android 加载、重试、空页面三态切换不再痛苦【免费下载链接】LoadingAndRetryManager无缝为Activity、Fragment、任何View设置加载loading、重试(retry)和无数据empty页面。项目地址: https://gitcode.com/gh_mirrors/lo/LoadingAndRetryManager做 Android 开发最让人头秃的莫过于每个页面都要重复实现加载中、加载失败、无数据的 Android 加载重试空页面三态切换。LoadingAndRetryManager正是一个为此而生的轻量开源库它能无缝为 Activity、Fragment 以及任何 View 设置加载Loading、重试Retry和无数据Empty页面。读完这篇完整指南你就能快速掌握三态切换的优雅解法彻底告别重复代码。LoadingAndRetryManager 是什么为什么每个 Android 项目都需要它在传统开发中实现三态切换通常要这样每个页面手写View.GONE/View.VISIBLE的判断为加载动画、重试按钮、空数据提示各写一套布局再在各处维护状态。代码又臭又长样式还不统一。而 LoadingAndRetryManager 的思路非常巧妙用一个继承自 FrameLayout 的容器 LoadingAndRetryLayout.java 包住你的内容页内部同时管理内容页、加载页、重试页、空数据页四个 View切换时只需调用一个方法其他 View 自动隐藏。来看官方效果图 传统写法的三大痛点 每个页面复制粘贴一大坨 Visibility 判断逻辑 加载动画、重试按钮样式不统一改一处要改全部 状态切换散落在 Activity 各处代码难以维护LoadingAndRetryManager 的三大亮点✅ 一个 API 入口Activity、Fragment、任意 View 通吃✅ 全局配置一次所有页面共享统一的三态样式✅ 支持为单个页面单独定制专属布局灵活不将就核心原理一个容器如何管住四种状态整个库的精髓都在 LoadingAndRetryManager.java 中调用generate()时它会自动把目标页面的根布局偷梁换柱成一个 LoadingAndRetryLayout 容器并把原来的内容 View 塞进去作为内容页。切换状态时容器内部的 showView() 方法只做一件事让目标 ViewVISIBLE其余三个GONE。简单、可靠、无副作用。更贴心的是即使在子线程调用切换方法它也会自动post到主线程执行杜绝了不能在非 UI 线程更新 UI的崩溃风险 ️。3 步快速集成Android 加载重试空页面一键接入整个接入过程不超过 10 行代码新手也能轻松搞定。第一步在 Application 中统一配置三态布局如果多个页面共享相同的加载、重试、空数据样式强烈建议在 Application 的onCreate里全局配置一次参考官方示例 MyApplication.javaLoadingAndRetryManager.BASE_RETRY_LAYOUT_ID R.layout.base_retry; LoadingAndRetryManager.BASE_LOADING_LAYOUT_ID R.layout.base_loading; LoadingAndRetryManager.BASE_EMPTY_LAYOUT_ID R.layout.base_empty;对应的三个默认布局就是项目里的 base_loading.xml、base_retry.xml 和 base_empty.xml你可以按需修改成自己的样式。第二步一行代码生成三态管理器在 Activity 的onCreate中只需一行代码即可完成初始化Fragment 中用法完全一致mLoadingAndRetryManager LoadingAndRetryManager.generate(this, listener);第三步四个方法随心切换四种状态这是最爽的部分加载、重试、内容、空数据四种状态各有一个对应方法mLoadingAndRetryManager.showLoading(); // 显示加载中 mLoadingAndRetryManager.showRetry(); // 显示重试页面 mLoadingAndRetryManager.showContent(); // 显示正常内容 mLoadingAndRetryManager.showEmpty(); // 显示无数据页面在 MainActivity.java 的官方示例中模拟了一次网络请求先showLoading()子线程 sleep 2 秒后随机切换到内容 / 重试 / 空数据页面完整演示了三态切换的典型流程 。任意 View 也能三态切换不止 Activity 与 Fragment这是 LoadingAndRetryManager 最与众不同的能力——它不只服务于页面级容器任何 View 都可以被加持三态能力。只需要把generate()的第一个参数从 Activity 换成对应的 View 即可LoadingAndRetryManager.generate(yourTextView, listener);比如某个列表项、某个独立卡片甚至一个普通的 TextView都能单独拥有自己的加载、重试、空数据状态。下方的动图就演示了在一个普通 TextView 上接入三态效果 当然generate()的第一个参数必须是 Activity、Fragment 或 View 三者之一否则会抛出IllegalArgumentException提醒你。定制专属三态页面重写回调方法全局样式适用于大多数场景但如果某个页面想搞特殊比如电商首页的失败重试页要带个活动 Banner只需在 OnLoadingAndRetryListener.java 的回调中重写对应方法即可new OnLoadingAndRetryListener() { Override public void setRetryEvent(View retryView) { // 绑定重试按钮的点击事件 retryView.findViewById(R.id.id_btn_retry) .setOnClickListener(v - loadData()); } Override public View generateRetryLayout() { // 返回本页面专属的重试布局 return getLayoutInflater().inflate(R.layout.my_retry, null); } };其中setRetryEvent是必须实现的方法用来给重试页绑定点击事件点击后重新发起数据加载即可完成失败 → 重试 → 成功的闭环 。完整 API 速查表一张表记住所有方法方法作用generate(activityOrFragmentOrView, listener)生成三态管理器支持三种类型入参showLoading()显示加载中页面showRetry()显示失败重试页面showContent()显示正常内容页面showEmpty()显示无数据页面BASE_LOADING_LAYOUT_ID等三个静态变量全局默认三态布局的 ID 配置常见问题与避坑指南Q1每个页面都要单独配置布局吗不用。在 Application 里全局配置一次即可所有页面自动共享只有需要定制时才在单个页面重写回调。Q2为什么重试按钮点了没反应记得在setRetryEvent回调中给重试按钮设置点击事件这是最容易遗漏的一步。Q3能在子线程切换状态吗可以。库内部会自动切换到主线程执行非常安全。Q4集成时传入的参数有要求吗必须且只能是 Activity、Fragment 或 View 实例。总结现在就开始体验吧LoadingAndRetryManager 用不到 300 行核心代码就解决了 Android 开发中高频出现的加载、重试、空数据三态难题堪称小而美的典范。想亲自体验的话直接克隆仓库运行自带 Demo 即可git clone https://gitcode.com/gh_mirrors/lo/LoadingAndRetryManager别再让重复的三态代码消耗你的热情了用上 LoadingAndRetryManager把时间留给真正有价值的业务逻辑吧 。【免费下载链接】LoadingAndRetryManager无缝为Activity、Fragment、任何View设置加载loading、重试(retry)和无数据empty页面。项目地址: https://gitcode.com/gh_mirrors/lo/LoadingAndRetryManager创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表