Criando sua primeira aplicação Android com Kotlin

Recentemente a Google anunciou o suporte para criação de Apps Android utilizando o Kotlin que, consequente, causou um grande impacto na comunidade Android. Nesse meio tempo, diversas dúvidas foram surgindo, e dentre elas, uma bem comum é:

“Como posso criar minhas Apps utilizando o Kotlin?”

Pensando justamente nesse cenário, veremos como é possível desenvolver Apps com Kotlin e alguma das novidades que acabam mudando em relação ao que fazíamos apenas com Java. Vamos lá?

Nesse artigo, irei considerar que você já tenha tido o mínimo de contato com a linguagem Kotlin.
Caso não tenha tido nenhum contato, aproveite para dar uma olhada neste artigo que ensina como criar o seu primeiro código em Kotlin.

Preparando o ambiente

Como é de se esperar, foi disponibilizado o suporte da linguagem Kotlin direto no Android Studio, ou seja, a partir da versão 3.0 (que atualmente se encontra na preview Beta) já temos o plugin de suporte ao Kotlin instalado.

Portanto, como ponto de partida, vamos criar o projeto com o suporte ao Kotlin utilizando o AS 3.+.

Se preferir realizar a configuração no AS release atual (2.3.3), é possível instalar o plugin do Kotlin manualmente e configurar um projeto já criado com o suporte Java sem nenhum problema.

Criando o projeto no Android Studio 3.+

Com o AS aberto, crie um novo projeto:

Launcher para criar projetos Android no Android Studio.

Observe que agora aparece o item no checklist para criar um projeto com suporte ao Kotlin. Deixaremos o suporte ao Kotlin marcado e continuaremos com o setup.

Para este exemplo, iremos criar uma App similar ao Google Keep, é exatamente por isso do nome Ceep. 😃

Em seguida, precisamos apenas indicar o SDK que daremos suporte assim como fazíamos em um projeto Android com Java:

Indicando o SDK alvo para dar suporte

Então podemos criar uma Empty Activity:

Catálogo de activities de exemplo

Por fim, daremos o nome de NoteListActivity, justamente por que o nosso objetivo será criar uma lista com as notas:

Adicionando o nome da activity que será

Agora é só clicarmos em Finish e, depois do Gradle processar, o AS vai abrir o nosso projeto com a nossa Activity pronta!

Observações: Caso tenha aparecido um problema de build indicando a mensagem invalid dimen no arquivo values.xml, não se preocupe!
Basta apenas desabilitar o aapt2 adicionando o seguinte script android.enableAapt2=false no arquivo gradle.properties.

Entendo o primeiro código criado

Vamos dar uma olhada como ficou a nossa Activity:

Código padrão quando criamos uma activity pelo AS

Repara que agora, temos algumas mudanças na implementação de uma Activity em relação à syntax:

  • A extensão para a AppCompatActivity não é mais feita com a keyword extends, ou seja, basta apenas usar o :.
  • Estamos utilizando a keyword override ao invés da annotation @Override para sobrescrever um método, no caso do Kotlin, uma função.
  • O nosso bundle está concatenado com ? (Um dos principais pontos do Kotlin que não veremos neste post, mas deixo a referência sobre o assunto).

Se compararmos esse código em Kotlin com o que fazemos em Java, percebemos que não temos muitas mudanças… Sendo assim, vamos avançar um pouco mais, isto é, o nosso próximo passo será uma tarefa bem comum no Android, que é justamente a busca de uma view dentro do código.

Buscando views com o Kotlin

Como sabemos, a forma como buscamos uma view (desconsiderando bibliotecas como o ButterKnife ou o Data Binding da Google) é por meio dos famosos findViewById, como por exemplo, para buscarmos o TextView do nosso layout activity_note_list:

Faríamos da seguinte maneira:

val mensagem = findViewById<TextView>(R.id.note_list_textview)
É válido notar que no Kotlin o findViewById da suporte ao famoso generics, logo, não é mais necessário fazer o cast! 😄

Então basta apenas a gente inserir o valor na property text do objeto mensagem:

val mensagem = findViewById<TextView>(R.id.note_list_textview)
mensagem.text = "Bem vindo ao Ceep"

Que temos o seguinte resultado:

Tela inicial do Ceep apenas com um TextView

Nesse instante percebemos que existem algumas mudanças entre o código Kotlin e Java, entretanto, olhando por cima, não temos grandes diferenças…

“Então o que o Kotlin tem de diferente que vale a pena?”

Felizmente, a equipe da JetBrains também desenvolveu um plugin conhecido como Kotlin Android Extension, com o objetivo de facilitar a nossa vida como desenvolvedores Android quando utilizamos o Kotlin.

Conhecendo o Kotlin Android Extensions

A partir desse plugin, temos a capacidade de buscar as nossas views de uma maneira mais objetiva, por exemplo, para buscar aquele nosso TextView faríamos da seguinte maneira:

Repara que agora estamos buscando a view diretamente pelo id do TextView, logo, não precisamos mais do findViewById, como também, podemos simplesmente usar o TextView diretamente pelo seu id:

note_list_textview.text = "Bem vindo ao Ceep"

Nesse trecho de código temos o mesmo resultado conforme fizemos anteriormente, porém, de uma forma bem mais resumida, concorda? Mas, esse tipo de solução “mágica” nos deixa na seguinte situação:

“Como isso foi possível?”

Entendendo o Synthetic do Kotlin Android Extensions

Quando buscamos uma view dessa maneira, perceba que aparece o seguinte import:

import kotlinx.android.synthetic.main.activity_note_list.*

Esse import trata-se de uma feature conhecida como Synthetic. A partir dele, todos os componentes de uma view (no caso a do layout activity_note_list) se tornam propriedades da Activity, é justamente por esse motivo que conseguimos acessar uma view pelo seu id diretamente.

É válido lembrar que o plugin do Kotlin Android Extensions pode não vim habilitado por padrão caso não tenha criado o projeto via AS 3.+. Mas não se preocupe! É possível adicioná-lo.

Para isso, é preciso incluí-lo no arquivo build.gradle do módulo app a partir do script apply plugin: 'kotlin-android-extension':

Arquivo de build do módulo app

Para saber mais

O Synthetic não é exclusivo para Activities, isto é, temos a capacidade de utilizá-lo também em outras entidades que tenham um objetivo do tipo View disponível, como é o caso de Fragments, Adapters, Dialogs entre outros…

Para isso, basta apenas adicionar o trecho view.* no import:

import kotlinx.android.synthetic.main.activity_note_list.view.*

Então, dessa forma, temos acesso aos componentes desse layout por meio do objeto do tipo View.

Código fonte

Caso queira verificar o código fonte do projeto Android com Kotlin, deixo aqui o repositório do mesmo.

Conclusão

Neste aritgo vimos como é possível criar um projeto Android com o suporte para a linguagem Kotlin e criamos nossa primeira Activity.

Também vimos como o Kotlin nos ajuda com o Synthetic quando precisamos buscar views na Activity.

Claro, ainda é só o começo, ou seja, o nosso próximo passo é verificar como podemos implementar uma lista utilizando o RecyclerView.

O que achou do Kotlin no Android? Aproveite e deixe o seu comentário!

A single golf clap? Or a long standing ovation?

By clapping more or less, you can signal to us which stories really stand out.