Android KTX

Android KTX   Parte do Android Jetpack.

O Android KTX é um conjunto de extensões Kotlin que faz parte da família do Android Jetpack. Ele otimiza as APIs do Jetpack e da plataforma Android para uso do Kotlin. O objetivo do Android KTX é tornar o desenvolvimento de Android com o Kotlin mais conciso, agradável e idiomático, aproveitando recursos da linguagem Kotlin, como funções/propriedades de extensão, lambdas, parâmetros nomeados e valores padrão de parâmetro. O Android KTX não adiciona novos recursos às APIs do Android já existentes.

Para saber mais sobre o Android KTX, veja nosso vídeo do DevBytes.

Primeiros passos

Para começar a usar o Android KTX, adicione o seguinte ao arquivo build.gradle do seu projeto:

repositories {
        google()
    }
    

O Android KTX é organizado em módulos. Cada módulo contém um ou mais pacotes.

Ao usar um módulo, inclua uma dependência para cada artefato do Android KTX no arquivo build.gradle do seu app. Lembre-se de anexar a versão ao artefato. Por exemplo, se você usar o módulo core-ktx, a dependência formada por completo ficará da seguinte forma:

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

Módulos

O Android KTX é composto por estes artefatos do Maven. Para ver a documentação de referência da API, clique no nome do pacote específico e consulte o resumo de funções de extensão. Os números de versão podem mudar. Para ter certeza de que você está usando a versão mais recente disponível, verifique o Repositório Maven do Google.

Módulo (artefato) Versão Pacote
androidx.core:core-ktx 1.0.0 Veja todos os pacotes principais abaixo.
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

O módulo principal inclui os seguintes pacotes:

Exemplos

O Android KTX é usado no app de demonstração Sunflower.

Os exemplos abaixo demonstram algumas das funções de extensão do Android KTX. Elas são agrupadas por nome de módulo (artefato). Veja a documentação de referência completa do pacote para encontrar a lista integral de funções de extensão.

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 data
        db.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)
            }
    

Feedback

Continuaremos adicionando novas extensões Kotlin a todo o Jetpack, e seu feedback será muito bem-vindo. Para informar um problema ou sugerir um recurso, registre um novo no rastreador de problemas do Android KTX.