好用到爆的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和params
val 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 !

其他設定:

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

最後

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

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

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

相關文章