android-ktx是谷歌刚刚开源的使用kotlin开发android的扩展包,它的目的是为了让使用kotlin开发android更简洁。目前只是发布的预览版本。可以体验一下,预览版说明以后的api可能会稍微变动变。
android-ktx 目前支持的组件有 view ,SharedPreferences ,Canvas , Animator等
首先使用android-ktx 需要在gradle中引入包
implementation 'androidx.core:core-ktx:0.1'
使用kotlin把一个字符串转换成Uri可以这么写
val uri = Uri.parse(myUriString)
使用android-ktx 可以简化为
val uri = myUriString.toUri()
使用kotlin编写偏好设置SharedPreferences
sharedPreferences.edit()
.putBoolean("key", value)
.apply()
使用android-ktx 可以直接使用Lambda表达式简化
sharedPreferences.edit {
putBoolean("key", value)
}
如果我们想使用绘图api将两条路径平移100像素 使用kotlin
val pathDifference = Path(myPath1).apply {
op(myPath2, Path.Op.DIFFERENCE)
}
canvas.apply {
val checkpoint = save()
translate(0F, 100F)
drawPath(pathDifference, myPaint)
restoreToCount(checkpoint)
}
使用android-ktx简单多
val pathDifference = myPath1 - myPath2
canvas.withTranslation(y = 100F) {
drawPath(pathDifference, myPaint)
}
如果我们想在绘制之前做些事情使用kotlin是
//绘制前的监听
view.viewTreeObserver.addOnPreDrawListener(
object : ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
viewTreeObserver.removeOnPreDrawListener(this)
actionToBeTriggered()
return true
}
})
使用android-ktx只需要一句话
view.doOnPreDraw {
actionToBeTriggered()
}
具体文档可以查看 https://android.github.io/android-ktx/core-ktx/
比如当我们使用android-ktx 写动画的时候 可以直接监听它的回调
animator.addListener { handleAnimation(it) }
也可以监听动画的各种周期函数
animator.addListener(
onEnd = {},
onStart = {},
onCancel = {},
onRepeat = {}
)
在比如让一个文本加粗
val builder = SpannableStringBuilder(urlString)
.bold { append("hi there") }
让一个bitmap对象转换成drawable 对象更加容易
var birmap = BitmapFactory.decodeResource(resources,R.drawable.ic_launcher_background)
val toDrawable = birmap.toDrawable(resources)
还有很多,都可以在文档中看到。不过现在是预览版,以后稳定版的api可能有所变动。
Android KTX 的扩展包名称都以 androidx 开头,同时,今后 Android Support Library 包也将采用该新前缀。谷歌希望通过区分命名 android.* 和 androidx.*,能帮助开发者更清楚地辨识哪些 API 是和平台绑定的,哪些又是为稳定版支持库开发的,帮助开发者为不同版本的 Android 进行 App 开发。
未来谷歌计划将 Android KTX 作为 Android Support Library 进行发布。