寫在前面
首先,這是一個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和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)
}
})複製程式碼
內建了簡潔實用的日誌列印器:
其他設定:
// 設定自定義的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。