首页 » Andorid » 临时分类 » 正文

StateLayoutWithKotlin

这个项目是根据 StateLayout 项目而来,感谢原作者的贡献,我本人在功能实现上只做了稍许改动,主要的不同在于这个是完全使用Kotlin编写的,可以看做是一个kotlin练手项目。 由于我也是刚刚使用Kotlin,使用还不是很熟练,如果在写法、功能实现上有不够优雅的地方欢迎指正!

更新

  • 优化了各个View的加载逻辑,在调用相应布局时才会加载,节约资源。
  • 删除了部分无用的方法

> 下面是原项目的readme部分

演示

演示图

引入布局

用法与ScrollView一致,只允许一个根布局


        <!-- 内容布局 one root view -->

布局设置图标和文字


    <!-- 错误提示图标 -->

    <!-- 错误提示文字 -->

    <!-- 空数据提示图标 -->

    <!-- 空数据提示文字 -->

    <!-- 没有网络提示图标 -->

    <!-- 没有网络提示文字 -->

    <!-- 超时提示图标 -->

    <!-- 超时提示文字 -->

    <!-- 登录提示图标 -->

    <!-- 登录提示文字 -->

    <!-- 加载提示文字 -->

示例:


代码提前设置图标和文字

如果你设置了一个null数据的时候,将使用上一次设置的提示语。空字符串可以正常显示为空,即只显示一个提示图片。

//type为StateLayout的固定Type变量
public static final int ERROR = 1;
public static final int EMPTY = 2;
public static final int TIMEOUT = 3;
public static final int NOT_NETWORK = 4;
public static final int LOADING = 5;
public static final int LOGIN = 6;

image

代码设置显示布局

//展示没有网络的界面
stateLayout.showNoNetworkView();
//展示超时的界面
stateLayout.showTimeoutView();
//展示空数据的界面
stateLayout.showEmptyView();
//展示错误的界面
stateLayout.showErrorView();
//展示登录的界面
stateLayout.showLoginView();

//如下图所示
1,直接显示
2,设置提示stringId和图片Id显示
3,设置提示stringId显示
4,设置提示字符串现实
5,设置提示字符串和图片Id显示

image

//显示加载界面
stateLayout.showLoadingView();

1,直接显示
2,设置提示stringId显示
3,设置提示字符串显示
4,设置自定义加载View显示,如:
    1)进度条
    2)显示gif的View
    3)自定义布局View

image

//显示自定义界面
stateLayout.showCustomView();

设置替换成自定义的界面: image

设置切换界面动画

动画默认为false,如果需要开启动画,请调用

//开启动画
stateLayout.setUseAnimation(true);

如果用户不设置自定义动画,一般为默认的渐隐缩放动画 如果用户需要设置动画,请调用

//设置动画
stateLayout.setViewSwitchAnimProvider(new FadeScaleViewAnimProvider());

stateLayout自定义了两种动画

//渐隐缩放,渐显放大动画
FadeScaleViewAnimProvider
//渐隐渐显动画
FadeViewAnimProvider

用户如需自定义动画样式,请实现ViewAnimProvider接口

重写showAnimationhideAnimation方法。

//以FadeViewAnimProvider为例
public class FadeViewAnimProvider implements ViewAnimProvider {

    @Override
    public Animation showAnimation() {
        Animation animation = new AlphaAnimation(0.0f,1.0f);
        animation.setDuration(200);
        animation.setInterpolator(new DecelerateInterpolator());
        return animation;
    }

    @Override
    public Animation hideAnimation() {
        Animation animation = new AlphaAnimation(1.0f,0.0f);
        animation.setDuration(200);
        animation.setInterpolator(new AccelerateDecelerateInterpolator());
        return animation;
    }

}

监听刷新和登录点击

请实现StateLayout里面的OnViewRefreshListener接口。

重写两个方法:

//刷新界面
void refreshClick();

//登录点击
void loginClick();

感谢lufficc 开源代码提供的动画思路

下载 (0)

发表评论