Save the date! Android Dev Summit is coming to Sunnyvale, CA on Oct 23-24, 2019.

-

Android KTX

Android KTX es un conjunto de extensiones para Kotlin que pertenece a la familia de Android Jetpack. Optimiza las API de la plataforma de Jetpack y Android para que Kotlin pueda usarlas. El propósito de Android KTX es hacer que el desarrollo de Android con Kotlin sea más conciso, idiomático y agradable aprovechando las funciones del lenguaje Kotlin, como las propiedades y funciones de las extensiones, las lambdas, los parámetros con nombres y los valores predeterminados de parámetros. Android KTX no agrega ninguna función nueva a las API de Android existentes.

Para obtener más información sobre Android KTX, consulta nuestro video de DevBytes.

Cómo comenzar

Para comenzar a usar Android KTX, agrega lo siguiente al archivo build.gradle de tu proyecto:

repositories {
    google()
}

Android KTX se organiza en módulos que contienen uno o varios paquetes.

Cuando uses un módulo, incluye una dependencia para cada artefacto Android KTX en el archivo build.gradle de tu app. Recuerda que debes adjuntar la versión al artefacto. Por ejemplo, si usas un módulo core-ktx, la dependencia desarrollada debería verse de la siguiente manera:

dependencies {
    implementation 'androidx.core:core-ktx:1.0.0-alpha1'
}

Módulos

Android KTX está compuesto por los siguientes artefactos de Maven. Para ver la documentación de referencia de la API, haz clic en el nombre del paquete específico y consulta el resumen de las funciones de la extensión.

Módulo (artefacto) Versión Paquete
androidx.core:core-ktx 1.0.0-alpha1 Consulta todos los paquetes principales que aparecen más abajo.
androidx.fragment:fragment-ktx 1.0.0-alpha1 androidx.fragment.app
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

Los módulos principales incluyen los siguientes paquetes:

Ejemplos

Android KTX es un componente de la fundación Android Jetpack. Mira cómo funciona en la app de demostración de Sunflower.

Los ejemplos que aparecen a continuación demuestran algunas de las funciones de la extensión Android KTX, que se agrupan por nombre de módulo (artefacto). Consulta la documentación de referencia del paquete para ver la lista completa de funciones.

androidx.core:core-ktx

Kotlin

sharedPreferences.edit()
    .putBoolean("key", value)
    .apply()

Kotlin y 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 y Android KTX

view.doOnPreDraw {
     actionToBeTriggered()
}

androidx.sqlite:sqlite-ktx

Kotlin

db.beginTransaction()
try {
    // insert data
    db.setTransactionSuccessful()
} finally {
    db.endTransaction()
}

Kotlin y Android KTX

db.transaction {
    // insert data
}

androidx.fragment:fragment-ktx

Kotlin

supportFragmentManager
    .beginTransaction()
    .replace(R.id.my_fragment_container, myFragment, FRAGMENT_TAG)
    .commitAllowingStateLoss()

Kotlin y Android KTX

supportFragmentManager.transaction(allowStateLoss = true) {
            replace(R.id.my_fragment_container, myFragment, FRAGMENT_TAG)
        }

Comentarios

Por el momento, Android KTX está en etapa Alfa. Seguiremos agregando nuevas extensiones de Kotlin en Jetpack y nos encantaría recibir tus comentarios. Si quieres informar un problema o sugerir una función, hazlo en el espacio de seguimiento de problemas de Android KTX.