https://github.com/stars-one/pagestatusmanager
无缝为Activity、Fragment、任何View设置常用状态显示(加载中,重试,无数据)
https://github.com/stars-one/pagestatusmanager
Last synced: 8 months ago
JSON representation
无缝为Activity、Fragment、任何View设置常用状态显示(加载中,重试,无数据)
- Host: GitHub
- URL: https://github.com/stars-one/pagestatusmanager
- Owner: stars-one
- Created: 2022-04-18T06:48:23.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-23T05:43:19.000Z (about 1 year ago)
- Last Synced: 2024-12-27T04:26:08.213Z (10 months ago)
- Language: Java
- Size: 142 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# PageStatusManager
无缝为Activity、Fragment、任何View设置加载(loading)、重试(retry)和无数据(empty)页面。
基于[hongyangAndroid/LoadingAndRetryManager](https://github.com/hongyangAndroid/LoadingAndRetryManager)进行Kotlin的相关优化
发布在Jitpack可快速引用
## 引入
```
implementation 'com.github.stars-one:PageStatusManager:0.1'
```## 使用
### 1.初始化对应状态布局
如果多个页面共享加载和重试页面,建议全局设置个基本的。比如在Application中:```java
public class MyApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
//设置布局
LoadingAndRetryManager.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;//空数据
}
}
```> PS: 如果只是单个Activity或Fragment用到,也可以在对应的Activity或Fragment进行布局的设置
### 2.Activity初始化对象
在Activity中:```java
class MainActivity : AppCompatActivity() {
lateinit var mLoadingAndRetryManager: LoadingAndRetryManageroverride fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)mLoadingAndRetryManager = LoadingAndRetryManager.generate(this,object :
OnLoadingAndRetryListener() {
override fun setRetryEvent(retryView: View?) {
//设置重试页面的点击事件
retryView?.findViewById(R.id.id_btn_retry)?.setOnClickListener {
loadData()
}
}
})loadData()
}//模拟加载数据
fun loadData() {
thread {
mLoadingAndRetryManager.showLoading()
Thread.sleep(2000)
//加载失败的显示(相应的,加载成功调用showContent即可)
runOnUiThread {
mLoadingAndRetryManager.showRetry()
}
}
}
}
```
* 在Fragment中与Activity中用法一致。* 为任何View添加,只需要将`LoadingAndRetryManager.generate()`的第一个参数改成对应的View即可。
PS: 目前如果是在约束布局中使用有坑,
比如说,下面代码(省略了根布局的约束布局),到时候调用showContent的时候,是无法显示出此View的,原因是设置LayoutParam的高度计算不对(暂时还没有细究,解决方法在下面)
```xml```
我们给View外层包裹一个布局即可(什么布局都可),然后View占满此布局即可解决
```xml
```如果需要针对单个Activity、Fragment、View定制页面,重写接口的回调方法:
```java
public View generateLoadingLayout()
{
return null;
}public View generateRetryLayout()
{
return null;
}public View generateEmptyLayout()
{
return null;
}
```
即可,针对每个页面都有对应的设置事件的回调,如果有需求直接复写。### API
* mLoadingAndRetryManager.showContent();
* mLoadingAndRetryManager.showRetry();
* mLoadingAndRetryManager.showLoading();
* mLoadingAndRetryManager.showEmpty();