KotlinKtx
KotlinKtx copied to clipboard
常用库的拓展函数
KotlinKtx
开发常用的拓展函数,加入协程拓展,可实现协程异步同步快速开发(该思想来自 Rxhttp 一个非常好的网络请求框架)
JCenter
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
androidx
implementation 'com.github.Alexxiaopang:KotlinKtx:1.0.5'
1.06版本修改
去除Ktx.run默认使用IO线程,对前面项目影响太大,加入方法变量,可切换线程 Ktx.run(Dispatchers.IO)
//下面维持不变
Ktx.runMain主线程运行
Ktx.runDefault默认现在运行
1.05版本修改
Ktx.run默认使用IO线程
新增 Ktx.runMain主线程运行
Ktx.runDefault默认现在运行
先说协程
我们经常使用协程的时候,需要同步或者异步操作,还要判断错误或者返回不同的数值,这需要使用该框架可以直接使用,可对数组等进行操作,下面是例子,可自行食用(注意,建议使用rxLifeScope.launch运行携程块,可在fragment\activity\viewmodel 销毁时候自动注销,如果不是ac等,可以使用RxLifeScope.launch返回JOB,JOB.cacel())
//不监听
rxLifeScope.launch{
//同步
val test1= Ktx.run {
arrayListOf("444", "5555")
}.startDelay(1300).sort()
//异步
val test2 = Ktx.run {
5 / 0
}.delay(1500).async(this)//可延时,
}
//监听错误
rxLifeScope.launch({
val test1 = Ktx.run {
arrayListOf("444", "5555")
}.startDelay(1300).sort()//数组等可操作
val test2 = Ktx.run {
5 / 0
}.delay(1500)//可延时,
Log.e("TAG", "onCreate:${test1.tryAwait()} ${test2.tryAwait()} ")
}, {
Log.e("TAG", "onCreate error:${it.message}} ")
}, {
Log.e("TAG", "开始")
}, {
Log.e("TAG", "结束")
})
ktx包含内容(列举大概,后续加上)
dp.kt Float,Int的dp,sp相关扩展方法
Int.dp
Int.sp
Float.dp
Float.sp
Int.dp2px
Float.dp2px
Int.sp2px
Float.sp2px
Int.px2dp
Float.px2dp
Int.px2sp
Float.px2sp
Res.kt 获取android字符串,drawable等资源
context.getStringArray()
context.getDrawable2()
context.getColor2()
context.getDrawableArray()
context.getDrawableIdArray()
...
Spanner SpannableString操作工具类
bold
italic
normal
boldItalic
font
strikethrough
underline
backgroundColor
backgroundColorRes
textColorRes
textColor
pressedBackgroundColor
pressedBackgroundRes
onClick
onLongClick
Screen.kt 获取屏幕尺寸,判断横竖屏,切换横竖屏等方法
context.getDisplayMetrics()
context.isLandscape()
context.setLandscape()
context.getScreenWidth()
context.getScreenHeight()
Clipboard.kt 剪贴板操作常用方法
val clipboardManager = getClipboardManager()
clibboardManager.getText2()
clibboardManager.setText2()
clibboardManager.getUri()
clibboardManager.setUri()
clibboardManager.getIntent()
clibboardManager.setIntent()
network.kt
getConnectivityManager
isNetworkConnected
isWifiConnected
isMobileDataConnected