Kotlin Android Extensions
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