好用到爆的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。

相关文章
相关标签/搜索