Kotlin的魔能機甲 KtArmor 三

2021-09-26 04:43:00 字數 4074 閱讀 9375

繼上篇說到, ktarmor-mvp的外掛程式使用。我們可以快速建立基本的模板**,但是在編寫業務**時候,不熟悉ktarmor-mvp框架, 不知其然,無法駕馭這個魔能機甲。所以這篇我先從baseactivity 開始說起,介紹ktarmor—mvp 的用法,「深入原始碼」解析,帶你走進 ktarmor-mvp。

ktarmor-mvp 框架主要包含3個主要的activity

它們之間繼承關係如下:

mvpactivity > *******activity > baseactivity

然後我們來看看他們具體的實現

abstract

class baseactivity :()

else

}open

funinitargs

(bundle: bundle?

): boolean =

true

open

funinitwidows()

abstract

fungetlayoutid()

: int

open

funinitbefore()

open

funinitview()

open

funinitlistener()

open

funinitdata()

}

baseactivity基本的模板結構,定義了基本的activity 初始化的方法。可以繼承baseactivity,複寫對應方法進行擴充套件。下面是方法具體描述:

abstract

class *******activity :

baseactivity()

override

funinitview()

/** * ******* id must be *******

*/private

funinit*******()

}}override

funonoptionsitemselected

(item: menuitem?

): boolean

}return

super

.onoptionsitemselected

(item)

}}

*******activity繼承 baseactivity, 方便於顯示 *******,在專案中挺常用的,所以就封裝這個*******基本用法。

在 activity 的 xml 引入 *******控制項, 並且 id 必須為*******,否則不會呼叫init*******初始化方法 !!!

abstract

class mvpactivity

:*******activity()

, basecontract.

view

abstract

funbindpresenter()

: p override

funshowerror

(@stringres msgres: int)

override

funshowerror

(msg: string)

override

funshowloading()

override

funhideloading()

override

funondestroy()

}}

mvpactivity 同樣是繼承*******activity, 實現了基本basecontract.view, 管理著 presenter生命週期。子類需要實現bindpresenter()方法,傳遞對應的 presenter。 然後就可以呼叫 presenter 進行後續的操作。

::presenter.isinitialized意思是判斷 presenter 是否懶載入初始化, 防止未初始化,拋異常。

後續可能會通過泛型t, 反射生成presenter,減少重複操作

basefragmentmvpfragment的實現和 activity 實現異曲同工,這裡就不過多介紹了~

abstract

class basepresenter

(view: v)

: basecontract.

presenter

funlaunchui

(block:

suspend coroutinescope.()

-> unit, error:

((throwable)

-> unit)?=

null),

)}}override

fundetachview()

}

abstract

class basemodel

}

basemodel 相對簡單, 封裝了協程切換 io 執行緒的操作.

後續可能新增相關 db 相關操作

}initokhttpclient初始化 okhttp的方法,可以返回自定okhttp

ktarmor-mvp 通過**方式,封裝了 sharedpreferences基本操作. 例如

var account by

preference

(key.account,

"")

定義了乙個 account 變數,傳遞對應sp 儲存的key,和預設值 「」 (空串, 說明account 是string型別)

然後直接當正常變數使用, 如下直接賦值

就可以修改 sp 中keykey.account的值了。**如下

account =

"123"

// 傳統的 trycatch

trycatch

(e: exception)

// ktarmor-mvp 擴充套件

trycatch()

// ktarmor-mvp 擴充套件

trycatch(,

)

sp,dp相互轉化

logr.color.*** -> color intr.drawable.*** -> drawable擴充套件

startactivity參照 anko 的 startactivity (fuzhi)

view相關擴充套件

view 顯示隱藏擴充套件

顯示,關閉軟鍵盤擴充套件

… 以上是ktarmor-mvp 的全部內容,後續框架有更新,也會更新相關文件。

還是那句話,ktarmor-mvp 封裝了基本 mvp結構的框架,是一款小而美的框架,麻雀雖小五章俱全。封裝了基礎的功能,小的專案,或者測試專案可以直接拿來用,省時省力。希望大家喜歡~

最後,若有不妥,望小夥伴們指出。

kotlin的魔能機甲——ktarmor(一)

kotlin的魔能機甲——ktarmor外掛程式篇(二)

感謝閱讀,下次再見

Kotlin的魔能機甲 KtArmor(一)

學習了kotlin有一段時間了,每次寫專案 demo的時候,總是用到網路請求 mvp mvvm 常用工具類 通用自定義view,索性把這些整合到一起,搭成乙個android的腳手架 ktarmor.ktarmor寓意著 為android 賦予戰鬥裝甲,方便開發者快速進行android 開發。節約開發...

藍魔i7s刷機

刷i7s安卓bios 1.準備好fat32格式的u盤乙個,usb介面的鍵盤乙個,usbhub乙個,otg線一條 2.把fparts.txt fpt64.efi 自動公升級指令碼startup.nsh,以及需要公升級的bios bin檔案,一般命名為i7s spinor 0x.bin,如檔名更換則須修...

魔屏賦能「某大型銀行」 做金融時代的資訊化主場

原標題 魔屏賦能 某大型銀行 做金融時代的資訊化主場 某大型銀行 簡稱a銀行 中國五大銀行之 一 香港聯交所主機板上市,全國高達xwuqpuul40000個營業網點 31個省市分行,全國交易額最大的個人金融服務網路平台 a銀行總部和北京分行新建大廈在北京竣工,行內資訊化部署成為a銀行大廈重點落成航向...