ktolin开发android的扩展包android-ktx
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 - myPath2canvas.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 进行发布。
更多相关文章
- Android(安卓)-- Vold机制简要分析
- Android(安卓)Asynchronous Http Client-Android异步网络请求客
- Android百度地图Poi检索开发总结
- Android(安卓)dumpsys工具分析
- Android网络请求框架AsyncHttpClient详解(整理)
- Android(安卓)Hook Java
- Android(安卓)okHttp 实战(三):okHttp网络请求之Json解析
- Android开发指导文档(译)--content provider(一)
- Android(安卓)retrofit2+OkHttp3的初尝试