1. 程式人生 > >一個簡單好用的LoadingDialog

一個簡單好用的LoadingDialog

寫在前面

還記得以前在網上看到過一個LoadingDialog,感覺還挺不錯的,可惜只有一個Loading,配套的錯誤和正確的反饋都沒,一直覺得挺遺憾的,今天花了一些時間把他補全了。今天上多說找了下,找到了原來我的評論,放上原作者的文章地址。我做的事就是增強LoadingDialog的功能,新增兩個自定義View。今天收到了兩位前輩不錯的建議,後續更新即將到來~

感謝小路同學指出我後面反饋的圓的方向和之前的方向不一致的情況,已修復,因為截gif怪麻煩的,圖就不改了。。。

使用方法與效果圖

展示一個loading dialog:

new LoadingDialog(this)
    .setLoadingText("載入中..."
)//設定loading時顯示的文字 .show();

效果圖:


loading.gif

展示一個loading dialog並在合適的時機返回正確或者錯誤的反饋給使用者:

LoadingDialog ld = new LoadingDialog(this);
ld.setLoadingText("載入中")
         .setSuccessText("載入成功")//顯示載入成功時的文字
         //.setFailedText("載入失敗")
         .setInterceptBack(intercept_back_event)
         .setLoadSpeed(speed)
         .setRepeatCount(repeatTime)
         .setDrawColor(color)
         .show();

//在你程式碼中合適的位置呼叫反饋
ld.loadSuccess(); //ld.loadFailed();

效果圖:


loadSuccess.gif
gif

還是同樣的蜜汁小圓點。。。因為不摸他 載入結束他就不錄了,辣雞AS。。。

如果你不想要這個動態畫出來的效果,你也可以通過closeSuccessAnim()或者closeFailedAnim()關閉它:

LoadingDialog ld = new LoadingDialog(this);
ld.setLoadingText("載入中")
         .setSuccessText("載入成功")
         .setInterceptBack(intercept_back_event)
         .setLoadSpeed(speed)
         .closeSuccessAnim()
         .setDrawColor(color)
         .setRepeatCount(repeatTime)
         .show();

fail_no_anim.gif

提供你使用的一些方法:

  • setSize(int size):可以通過這個來設定彈框的尺寸,首先我這要求長寬相等的,所以只給一個引數設定他的尺寸就行了。再者我在自定義View裡也會把不同的長寬處理成一樣的。在專案中有一個SizeUtils,在設定尺寸的時候注意用這個工具將dp轉換成px。
  • show():展示你設定的loadingDialog
  • close():關閉動畫釋放一些資源,關閉dialog
  • setLoadingText(String msg):設定Loading時的文字
  • setSuccessText(String msg):設定Loading成功時文字
  • setFailed(String msg):設定Loading失敗時的文字
  • loadSuccess():呼叫這個方法展示一個成功的反饋
  • loadFailed():呼叫這個方法展示一個失敗的反饋
  • closeSuccessAnim():關閉成功反饋的動態繪製
  • closeFailedAnim():關閉失敗反饋的動態繪製
  • setInterceptBack(boolean interceptBack):是否攔截使用者back,如果設定為true,那麼一定要呼叫close(),或者loadSuccess()、loadFailed()這二者中的一個,不然出現無限loading的情況我相信你不會想看到的。
  • getInterceptBack():返回dialog是否攔截的布林值
  • setLoadSpeed(Speed speed):引數是一個列舉,一共兩個值,SPEED_ONE是比較慢的,SPEED_TWO比前一個快一點,為毛不再加?處理起來比較麻煩...
  • setDrawColor(int color):可以改變繪製的顏色,圓和裡面的勾啊,叉啊的顏色,不建議你用,不一定好看。
  • setRepeatCount(int count):設定動態繪製的次數,比如你設定了值為1,那麼除了載入的時候繪製一次,還會再繪製一次。如果你有這個需要,可以設定他的重繪次數。
  • setShowTime(long time):設定反饋結果視窗的展示時間,預設為1秒,如果有繪製過程,則從繪製完成之後算。

如何在你的專案中使用

如何使用

Step 1. 把這玩意加到你的build.gradle裡:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Step 2. 加上這個依賴

dependencies {
        compile 'com.github.ForgetAll:LoadingDialog:v1.0.1'
}