地址:https://github.com/LinweiJ/LoadingDialog
开发过程中一个简单的提交表单场景:
1、提交信息,显示"信息提交中,请稍后…";
2、信息提交成功,显示"信息提交成功";
3、等待 2 s,返回上一页面。
这时,就需要使用加载框了。
先在 project的build.gradle 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
然后在module的build.gradle 添加:
dependencies {
implementation 'com.github.LinweiJ.LoadingDialog:loadingDialog:0.2.0'
//使用LottieLoadingDialog,需另外添加
implementation 'com.github.LinweiJ.LoadingDialog:lottieLoadingDialog:0.2.0'
implementation 'com.airbnb.android:lottie:2.7.0'
}
重新设计后 使用更简洁了
方法 | 描述 | 参数 |
---|---|---|
SimpleLoadingDialog(@NonNull Context context) | 创建SimpleLoadingDialog | Context |
showFirst(String message) | 第一次显示 | 显示文字内容 |
showResult(String message) | 显示结果(切换文字而已) | 显示文字内容 |
dismissDelay(long delayMillis, DismissDelayEndCallback callback) | 延时消失 | 延时消失时间,消失时回调 |
//SimpleLoadingDialog
SimpleLoadingDialog mSimpleLoadingDialog = new SimpleLoadingDialog(this);
//显示加载框
mSimpleLoadingDialog.showFirst("加载中.....");
//模拟延时操作
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
//显示结果
mSimpleLoadingDialog.showResult("加载6秒后加载成功");
//延时消失
mSimpleLoadingDialog.dismissDelay(5000, new LoadingDialog.DismissDelayEndCallback() {
@Override
public void onEnd(LoadingDialog dialog) {
Toast.makeText(mActivity, "加载成功显示5秒消失了", Toast.LENGTH_SHORT).show();
}
});
}
}, 6000);
方法 | 描述 | 参数 |
---|---|---|
LottieLoadingDialog(@NonNull Context context) | 创建LottieLoadingDialog | Context context |
showFirst(String message, int typeLottie, @Nullable String jsonFileName, int lottieRepeatCount) | 第一次显示 | 显示文字内容,Lottie动画Type,Lottie动画文件(可空), 重复次数(INFINITE(-1)无限次) |
showResult(String message, int typeLottie, @Nullable String jsonFileName, int lottieRepeatCount) | 显示结果(切换文字及Lottie动画而已) | 显示文字内容,Lottie动画Type,Lottie动画文件(可空), 重复次数(INFINITE(-1)无限次) |
dismissDelay(long delayMillis, DismissDelayEndCallback callback) | 延时消失 | 延时消失时间,消失时回调 |
//LottieLoadingDialog
LottieLoadingDialog mLottieLoadingDialog = new LottieLoadingDialog(this);
//显示加载框
mLottieLoadingDialog.showFirst("加载中...", LLD_TYPE_LOADING_1, null, INFINITE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//显示结果
mLottieLoadingDialog.showResult("加载4秒后加载成功...", LLD_TYPE_SUCCESS_1, null, 0);
//延时消失
mLottieLoadingDialog.dismissDelay(2000, new LoadingDialog.DismissDelayEndCallback() {
@Override
public void onEnd(LoadingDialog dialog) {
Toast.makeText(mActivity, "加载成功显示2秒消失了", Toast.LENGTH_LONG).show();
}
});
}
}, 4000);
//跟Dialog一样样的
mLottieLoadingDialog.setCancelable(false);
mLottieLoadingDialog.setCanceledOnTouchOutside(false);
//跟Dialog一样样的
mLottieLoadingDialog.cancel();
or
mLottieLoadingDialog.dismiss();
public class SimpleLoadingDialog extends LoadingDialog {
public SimpleLoadingDialog(@NonNull Context context) {
super(context);
}
...
/**
* 初始化view
*/
@Override
protected void initView() {
this.setContentView(R.layout.layout_loading_dialog_simple);
mTvLoadingDialogText = (TextView) this.findViewById(R.id.tv_loading_dialog_text);
}
/**
* 第一次显示
*/
public void showFirst(String message) {
mTvLoadingDialogText.setText(message);
this.show();
}
/**
* 结果
*
* @param message
*/
public void showResult(String message) {
if (isShowing()) {
mTvLoadingDialogText.setText(message);
}
}
@Override
public void dismissDelay(long delayMillis, DismissDelayEndCallback callback) {
super.dismissDelay(delayMillis, callback);
}
/**
* 延时消失回调
*/
public interface DismissDelayEndCallback {
void onEnd(LoadingDialog dialog);
}
更多细节可以参考 demo/ 示例