Android KTX
Android KTX 是 Android Jetpack 里一个 Kotlin 的扩展库。它优化了 Kotlin 对 Jetpack 和 Android 原生 API 的调用,借助 Kotlin 语言中扩展函数/属性、lambda 表达式、命名参数、默认参数等一系列的功能,使 Kotlin 在 Android 的开发过程中变得更加简洁、愉快和自然。Android KTX 没有在已有的 Android API 的基础上增加任何新的功能。
你可以在 DevBytes 的系列视频中了解更多关于 Android KTX 的知识。
使用Android KTX
首先,在build.gradle中添加依赖:
repositories {google()}
Android KTX是模块化结构的。每个模块包含着一个或多个包。
要使用一个模块,首先在你的 build.gradle 文件中添加模块对应的 artifact。记得要在 artifact 后面加上版本号。比如,如果你想用 core-ktx 模块的话,完整的依赖应该是这个样子的:
dependencies {implementation 'androidx.core:core-ktx:1.0.0-alpha1'}
模块
Android KTX 是由以下这些 Maven artifact 组成的。点击包名,可以在扩展函数的概述中看到其包含的 API 的文档。
| 模块 (artifact) | 版本 | 包 |
|---|---|---|
| androidx.core:core-ktx | 1.0.0-alpha1 | 详见下面的core模块包列表 |
| androidx.fragment:fragment-ktx | 1.0.0-alpha1 | androidx.fragment.graphics |
| androidx.palette:palette-ktx | 1.0.0-alpha1 | androidx.palette.graphics |
| androidx.sqlite:sqlite-ktx | 1.0.0-alpha1 | androidx.sqlite.db |
| androidx.collection:collection-ktx | 1.0.0-alpha1 | androidx.collection |
| androidx.lifecycle:lifecycle-viewmodel-ktx | 2.0.0-alpha1 | androidx.lifecycle |
| androidx.lifecycle:lifecycle-reactivestreams-ktx | 2.0.0-alpha1 | androidx.lifecycle |
| android.arch.navigation:navigation-common-ktx | 1.0.0-alpha01 | androidx.navigation |
| android.arch.navigation:navigation-fragment-ktx | 1.0.0-alpha01 | androidx.navigation.fragment |
| android.arch.navigation:navigation-runtime-ktx | 1.0.0-alpha01 | androidx.navigation |
| android.arch.navigation:navigation-testing-ktx | 1.0.0-alpha01 | androidx.navigation.testing |
| android.arch.navigation:navigation-ui-ktx | 1.0.0-alpha01 | androidx.navigation.ui |
| android.arch.work:work-runtime-ktx | 1.0.0-alpha01 | androidx.work.ktx |
Core 模块包含以下这些包:
- androidx.core.animation
- androidx.core.content
- androidx.core.graphics
- androidx.core.graphics.drawable
- androidx.core.net
- androidx.core.os
- androidx.core.preference
- androidx.core.text
- androidx.core.transition
- androidx.core.util
- androidx.core.view
- androidx.core.widget
示例
以下的示例展示了一些 Android KTX 的扩展函数。示例是按照模块(artifact)来分组的。如果想要查看完整的扩展函数列表,请参阅模块的文档。
androidx.core:core-ktx
Kotlin:
sharedPreferences.edit().putBoolean("key", value).apply()
Kotlin + Android KTX:
sharedPreferences.edit {putBoolean("key", value)}
Kotlin:
view.viewTreeObserver.addOnPreDrawListener(object : ViewTreeObserver.OnPreDrawListener {override fun onPreDraw(): Boolean {viewTreeObserver.removeOnPreDrawListener(this)actionToBeTriggered()return true}})
Kotlin + Android KTX:
view.doOnPreDraw {actionToBeTriggered()}
androidx.sqlite:sqlite-ktx
Kotlin:
db.beginTransaction()try {// insert datadb.setTransactionSuccessful()} finally {db.endTransaction()}
Kotlin + Android KTX:
db.transaction {// insert data}
androidx.fragment:fragment-ktx
Kotlin:
supportFragmentManager.beginTransaction().replace(R.id.my_fragment_container, myFragment, FRAGMENT_TAG).commitAllowingStateLoss()
Kotlin + Android KTX:
supportFragmentManager.transaction(allowStateLoss = true) {replace(R.id.my_fragment_container, myFragment, FRAGMENT_TAG)}
反馈
Android KTX 现在还处于 Alpha 阶段。我们会在 Jetpack 中持续添加新的 Kotlin 扩展函数。如果你想要报告问题或提出新功能的要求,请在 Android KTX 的问题追踪表里提交新的问题
