Kolin 更優(yōu)雅的封裝ProgressDialog

最近已經(jīng)開始全面轉(zhuǎn)投kotlin,不得不說使用kotlin開發(fā)項(xiàng)目真的是非常舒服,編寫代碼過程中真的有一種所想即所得的感覺,不會在讓一些無聊的東西打斷你的思路,回歸正題,這邊介紹一下kotlin中的一個小技巧。

在我們平常開發(fā)過程中肯定會使用到各種progressDialog,最常見的請求網(wǎng)絡(luò)數(shù)據(jù)時在沒有返回數(shù)據(jù)會顯示一個加載中的狀態(tài),大多是時候我們會封裝一個CustomProgressdialog,當(dāng)調(diào)用的時候初始化它,通過show方法進(jìn)行顯示,通常我們會把這個CustomProgressdialog放在BaseActivity中,方便各個界面進(jìn)行調(diào)用,下面來看kotlin中是如何完成這些操作的。

首先需要一個CustomProgressdialog,先完成一個這種樣式的CustomProgressdialog


這邊文章的重點(diǎn)不在如何實(shí)現(xiàn)這個CustomProgressdialog,封裝的具體過程就不說了,如果需要文末有g(shù)ithub地址。

現(xiàn)在我們已經(jīng)有了一個CustomProgressdialog,接下來自定義一個接口LoadingDialogManager

interface LoadingDialogManager {

   val loadingDialog: LoadingDialog

   fun showLoadingDialog(context: Context) {
        loadingDialog.showDialog(context, "加載中", true, null)
    }

    fun hideLaodingDialog() {
        loadingDialog.dismiss()
    }
}

在這個接口中有兩個方法showLoadingDialog和hideLaodingDialog,對應(yīng)dialog的show和dismiss。注意這里并沒有對LoadingDialog進(jìn)行實(shí)例化
下面讓我們的BaseActivity實(shí)現(xiàn)這個接口,由于我們的接口中有一個loadingDialog成員,所有還需要實(shí)現(xiàn)它

open class BaseActivity : AppCompatActivity(), LoadingDialogManager {
    override val loadingDialog by lazy { LoadingDialog(this) }
}

這里使用到了委托延遲屬性的概念,簡單來說只有當(dāng)loadingDialog 真正被使用的時候采實(shí)例化它。這樣就減輕了activity初始化的壓力。

在具體的activity中直接調(diào)用showLoadingDialog和hideLaodingDialog即可完成LoadingDialog的顯示和隱藏了。

class MainActivity : BaseActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        showLoadingDialog(this)
    }
}

有沒有感覺這樣一封裝代碼變得簡潔不少?其實(shí)這只是一種思路,其他的一些公用組件也可以通過這種方式進(jìn)行封裝,最后奉上githu地址
https://github.com/shiweibsw/KotlinDialog

題外話:最近正在利用業(yè)余時間完全使用kotlin高仿一版B站客戶端,目前正在開發(fā)過程中,歡迎有興趣的小伙伴加入,github地址:https://github.com/shiweibsw/iBiliPlayer-Kotlin

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,938評論 25 709
  • 文|大金 下雨了,雨水沿著屋檐從高樓摔下來,在地上重重地打出一個瓢。還沒來得及反應(yīng),瓢就消失了。就在那一瞬間,一片...
    旅人書閱讀 446評論 3 4
  • 工作溝通中,我們建議先提出結(jié)論,再進(jìn)行解釋,可以讓對方第一時間知道解決方案,而不是聽半天解釋才得出結(jié)論。所以在提供...
    茶米咖閱讀 2,118評論 0 0
  • 西西來找我聊她的困惑。工作將近七年,有一份穩(wěn)定的工作,收入不高也不低,工作已沒什么激情,職業(yè)倦怠嚴(yán)重,但是辭職呢又...
    花開生涯閱讀 1,102評論 8 9
  • 新時代的當(dāng)家人,仿佛在走一條老路。改革開放之初,由于經(jīng)濟(jì)才起步,就業(yè)成了年輕人的難題,有機(jī)會的有條件的有關(guān)系的都想...
    0847c5bcdc68閱讀 827評論 1 0

友情鏈接更多精彩內(nèi)容