最近已經開始全面轉投kotlin,不得不說使用kotlin開發項目真的是很是舒服,編寫代碼過程當中真的有一種所想即所得的感受,不會再讓一些無聊的東西打斷你的思路,迴歸正題,這邊介紹一下kotlin中的一個小技巧。git
在咱們日常開發過程當中確定會使用到各類progressDialog,最多見的好比請求網絡數據時在沒有返回數據前會顯示一個加載中的狀態,大多數時候咱們會封裝一個CustomProgressdialog,當調用的時候初始化它,並經過show方法進行顯示,一般咱們會把這個CustomProgressdialog放在BaseActivity中,方便各個界面進行調用,下面來看kotlin中是如何完成這些操做的。github
首先須要一個CustomProgressdialog,先完成一個這種樣式的CustomProgressdialog網絡
如今咱們已經有了一個CustomProgressdialog,接下來自定義一個接口LoadingDialogManageride
interface LoadingDialogManager {
val loadingDialog: LoadingDialog
fun showLoadingDialog(context: Context) {
loadingDialog.showDialog(context, "加載中", true, null)
}
fun hideLaodingDialog() {
loadingDialog.dismiss()
}
}複製代碼
在這個接口中有兩個方法showLoadingDialog和hideLaodingDialog,分別對應dialog的show和dismiss。注意這裏並無對LoadingDialog進行實例化
下面讓咱們的BaseActivity實現這個接口,因爲咱們的接口中有一個loadingDialog成員,全部還須要實現它this
open class BaseActivity : AppCompatActivity(), LoadingDialogManager {
override val loadingDialog by lazy { LoadingDialog(this) }
}複製代碼
這裏使用到了委託延遲屬性的概念,簡單來講只有當loadingDialog 真正被使用的時候採實例化它。這樣就減輕了activity初始化的壓力。spa
在具體的activity中直接調用showLoadingDialog和hideLaodingDialog便可完成LoadingDialog的顯示和隱藏了。3d
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
showLoadingDialog(this)
}
}複製代碼
有沒有感受這樣一封裝代碼變得簡潔很多?其實這只是一種思路,其餘的一些公用組件也能夠經過這種方式進行封裝,最後奉上githu地址
github.com/shiweibsw/K…code
題外話:最近正在利用業餘時間徹底使用kotlin高仿一版B站客戶端,目前正在開發過程當中,歡迎有興趣的小夥伴加入,github地址:github.com/shiweibsw/i…cdn