android对象申明,一行代码配置缺省页, Android最强缺省页框架, 支持代码/布局声明/视图对象回调/全局/单例配置/数据传递...

StateLayout

Android上最强大的缺省页(状态页面)工具

特点

全局配置

单例配置

生命周期(可以加载动画或者处理事件)

刷新回调

获取当前缺省页状态

Loading缺省页支持进度回调

支持activity/fragment/view替换

支持Java或者XML实现

无网络情况下showLoading显示错误布局, 有网则显示加载中布局

支持配合RecyclerView的下拉刷新

支持配合网络请求自动化显示

异步线程显示缺省页

可以将数据作为tag传给页面回调函数处理

配合网络请求库可以做到自动处理缺省页: Net

依赖

project 的 build.gradle

allprojects {

repositories {

// ...

maven { url 'https://jitpack.io' }

}

}

module 的 build.gradle

implementation 'com.github.liangjingkanji:StateLayout:1.0.11'

常见问题

先设置生命周期函数on**(), 再显示缺省页show**()才会执行生命周期函数

显示缺省页

showLoading(tag:Any? = null, refresh:Boolean = true) // 参数表示是否回调onRefresh函数

showEmpty(tag:Any? = null)

showContent(tag:Any? = null)

showError(tag:Any? = null)

showLoading重复执行不会回调onRefresh, 但是会一直回调onLoading, 可以在其回调中进行进度变更

全局状态配置

或者也可以称为默认状态内容, 全局配置即以后都不需要在每个界面中指定缺省页显示内容, 都会默认读取全局配置. 如果不需要全局可以不写.

通过StateConfig单例对象控制

class MyApplication :Application(){

override fun onCreate() {

super.onCreate()

StateConfig.apply {

emptyLayout = R.layout.layout_empty

errorLayout = R.layout.layout_error

loadingLayout = R.layout.layout_loading

onLoading {

// do animation, this object = view object

}

}

}

}

可配置项

缺省页布局

生命周期回调函数

重试ids

生命周期函数

onError|onLoading|onEmpty系列函数, 每次在显示缺省页时都会执行. 一般情况是在回调中对布局中的视图进行设置动画

刷新回调

onRefresh函数在每次showLoading时候都会回调

onRefresh {

thread {

Thread.sleep(2000) // 模拟2s的网络请求

showContent()

}

}

showLoading()

重试Ids

errorLayout布局中的对应ids的视图对象会在点击时自动showLoading, 全局和单例都支持设置, 设置单例后全局就不会继续作用于当前缺省页.

fun setRetryIds(@IdRes vararg ids: Int)

这是覆盖不是添加

500ms内防止重复点击

单例状态配置

级别优先于全局状态配置

state = state().apply {

emptyLayout = R.layout.layout_empty

onError {

// can retry request

}

}

显示缺省页

通过show**函数

override fun onOptionsItemSelected(item: MenuItem): Boolean {

when (item.itemId) {

R.id.menu_loading -> state.showLoading()

R.id.menu_content -> state.showContent()

R.id.menu_error -> state.showError()

R.id.menu_empty -> state.showEmpty()

}

return true

}

布局配置

StateLayout其实也可以在XML布局中声明创建

app:empty_layout="@layout/layout_empty"

app:error_layout="@layout/layout_error"

app:loading_layout="@layout/layout_loading"

android:layout_width="match_parent"

android:layout_height="match_parent">

扩展

在StateUtils文件中存在一系列基于Kotlin特性的工具函数, 用于快速创建一个StateLayout

fun Activity.state(): StateLayout

fun Fragment.state(): StateLayout

fun View.state(): StateLayout

此框架同时被整合到我的RecyclerView库 BRV 中, 完美配合RecyclerView的缺省页和下拉刷新上拉加载.

并且在网络请求中可以达到自动化显示和隐藏缺省页, 查看库 Net

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值