寫在前面
首先,這是一個Kotlin類庫,如果你的專案是JAVA寫的,那就暫時幫不上你的忙了。
其次,這個可不是官方那個android-ktx
。
隨著專案越來越多,我們必然抽取大量的工具類和公共模組。Java的工具類看起來已經很簡單了,但是Kotlin的擴充套件又讓其簡潔性和易用性上了一個等級,而且還有點AOP的功能。這裡我不再多說Kotlin的好處了,我是一個Kotlin的愛好者和推廣者,我們公司的後臺,安卓和前端核心程式碼全線切為Kotlin了,開發效率大大提升;如果你想快樂的寫程式碼,那就用Kotlin吧!
快速嚐鮮
這個類庫對常用的使用場景進行了封裝,包括Http,目標是替代你專案中的所有工具類。來看看幾個例子吧:
- View點選
view.click {
toast("do something")
}
複製程式碼
除了寫法簡潔一點,它內部還實現了事件的節流。限制使用者在350ms內只能點選一次,相信你遇到過使用者快速點選按鈕開啟多個Activity的場景。
- 字串的雜湊
"123456".md5()
"123456".sha1()
"123456".sha1Hmac(salt) // 隨機數增強的雜湊
//...
複製程式碼
專案中經常遇到對字串進行hash,類庫提供了常見的md5, sha1, sha256, 隨機數增加雜湊,AES,DES等演算法的封裝。
- 列印日誌
"我是測試".v()
"我是測試".i()
"我是測試".w()
"我是測試".d()
"我是測試".e()
複製程式碼
日誌的tag和開關都是可配置的。
- 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。
- 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)
複製程式碼
- 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)
}
})
複製程式碼
內建了簡潔實用的日誌列印器:
其他設定:
// 設定自定義的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。