Este codelab faz parte do curso Conceitos básicos do Kotlin para Android. Você aproveitará mais o curso se fizer os codelabs em sequência. Todos os codelabs do curso estão listados na página de destino dos codelabs do curso Conceitos básicos do Kotlin para Android.
O que você já precisa saber
- Como criar um app Android básico em Kotlin.
- Executar um app Android em um emulador ou dispositivo.
- Princípios básicos de
LinearLayout
. - Criação de um app simples que usa
LinearLayout
e umTextView
O que você vai aprender
- Como trabalhar com
View
eViewGroup
. - Como organizar visualizações em um
Activity
usandoLinearLayout.
. - Como usar
ScrollView
para exibir o conteúdo rolável. - Como mudar a visibilidade de uma
View
. - Como criar e usar recursos de string e dimensão.
- Como criar um layout linear usando o Layout Editor do Android Studio.
Atividades do laboratório
- Crie o app Sobre mim.
- Adicione um
TextView
ao layout para exibir seu nome. - Adicionar um
ImageView.
- Adicione um
ScrollView
para exibir um texto rolável.
No app Sobre mim, é possível exibir fatos interessantes sobre você ou personalizá-lo para um amigo, familiar ou animal de estimação. Esse app exibe um nome, um botão CONCLUÍDO, uma imagem com estrela e um texto rolável.
Nesta tarefa, você criará o projeto "AboutMe" do Android Studio.
- Abra o Android Studio, caso ele ainda não esteja aberto.
- Se um projeto já estiver aberto no Android Studio, selecione File > New > New Project.
- Se um projeto ainda não estiver aberto, selecione + Iniciar um novo projeto do Android Studio na caixa de diálogo Welcome to Android Studio .
- Na caixa de diálogo Create New Project, na guia Phone and Tablet, selecione o modelo Empty Activity. Clique em Próxima.
- Na próxima caixa de diálogo Create New Project, defina os parâmetros a seguir e clique em Finish.
Atributo | Valor |
Nome do aplicativo | Sobre mim |
Nome da empresa no Android |
|
Salvar local | Não mude o local padrão ou mude para seu diretório preferido. |
Idioma | Kotlin |
Nível mínimo da API | API 19: Android 4.4 (KitKat) |
Este projeto será compatível com apps instantâneos | Deixe essa caixa desmarcada. |
Usar artefatos do AndroidX | Marque essa caixa de seleção. |
O Android Studio levará alguns instantes para gerar os arquivos do projeto.
- Execute o app. Você verá a string "Hello World" na tela em branco.
O modelo Empty Activity cria uma única atividade vazia, Mainactivity.kt
. O modelo também cria um arquivo de layout chamado activity_main.xml
. O arquivo de layout tem ConstraintLayout
como a raiz ViewGroup
e tem uma única TextView
como conteúdo.
Nesta tarefa, você mudará a raiz ViewGroup
gerada para LinearLayout
. Também é possível organizar os elementos da IU verticalmente.
Ver grupos
Uma ViewGroup
é uma visualização que pode conter visualizações filhas, que são outras visualizações e grupos de visualizações. As visualizações que compõem um layout são organizadas como uma hierarquia de visualizações com um grupo de visualizações como raiz.
Em um grupo de visualizações LinearLayout
, os elementos da IU são organizados horizontal ou verticalmente.
Mude o layout raiz para usar um grupo de visualizações LinearLayout
:
- Selecione o painel Project > Android. Na pasta
app/res/layout
, abra o arquivoactivity_main.xml
. - Selecione a guia Text e altere o grupo de visualização raiz de
ConstraintLayout
paraLinearLayout
. - Remova
TextView
. No elementoLinearLayout
, adicione o atributoandroid:orientation
e defina-o comovertical
.
Antes:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Depois:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
</LinearLayout>
O Layout Editor é uma ferramenta de design visual do Android Studio. Em vez de escrever código XML manualmente para criar o layout do app, você pode usar o Layout Editor para arrastar elementos da IU para o editor de design.
Para ver o Layout Editor, clique na guia Design. A captura de tela abaixo mostra as partes do Layout Editor.
Editor de design: exibe uma representação visual do layout da tela na visualização de design, em blueprints ou em ambas. O Design Editor é a parte principal do Layout Editor.
Barra de ferramentas: fornece botões para configurar a aparência do layout no editor de design e para alterar alguns atributos do layout. Por exemplo, para mudar a exibição do layout no editor de design, use o menu suspenso Select Design Surface :
- Use Design para uma visualização real do layout.
- Use o Blueprint para ver somente os contornos de cada visualização.
- Use Design + Blueprint para ver as duas telas lado a lado.
Palette: fornece uma lista de visualizações e visualizações em grupo que podem ser arrastadas para o layout ou ao painel Component Tree.
Atributos: mostra os atributos da visualização ou do grupo de visualizações selecionado no momento. Para alternar entre uma lista completa de atributos e atributos usados com frequência, use o ícone na parte superior do painel.
Árvore de componentes: exibe a hierarquia de layouts como uma árvore de visualizações. A Component Tree é útil quando há visualizações pequenas, ocultas ou sobrepostas que não poderiam ser selecionadas de outra forma no editor de design.
Etapa 1: adicionar uma TextView
- Abra o arquivo
res/layout/activity_main.xml
, se ele ainda não estiver aberto. - Alterne para a guia Text e inspecione o código. O código tem um
LinearLayout
como grupo de visualização raiz. Grupos de visualizações são visualizações que contêm outras visualizações.
OLinearLayout
tem os atributos obrigatórioslayout_height
,layout_width
eorientation
, que sãovertical
por padrão. - Alterne para a guia Design para abrir o Layout Editor.
- Arraste uma visualização de texto do painel Palette para o editor de design.
- Observe o painel Component Tree. A nova visualização de texto é posicionada como um elemento filho do grupo de visualizações pai, que é o
LinearLayout
. - Abra o painel Attributes, se ele ainda não estiver aberto. Para abrir o painel, clique duas vezes no
TextView
recém-adicionado no Design Editor. - Defina os seguintes atributos no painel Attributes:
Atributo | Valor |
ID |
|
texto | Defina seu nome. Um dos campos text mostra um ícone de chave inglesa para indicar que ele é do namespace |
textAppearance > textSize |
|
textAppearance > textColor |
|
textAppearance > textAlignment | Centro |
Etapa 2: criar um recurso de string
Em Component Tree, ao lado de TextView,
, você verá um ícone de aviso . Para ver o texto de aviso, clique no ícone ou na direção dele, conforme a captura de tela abaixo.
Para resolver o problema, crie um recurso de string:
- No painel Attributes, clique nos três pontos ao lado do atributo text que você definiu no seu nome. O editor de recursos será aberto.
- Na caixa de diálogo Resources, selecione Add new resource > New string Value.
- Na caixa de diálogo New String Value Resource, defina o campo Resource name como
name
. Defina o campo Valor do recurso como seu nome. Clique em OK. Observe que o aviso desaparece. - Abra o arquivo
res/values/strings.xml
e procure o recurso de string recém-criado chamadoname
.
<string name="name">Aleks Haecky</string>
Etapa 3: criar um recurso de dimensão
Você acabou de adicionar um recurso usando o Editor de recursos. Você também pode extrair recursos no editor de código XML para criar novos recursos:
- No arquivo
activity_main.xml
, alterne para a guia Text. - Na linha
textSize
, clique no número (20sp
) e digiteAlt+Enter
(Option+Enter
no Mac). Selecione Extrair recurso de dimensão no menu pop-up. - Na caixa de diálogo Extract Resource, insira
text_size
no campo Resource name. Clique em OK. - Abra o arquivo
res/values/dimens.xml
para ver o seguinte código gerado:
<dimen name="text_size">20sp</dimen>
- Abra o arquivo
MainActivity.kt
e procure o seguinte código no final da funçãoonCreate()
:
setContentView(R.layout.activity_main)
A função setContentView()
conecta o arquivo de layout ao Activity
. O arquivo de recurso de layout especificado é R.layout.activity_main
:
R
é uma referência ao recurso. É uma classe gerada automaticamente com definições de todos os recursos do app.layout.activity_main
indica que o recurso é um layout chamadoactivity_main
.
- Execute o app. Uma
TextView
com seu nome será exibida.
Quando você olhar a tela do app, seu nome será exibido na parte superior da tela. Portanto, agora você adicionará padding e uma margem.
Padding x margem
O preenchimento é o espaço dentro dos limites de uma visualização ou um elemento. É o espaço entre as bordas da visualização e o conteúdo dela, conforme mostrado na figura abaixo.
O tamanho de uma visualização inclui o preenchimento. Veja a seguir os atributos de padding usados com frequência:
android:padding
especifica o padding de todas as quatro bordas da visualização.android:paddingTop
especifica o padding da borda superior.android:paddingBottom
especifica o padding da borda inferior.android:paddingStart
especifica o preenchimento da borda "inicial" da visualização.android:paddingEnd
especifica o preenchimento da borda "final" da visualização.android:paddingLeft
especifica o padding da borda esquerda.android:paddingRight
especifica o padding da borda direita.
Margem é o espaço adicionado fora das bordas da visualização. É o espaço entre a borda da visualização e o elemento pai, conforme mostrado na figura acima. Veja a seguir os atributos de margem usados com frequência:
android:layout_margin
especifica uma margem para os quatro lados da visualização.android:layout_marginBottom
especifica o espaço fora da parte inferior dessa visualização.android:layout_marginStart
especifica o espaço fora do lado "inicial&;da visualização.android:layout_marginEnd
especifica o espaço no lado final dessa visualização.android:layout_marginLeft
especifica o espaço no lado esquerdo dessa visualização.android:layout_marginRight
especifica o espaço no lado direito dessa visualização.
Etapa 1: adicionar padding
Para colocar espaço entre seu nome e a borda superior da visualização de texto do name
, adicione o padding superior.
- Abra o arquivo
activity_main.xml
na guia Design. - Na Component Tree ou no editor de design, clique na visualização de texto para abrir o painel Attributes.
- Na parte superior do painel Attributes, clique no ícone de seta dupla para ver todos os atributos disponíveis.
- Pesquise Padding, expanda-o e clique nos três pontos ... ao lado do atributo top. A caixa de diálogo Resources será exibida.
- Na caixa de diálogo Resources, selecione Add new resource > New dimen Value.
- Na caixa de diálogo New Dimension Value Resource, crie um novo recurso
dimen
chamadosmall_padding
com um valor de8dp
.
A abreviação dp significa density-independent. Se você quiser que um elemento da IU tenha o mesmo tamanho em telas com densidades diferentes, use o dp como sua unidade de medida. No entanto, ao especificar o tamanho do texto, sempre use sp (pixels escalonáveis). - Clique em OK.
Etapa 2: adicionar uma margem
Para mover a visualização de texto name
da borda do elemento pai, adicione uma margem superior.
- No painel Attributes, pesquise "margin" para encontrar Layout_Margin.
- Expanda Layout_Margin e clique nos três pontos ... ao lado do atributo top.
- Crie um novo recurso
dimen
chamadolayout_margin
e torne-o16dp
. Clique em OK.
Etapa 3: adicionar uma fonte
Para melhorar a visualização de texto do name
, use a fonte Android Roboto. Essa fonte faz parte da Biblioteca de Suporte, e você a adiciona como um recurso.
- No painel Attributes, pesquise "quoquo;fontFamily".
- No campo fontFamily, clique na seta suspensa , role até a parte inferior da lista e selecione More Fonts.
- Na caixa de diálogo Resources, pesquise
rob
e escolha Roboto. Na lista Visualização, selecione Normal. - Selecione o botão de opção Add font to project.
- Clique em OK.
A pasta res
agora tem uma pasta font
que contém um arquivo de fonte roboto.ttf
. O atributo @font/roboto
é adicionado ao seu TextView
.
Etapa 4: extrair o estilo
Um estilo é um conjunto de atributos que especificam a aparência e o formato de uma visualização. Os estilos podem incluir cor e tamanho da fonte, cor do plano de fundo, padding, margem e outros atributos comuns.
Você pode extrair a formatação da visualização de texto do name
para um estilo e reutilizá-lo em quantas visualizações quiser no seu app. A reutilização de um estilo fará com que o app tenha uma aparência consistente quando houver várias visualizações. O uso de estilos também permite manter esses atributos comuns em um único local.
- Clique com o botão direito do mouse em
TextView
em Component Tree e selecione Refactor > Extract Style. - Na caixa de diálogo Extract Android Style, desmarque as caixas de seleção
layout_width
,layout_height
etextAlignment
. Normalmente, esses atributos são diferentes para cada visualização. Por isso, não convém que eles façam parte do estilo. - No campo Nome do estilo, insira
NameStyle
. - Clique em OK.
- Um estilo também é um recurso, então ele é salvo na pasta
res/values/
em um arquivostyles.xml
. Abrastyles.xml
e examine o código gerado para o estiloNameStyle
, que será semelhante a este:
<style name="NameStyle">
<item name="android:layout_marginTop">@dimen/layout_margin</item>
<item name="android:fontFamily">@font/roboto</item>
<item name="android:paddingTop">@dimen/small_padding</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:textSize">@dimen/text_size</item>
</style>
- Abra o arquivo
activity_main.xml
e alterne para a guia Text. O estilo gerado está sendo usado na visualização de texto comostyle="@style/NameStyle"
. - Execute o app e observe as mudanças na fonte e o padding ao redor da
TextView
.
A maioria dos apps Android reais consiste em uma combinação de visualizações para exibir imagens e texto e aceitar entradas do usuário na forma de eventos de texto ou de clique. Nesta tarefa, você adicionará uma visualização para exibir uma imagem.
ImageView
é uma visualização para exibir recursos de imagem. Por exemplo, uma ImageView
pode exibir recursos Bitmap
, como arquivos PNG, JPG, GIF ou WebP, ou pode exibir um recurso Drawable
, como um desenho vetorial.
Existem recursos de imagem incluídos no Android, como ícones de exemplo, avatares e planos de fundo. Você adicionará um desses recursos ao app.
- Exiba o arquivo de layout na guia Design e arraste uma ImageView do painel Palette para abaixo de
name_text
na Component Tree. A caixa de diálogo Resources será aberta. - Selecione Drawable se ainda não estiver selecionado.
- Expanda android, role a tela e selecione btn_star_big_on. É a estrela amarela .
- Clique em OK.
A imagem de estrela será adicionada ao layout abaixo do seu nome. Como você tem umLinearLayout
vertical, as visualizações adicionadas são alinhadas verticalmente. - Alterne para a guia Text e observe o código
ImageView
gerado. A largura está definida comomatch_parent
, portanto, a visualização será tão ampla quanto o elemento pai. A altura é definida comowrap_content
, por isso a visualização será tão alta quanto o conteúdo dela. OImageView
faz referência ao drawablebtn_star_big_on
.
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/btn_star_big_on" />
- Para renomear o
id
doImageView
, clique com o botão direito do mouse em"@+id/imageView"
e selecione Refactor > Rename. - Na caixa de diálogo Renomear, defina
id
como@+id/star_image
. Clique em Refactor.
- Na guia Design, na Component Tree, clique no ícone de aviso ao lado de
star_image
. O aviso é de umacontentDescription
ausente, que os leitores de tela usam para descrever imagens ao usuário. - No painel Attributes, clique nos três pontos ... ao lado do atributo
contentDescription
. A caixa de diálogo Resources será aberta. - Na caixa de diálogo Resources, selecione Add new resource > New string Value. Defina o campo Nome do recurso como
yellow_star
e o campo Valor do recurso comoYellow star
. Clique em OK. - Use o painel Attributes para adicionar uma margem superior de
16dp
(que é@dimen/layout_margin
) à classeyellow_star
para separar a imagem em estrela do nome. - Execute o app. Seu nome e a imagem de estrela são exibidos na IU do app.
Um ScrollView
é um grupo de visualizações que permite rolar a hierarquia de visualização dentro dele. Uma visualização de rolagem pode conter somente uma outra visualização ou uma visualização em grupo como uma filha. A visualização filha geralmente é um LinearLayout
. Dentro de um LinearLayout
, você pode adicionar outras visualizações.
A imagem a seguir mostra um exemplo de uma ScrollView
contendo uma LinearLayout
com várias outras visualizações.
Nesta tarefa, você adicionará um ScrollView
que permite ao usuário rolar uma visualização de texto que exibe uma breve biografia. Se você estiver fazendo apenas uma visualização rolável, poderá colocá-la diretamente em ScrollView
, que é o que você faz nesta tarefa.
Etapa 1: adicionar uma ScrollView que contenha uma TextView
- Abra o arquivo
activity_main.xml
na guia Design. - Arraste uma visualização de rolagem para o layout arrastando-a para o editor de design ou para a Component Tree. Coloque a visualização de rolagem abaixo da imagem de estrela.
- Alterne para a guia Text para inspecionar o código gerado.
// Auto generated code
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
A altura e a largura da ScrollView
correspondem ao elemento pai. Depois que a visualização de texto name_text
e a visualização de imagem star_image
tiverem usado espaço vertical suficiente para exibir o conteúdo, o sistema Android dispõe o ScrollView
para preencher o restante do espaço disponível na tela.
- Adicione um
id
àScrollView
e chame-o debio_scroll
. Adicionar umid
àScrollView
oferece ao sistema Android um controle para a visualização de modo que, quando o usuário girar o dispositivo, o sistema preserve a posição de rolagem. - No
ScrollView
, remova o códigoLinearLayout
, porque o app terá apenas uma visualização rolável, como umTextView
. - Arraste um
TextView
de Palette para a Component Tree. Coloque oTextView
nabio_scroll
como um elemento filho debio_scroll
. - Defina o ID da nova visualização de texto como
bio_text
. - Em seguida, adicione um estilo para a nova visualização de texto. No painel Attributes, clique nos três pontos ... ao lado do atributo style para abrir a caixa de diálogo Resources.
- Na caixa de diálogo Resources, pesquise
NameStyle
. SelecioneNameStyle
na lista e clique em OK. A visualização de texto agora usa o estiloNameStyle
, que você criou em uma tarefa anterior.
Etapa 2: adicionar sua biografia à nova TextView
- Abra
strings.xml
, crie um recurso de string chamadobio
e coloque um texto longo sobre você ou sobre o que quiser.
Veja um exemplo de biografia:
<string name="bio">Hi, my name is Aleks.
\n\nI love fish.
\n\nThe kind that is alive and swims around in an aquarium or river, or a lake, and definitely the ocean.
\nFun fact is that I have several aquariums and also a river.
\n\nI like eating fish, too. Raw fish. Grilled fish. Smoked fish. Poached fish - not so much.
\nAnd sometimes I even go fishing.
\nAnd even less sometimes, I actually catch something.
\n\nOnce, when I was camping in Canada, and very hungry, I even caught a large salmon with my hands.
\n\nI\'ll be happy to teach you how to make your own aquarium.
\nYou should ask someone else about fishing, though.\n\n</string>
- Na visualização de texto
bio_text
, defina o valor do atributotext
para o recurso de stringbio
que contém sua biografia. - Para facilitar a leitura do texto da
bio_text
, adicione espaçamento entre as linhas. Use o atributolineSpacingMultiplier
e atribua a ele o valor1.2
.
Observe que, no editor de design, o textobio
é executado até as bordas da tela. Para corrigir esse problema, adicione atributos de preenchimento à esquerda, início, direita e fim à raizLinearLayout
. Não é necessário adicionar o preenchimento inferior, porque o texto executado até os sinais inferiores é indicado ao usuário. - Adicione o padding de início e término a
16dp
à raizLinearLayout
. - Alterne para a guia Texto, extraia o recurso de dimensão e nomeie-o como
layout_padding
.
- Execute o app e role pelo texto.
Parabéns!
Você criou um app completo do zero!
Projeto do Android Studio: AboutMe
No ScrollView
, adicione um ImageView
acima do TextView
. Quando você executa o app, essa imagem, ao contrário da estrela, rola para fora da visualização conforme o texto é exibido.
Dica:a visualização de rolagem só pode ter uma visualização filha. É necessário unir as duas visualizações roláveis, ImageView
e TextView
, em uma LinearLayout
.
- Uma
ViewGroup
é uma visualização que pode conter outras visualizações.LinearLayout
eScrollView
são grupos de visualização. LinearLayout
é um grupo de visualizações que organiza as visualizações filhas horizontal ou verticalmente.- Use uma
ScrollView
quando precisar exibir conteúdo na tela, como textos longos ou uma coleção de imagens. Uma visualização de rolagem pode conter somente uma visualização filha. Caso queira rolar mais de uma visualização, adicione umViewGroup
como umLinearLayout
àScrollView
e coloque as visualizações a serem roladas nesseViewGroup
. - O Layout Editor é um editor de design visual do Android Studio. Você pode usar o Layout Editor para criar o layout do seu app arrastando elementos de IU para ele.
- Um estilo (link em inglês) é uma coleção de atributos que especificam a aparência de uma visualização. Por exemplo, um estilo pode especificar cor e tamanho da fonte, cor do plano de fundo, padding e margem.
- Você pode extrair e coletar toda a formatação de uma visualização em um estilo. Para que o app tenha uma aparência consistente, reutilize o estilo de outras visualizações.
Curso da Udacity:
- Como desenvolver apps Android com Kotlin (link em inglês)
Documentação do desenvolvedor Android:
Esta seção lista as possíveis atividades para os alunos que estão trabalhando neste codelab como parte de um curso ministrado por um instrutor. Cabe ao instrutor fazer o seguinte:
- Se necessário, atribua o dever de casa.
- Informe aos alunos como enviar o dever de casa.
- Atribua nota aos trabalhos de casa.
Os professores podem usar essas sugestões o quanto quiserem, e eles devem se sentir à vontade para passar o dever de casa como achar adequado.
Se você estiver fazendo este codelab por conta própria, use essas atividades para testar seu conhecimento.
Responda a estas perguntas
Pergunta 1
Qual das seguintes opções é um grupo de visualização?
▢ EditText
▢ LinearLayout
▢ TextView
▢ Button
Pergunta 2
Qual das seguintes hierarquias de visualização listadas não é válida?
▢ LinearLayout
> TextView
, TextView
e ImageView
▢ ScrollView
> LinearLayout
> TextView
, Button
, Button
, ScrollView
> TextView
▢ TextView
> TextView
, ImageView
e ScrollView
Pergunta 3
Os estilos são recursos definidos em styles.xml
. Ao usar estilos, você pode definir cores, fontes, tamanho de texto e muitas outras características de uma visualização. Verdadeiro ou falso?
▢ Verdadeiro
▢ Falso
Pergunta 4
Uma ScrollView
é um grupo de visualizações que pode conter qualquer número de visualizações ou grupos de visualizações como filhos. Verdadeiro ou falso?
▢ Verdadeiro
▢ Falso
Pergunta 5
Qual elemento da IU pode ser usado para exibir imagens no seu app?
▢ TextView
▢ ImageView
▢ Button
▢ ScrollView
Inicie a próxima lição:
Para ver links de outros codelabs neste curso, consulte a página de destino dos codelabs do curso Conceitos básicos do Kotlin para Android.