好用到爆的Kotlin擴展庫AndroidKTX,若是你也用Kotlin開發Android,You Need It !

寫在前面

首先,這是一個Kotlin類庫,若是你的項目是JAVA寫的,那就暫時幫不上你的忙了。 其次,這個可不是官方那個android-ktx前端

隨着項目愈來愈多,咱們必然抽取大量的工具類和公共模塊。Java的工具類看起來已經很簡單了,可是Kotlin的擴展又讓其簡潔性和易用性上了一個等級,並且還有點AOP的功能。這裏我再也不多說Kotlin的好處了,我是一個Kotlin的愛好者和推廣者,咱們公司的後臺,安卓和前端核心代碼全線切爲Kotlin了,開發效率大大提高;若是你想快樂的寫代碼,那就用Kotlin吧!android

快速嚐鮮

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

  1. View點擊
view.click {
    toast("do something")
}
複製代碼

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

  1. 字符串的哈希
"123456".md5()
"123456".sha1()
"123456".sha1Hmac(salt) // 隨機數加強的哈希
//...
複製代碼

項目中常常遇到對字符串進行hash,類庫提供了常見的md5, sha1, sha256, 隨機數增長哈希,AES,DES等算法的封裝。算法

  1. 打印日誌
"我是測試".v()
"我是測試".i()
"我是測試".w()
"我是測試".d()
"我是測試".e()
複製代碼

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

  1. Span相關
val str = "我是測試文字"
tvSizeResult.sizeSpan(str, 0..2)
tvSizeResult.sizeSpan(str, 0..2, scale = .7f) //改變scale能夠控制放大或縮小,scale默認是1.5
複製代碼

tvColorResult.colorSpan(str,2..6)
複製代碼

tvStrikethrougthResult.strikeThrougthSpan(str,2..6)
複製代碼

封裝了顏色,大小,背景色,刪除線和點擊等經常使用的文本裝飾,使用對象是TextView和String。

  1. ImageView相關

主要是加載圖片的封裝:json

// 底層是封裝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都不滿意,因而造了一個。 請求:bash

//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 styleapp

"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)
        }
    })
複製代碼

內置了簡潔實用的日誌打印器: ide

其餘設置:工具

// 設置自定義的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。

相關文章
相關標籤/搜索