Kotlin Android Extensions

Paulo Enoque
Kotlin para Android
4 min readFeb 3, 2018

--

Antes de falar sobre esse incrível plugin vamos primeiro aprender como configurar o seu ambiente para que suporte kotlin.

Configurando o meu ambiente Android para usar Kotlin

Depois de 3 artigos introdutórios (Introdução a kotlin, Sintaxe básica do Kotlin e Detalhes avançados sobre kotlin) na serie Kotlin para Android chegou a hora de colocar a mão na massa na integração com o android.

Garantir que tem instalado o plugin do kotlin

A partir da versão do android studio 3+, o plugin já vem instalado por defeito então nesses casos não precisa se preocupar, mas se tiver uma versão do android studio inferior a essa pode seguir os seguintes passos:

File > settings >plugins

Procure por kotlin como mostra a imagem acima e clique em install se não estiver instalado, o botão install no meu caso não aparece uma vez que eu estou a usar a versão 3.0 do android studio e ele vem instalado por defeito.

Configurando o build.gradle para usar kotlin

Clique em: Tool > Kotlin > Configure Kotlin in Project

A seguir selecione Android with Gradle, depois disso vai aparecer uma pequena janela, selecione a versão do kotlin que deseja usar e clique em ok.

O que na verdade acontece por baixo dos panos é o seguinte:

No ficheiro build.gradle do projecto fica dessa forma:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = ‘1.2.21’

repositories {
google()
jcenter()
}
dependencies {
classpath ‘com.android.tools.build:gradle:3.0.0’
classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version”

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
google()
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

As linhas em negrito são as que foram adicionadas para que a linguagem kotlin seja suportada

No ficheiro build.gradle do modulo app fica dessa forma:

apply plugin: 'com.android.application'apply plugin: 'kotlin-android'android {    compileSdkVersion 26    defaultConfig {        applicationId "mz.co.ability.kotlin_with_android"        minSdkVersion 17        targetSdkVersion 26        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation 'com.android.support:appcompat-v7:26.0.0-beta1'    implementation 'com.android.support.constraint:constraint-layout:1.0.2'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:0.5'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"}repositories {    mavenCentral()}

Adeus findViewById

Todo programador android com certeza sabe o quanto é doloroso o código mais repetitivo da plataforma, os findViewByIds, kotlin trás para esse problema uma solução bem elegante, o kotlin android extension.

Kotlin android Extension é um plugin de compilação que permite aceder as views do seu XML directamente em activities, fragments e views usando o que eles referem como propriedades sintéticas. Para usá-lo, verifique se o plugin está activado no arquivo build.gradle do seu módulo:

apply plugin: ‘kotlin-android-extensions’

basicamente tudo o que esta ai em cima quer dizer que ao aplicar esse plugin você pode chamar as views em qualquer lugar simplesmente pelo seu ID, sem a necessidade de instanciar, ou seja, você não precisa mais ver o famoso findViewById no seu código, por exemplo no XML que se segue:

<FrameLayout
xmlns:android=”http://schemas.android.com/apk/res/android"
android:layout_width=”match_parent”
android:layout_height=”match_parent”
>

<TextView
android:id=”@+id/nome”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_gravity=”center”
/>

</FrameLayout>

A forma comum de referenciar esse TextView na sua SampleActivity seria:

class SampleActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sample)

val nome = findViewById<TextView>(R.id.nome)
nome.text = “Hello World”
}

}

Na verdade, essa abordagem é relativamente melhor que a de java, uma vez que contamos com algumas facilidade do kotlin como por exemplo as inferências que o compilador faz, mas com android extensions o código fica muito melhor:

class SampleActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sample)

nome.text = “Hello World”
}

}

É só isso ???? Sim sim, é só isso, você simplesmente precisa chamar a view usando o mesmo ID que colocou no XML e já está

Chegou o fim de mais um artigo, o nosso próximo artigo será a criação de uma calculadora simples. Do zero,, a fim de consolidar todos os conhecimentos que colhemos ate hoje.

Qualquer coisa pode me contactar através do seguinte email: pauloenoque2014@gmail.com

--

--