好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !

dance發表於2019-01-08

寫在前面

首先,這是一個Kotlin類庫,如果你的專案是JAVA寫的,那就暫時幫不上你的忙了。其次,這個可不是官方那個android-ktx

隨著專案越來越多,我們必然抽取大量的工具類和公共模組。Java的工具類看起來已經很簡單了,但是Kotlin的擴充套件又讓其簡潔性和易用性上了一個等級,而且還有點AOP的功能。這裡我不再多說Kotlin的好處了,我是一個Kotlin的愛好者和推廣者,我們公司的後臺,安卓和前端核心程式碼全線切為Kotlin了,開發效率大大提升;如果你想快樂的寫程式碼,那就用Kotlin吧!

快速嚐鮮

這個類庫對常用的使用場景進行了封裝,包括Http,目標是替代你專案中的所有工具類。來看看幾個例子吧:

  1. View點選
view.click { 
toast("do something")
}複製程式碼

除了寫法簡潔一點,它內部還實現了事件的節流。限制使用者在350ms內只能點選一次,相信你遇到過使用者快速點選按鈕開啟多個Activity的場景。

  1. 字串的雜湊
"123456".md5()"123456".sha1()"123456".sha1Hmac(salt) // 隨機數增強的雜湊//...複製程式碼

專案中經常遇到對字串進行hash,類庫提供了常見的md5, sha1, sha256, 隨機數增加雜湊,AES,DES等演算法的封裝。

  1. 列印日誌
"我是測試".v()"我是測試".i()"我是測試".w()"我是測試".d()"我是測試".e()複製程式碼
好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !

日誌的tag和開關都是可配置的。

  1. Span相關
val str = "我是測試文字"tvSizeResult.sizeSpan(str, 0..2)tvSizeResult.sizeSpan(str, 0..2, scale = .7f) //改變scale可以控制放大或縮小,scale預設是1.5複製程式碼
好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !
tvColorResult.colorSpan(str,2..6)複製程式碼
好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !
tvStrikethrougthResult.strikeThrougthSpan(str,2..6)複製程式碼
好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !

封裝了顏色,大小,背景色,刪除線和點選等常用的文字裝飾,使用物件是TextView和String。

  1. ImageView相關

主要是載入圖片的封裝:

// 底層是封裝Glide來載入圖片imageView.load(url)imageView.load(url, placeholder = R.mipmap.ic_launcher, isCircle = true)imageView.load(url, placeholder = R.mipmap.ic_launcher, roundRadius = 20)複製程式碼
  1. OkHttp相關

對OkHttpUtils和OkGo都不滿意,於是造了一個。請求:

//Get請求val user = "http://192.168.1.103:3000/json".http().get<
User>
()//Post請求,傳遞header和paramsval user = "http://192.168.1.103:3000/json".http() .headers("device" to "HuaWeiMate20", ...) .params("token" to "188sas9cf99a9d", "file" to file, //上傳檔案 ...) .post<
User>
()複製程式碼

上面的示例本身需要在協程中使用;也是我最喜歡和最推薦的方式。如果你不用協程,則可以用callback style

"http://192.168.1.103:3000/json".http().get(object : HttpCallback<
String>
{
override fun onSuccess(t: String) {

} override fun onFail(e: IOException) {
super.onFail(e)
}
})複製程式碼

內建了簡潔實用的日誌列印器:

好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !

其他設定:

// 設定自定義的ClientOkWrapper.setClient(...)// 設定全域性headerOkWrapper.headers("header1" to "a", "header2" to "b", ...)// 設定攔截器OkWrapper.interceptors(...)// 取消請求"http://192.168.1.103:3000/json".http(tag = "abc").get<
String>
() //需要先指定tagOkWrapper.cancel("abc")複製程式碼

最後

上面的只是類庫中很小的一部分,更多的使用詳情請看Github的README吧,希望能幫助到你。

Github地址:github.com/li-xiaojun/…

歡迎您在Issue中提出一些建議和意見,來共同完善這個庫。如果您喜歡它,也可以給個Star。

來源:https://juejin.im/post/5c33f062e51d4551e13b6aec

相關文章