Register now for Android Dev Summit 2019!

Android KTX

Android KTX   Parte de Android Jetpack

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'
    }
    

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. Ten en cuenta que los números de versión pueden cambiar. Para asegurarte de estar usando la versión más reciente, consulta el repositorio de Maven de Google.

Módulo (artefacto) Versión Paquete
androidx.core:core-ktx 1.0.0 Consulta todos los paquetes principales que aparecen más abajo.
androidx.fragment:fragment-ktx 1.0.0 androidx.fragment.app
androidx.palette:palette-ktx 1.0.0 androidx.palette.graphics
androidx.sqlite:sqlite-ktx 2.0.0 androidx.sqlite.db
androidx.collection:collection-ktx 1.0.0 androidx.collection
androidx.lifecycle:lifecycle-viewmodel-ktx 2.0.0 androidx.lifecycle
androidx.lifecycle:lifecycle-reactivestreams-ktx 2.0.0 androidx.lifecycle
android.arch.navigation:navigation-common-ktx 1.0.0-alpha06 androidx.navigation
android.arch.navigation:navigation-fragment-ktx 1.0.0-alpha06 androidx.navigation.fragment
android.arch.navigation:navigation-runtime-ktx 1.0.0-alpha06 androidx.navigation
android.arch.navigation:navigation-testing-ktx 1.0.0-alpha06 androidx.navigation.testing
android.arch.navigation:navigation-ui-ktx 1.0.0-alpha06 androidx.navigation.ui
android.arch.work:work-runtime-ktx 1.0.0-alpha10 androidx.work.ktx

Los módulos principales incluyen los siguientes paquetes:

Ejemplos

Android KTX se utiliza en la app de demostración de Sunflower.

En los ejemplos que aparecen a continuación, se demuestran algunas de las funciones de la extensión de Android KTX. Estas 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

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.