LoadingDialog升級

github地址: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 效果圖

loadingDialog_3_1

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 效果圖

loadingDialog_3_2

3.3、其他

3.3.1 、不可取消

//跟Dialog一樣樣的
mLottieLoadingDialog.setCancelable(false);
mLottieLoadingDialog.setCanceledOnTouchOutside(false);

3.3.2 、效果圖

loadingDialog_3_3

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的改進思路

  1. 對0.1.0進行重構;
  2. 針對LoadingDialog使用場景,增加三個接入接口(開始顯示處理,結果顯示處理,消失處理);
  3. 對於三個接入接口,我們可以更加自由地定義效果;
  4. 針對簡單使用原則(懶),提供Simple、Lottie兩種快速構建的Builder(也提供一些定製化方法)。
  5. 主要還是自己在0.1.0使用過程的一些體驗,進行的改進,希望也對你們有所幫助。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章