地址:https://github.com/LinweiJ/LoadingDialog
1、爲何使用它?
開發過程中一個簡單的提交表單場景:
1、提交信息,顯示"信息提交中,請稍後…";
2、信息提交成功,顯示"信息提交成功";
3、等待 2 s,返回上一頁面。
這時,就需要使用加載框了。
2、如何引用它?
先在 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'
}
3、全新使用
重新設計後 使用更簡潔了
3.1、Simple
3.1.1 方法及參數
方法 | 描述 | 參數 |
---|---|---|
SimpleLoadingDialog(@NonNull Context context) | 創建SimpleLoadingDialog | Context |
showFirst(String message) | 第一次顯示 | 顯示文字內容 |
showResult(String message) | 顯示結果(切換文字而已) | 顯示文字內容 |
dismissDelay(long delayMillis, DismissDelayEndCallback callback) | 延時消失 | 延時消失時間,消失時回調 |
3.1.2 使用(try it)
//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);
3.1.3 效果圖
3.2、Lottie
3.2.1 方法及參數
方法 | 描述 | 參數 |
---|---|---|
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) | 延時消失 | 延時消失時間,消失時回調 |
3.2.2 使用(try it)
//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);
3.2.3 效果圖
3.3、其他
3.3.1 、不可取消
//跟Dialog一樣樣的
mLottieLoadingDialog.setCancelable(false);
mLottieLoadingDialog.setCanceledOnTouchOutside(false);
3.3.2 、效果圖
3.3.3 、立即消失
//跟Dialog一樣樣的
mLottieLoadingDialog.cancel();
or
mLottieLoadingDialog.dismiss();
4. 自定義
4.1 構造函數
- 繼承LoadingDialog
- 構造函數調用super方法
public class SimpleLoadingDialog extends LoadingDialog {
public SimpleLoadingDialog(@NonNull Context context) {
super(context);
}
...
4.2 initView
- 在initView中初始化UI佈局
/**
* 初始化view
*/
@Override
protected void initView() {
this.setContentView(R.layout.layout_loading_dialog_simple);
mTvLoadingDialogText = (TextView) this.findViewById(R.id.tv_loading_dialog_text);
}
4.3 showFirst
- 傳遞並設置顯示內容參數
- 調用Dialog的show()方法
/**
* 第一次顯示
*/
public void showFirst(String message) {
mTvLoadingDialogText.setText(message);
this.show();
}
4.4 showResult
- 傳遞並設置顯示內容參數
/**
* 結果
*
* @param message
*/
public void showResult(String message) {
if (isShowing()) {
mTvLoadingDialogText.setText(message);
}
}
4.5 dismissDelay
- 延時關閉加載框
- 關閉時調用DismissDelayEndCallback的onEnd方法
@Override
public void dismissDelay(long delayMillis, DismissDelayEndCallback callback) {
super.dismissDelay(delayMillis, callback);
}
4.6 DismissDelayEndCallback
- 延時關閉加載框的回調
/**
* 延時消失回調
*/
public interface DismissDelayEndCallback {
void onEnd(LoadingDialog dialog);
}
5、更多
更多細節可以參考 demo/ 示例
6、使用到的第三方庫
7、版本0.2.0的改進思路
- 對0.1.0進行重構;
- 針對LoadingDialog使用場景,增加三個接入接口(開始顯示處理,結果顯示處理,消失處理);
- 對於三個接入接口,我們可以更加自由地定義效果;
- 針對簡單使用原則(懶),提供Simple、Lottie兩種快速構建的Builder(也提供一些定製化方法)。
- 主要還是自己在0.1.0使用過程的一些體驗,進行的改進,希望也對你們有所幫助。