Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Programador de 
dispositivos móveis 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Catalogação e Normalização 
Hugo Cavalcanti (Crb-4 2129) 
 
Diagramação 
Jailson Miranda 
 
Coordenação Executiva 
George Bento Catunda 
Renata Marques de Otero 
Manoel Vanderley dos Santos Neto 
 
Coordenação Geral 
Maria de Araújo Medeiros Souza 
Maria de Lourdes Cordeiro Marques 
 
Secretaria Executiva de 
Educação Integral e Profissional 
 
Escola Técnica Estadual 
Professor Antônio Carlos Gomes da Costa 
 
Gerência de Educação a distância 
 
Julho, 2020 
Professor(es) Autor(es) 
Rebecca Cristina Linhares de Carvalho 
Danilo de Sousa Barbosa 
 
Revisão 
Rebecca Cristina Linhares de Carvalho 
Danilo de Sousa Barbosa 
 
Coordenação de Curso 
José Américo Teixeira de Barros 
 
Coordenação Design Educacional 
Deisiane Gomes Bazante 
 
Design Educacional 
Ana Cristina do Amaral e Silva Jaeger 
Helisangela Maria Andrade Ferreira 
Izabela Pereira Cavalcanti 
Jailson Miranda 
Roberto de Freitas Morais Sobrinho 
 
Descrição de imagens 
Sunnye Rose Carlos Gomes 
 
 
 
 
 
 
 
 
 
 
 
 
Sumário 
Introdução .............................................................................................................................................. 7 
1. Competência 01 | Introduzir os conceitos básicos de um sistema operacional móvel, configurar e 
conhecer o ambiente de desenvolvimento ........................................................................................... 8 
1.1 O que é o Android ....................................................................................................................................... 8 
1.1.1 Sistema operacional Linux ....................................................................................................................... 9 
1.1.2 Código aberto e livre .............................................................................................................................. 10 
1.2 Arquitetura da plataforma ........................................................................................................................ 11 
1.3 Os diversos sabores do Android ............................................................................................................... 15 
1.4 Google Play ............................................................................................................................................... 19 
1.5 O ambiente de desenvolvimento ............................................................................................................. 19 
1.5.1 Instalação do JDK ................................................................................................................................... 20 
1.5.2 Instalação e configuração do Android Studio ........................................................................................ 24 
1.6 Configuração do AVD no Android Studio.................................................................................................. 33 
2. Competência 02 | Formatar uma Activity para o Desenvolvimento, Utilizando Operadores 
Matemáticos......................................................................................................................................... 39 
2.1 Conceitos Básicos ...................................................................................................................................... 39 
2.1.1 Iniciando um novo projeto com Android Studio ................................................................................... 39 
2.1.2 Estrutura de um projeto Android .......................................................................................................... 44 
2.1.2.1 Arquivo AndroidManifest.xml ............................................................................................................ 45 
2.1.2.2 Classe MainActivity ............................................................................................................................. 46 
2.1.2.3 Arquivo de Layout activity_main.xml ................................................................................................. 48 
2.1.3 Processo de compilação e execução de um projeto Android ............................................................... 50 
2.2 Variáveis .................................................................................................................................................... 52 
2.3 Tipo de dados ............................................................................................................................................ 54 
2.3.1 Tipo de dado primitivo ........................................................................................................................... 54 
 
 
2.3.2 Tipo de dado lógico ................................................................................................................................ 55 
2.3.3 Tipo de dado numérico Inteiros............................................................................................................. 55 
2.3.4 Tipo de dado numérico de ponto flutuante .......................................................................................... 57 
2.3.5 Tipo de dado de caractere ..................................................................................................................... 58 
2.3.6 Tipo de dado complexo: String .............................................................................................................. 59 
2.4 Separadores .............................................................................................................................................. 61 
2.5 Operadores ............................................................................................................................................... 61 
2.5.1 Operadores Aritméticos......................................................................................................................... 62 
2.5.1.1 Incremento e decremento .................................................................................................................. 63 
2.5.2 Operadores Relacionais e Lógicos ......................................................................................................... 66 
2.5.3 Operadores de atribuição ...................................................................................................................... 67 
2.5.3.1 Operadores de atribuições abreviadas ............................................................................................... 68 
3. Competência 03 | Formatar uma Activity para o desenvolvimento de instruções de controle de 
programa .............................................................................................................................................. 70 
3.1 Estruturas de controle condicional ........................................................................................................... 70 
3.1.1 Estrutura if ............................................................................................................................................. 70 
3.1.1.1 Estrutura if-else................................................................................................................................... 71 
3.1.1.2 Estrutura if-else aninhada ................................................................................................................... 73 
3.1.2 Estrutura Switch ..................................................................................................................................... 75 
3.2 Estruturas de repetição ............................................................................................................................ 78 
3.2.1 Estrutura For ..........................................................................................................................................78 
3.2.2 Estrutura While ...................................................................................................................................... 79 
3.2.3 Estrutura Do-While ................................................................................................................................ 81 
4.Competência 04 | Formatar uma Activity para utilização de Arrays ................................................ 84 
4.1 Arrays ........................................................................................................................................................ 84 
4.1.1 Arrays Unidimensionais ......................................................................................................................... 85 
 
 
4.1.2 Arrays Multidimensionais ...................................................................................................................... 87 
4.1.2.1 Arrays Bidimensionais ......................................................................................................................... 87 
5. Competência 05 | Conhecer o Activity em detalhes ....................................................................... 90 
5.1 Criando um novo projeto com Activity ..................................................................................................... 90 
5.2 Conceito de Activity .................................................................................................................................. 92 
5.3 Ciclo de vida de uma Activity .................................................................................................................... 94 
5.4 Navegabilidade entre Activity ................................................................................................................. 101 
5.5 Navegabilidade Simples de uma Activity para outra .............................................................................. 102 
5.6 Navegação entre telas com passagem de parâmetros........................................................................... 106 
6. Competência 06 | Manipular Action bar e temas .......................................................................... 111 
6.1 Criando um novo projeto com Action Bar .............................................................................................. 111 
6.2 Conceito de Action Bar ........................................................................................................................... 115 
6.3 Conceito de temas .................................................................................................................................. 116 
6.4 Customização de Action Bar com botão ................................................................................................. 117 
6.5 Modificando Action Bar com temas ....................................................................................................... 120 
7.Competência 07 | Conhecer os conceitos de interface gráfica - gerenciadores de layout ............ 124 
7.1 Criando um novo projeto com a classe ViewGroup ............................................................................... 124 
7.2 Conceito da classe View .......................................................................................................................... 125 
7.3 Conceito da classe ViewGroup ............................................................................................................... 126 
7.3.1 LinearLayout ........................................................................................................................................ 130 
7.3.2 ConstraintLayout.................................................................................................................................. 136 
7.3.3 RelativeLayout ..................................................................................................................................... 142 
7.4 Dimensões dos componentes do layout ................................................................................................ 145 
8. Competência 08 | Conhecer os conceitos de interface gráfica – view .......................................... 148 
8.1 Criando um novo projeto com a classe Widget ...................................................................................... 148 
8.2 Conceito da classe Widget ...................................................................................................................... 149 
 
 
8.2.1 TextView .............................................................................................................................................. 151 
8.2.2 EditText ................................................................................................................................................ 154 
8.2.3 Imageview ............................................................................................................................................ 161 
9. Competência 09 | Utilizar recursos avançados de view ................................................................ 166 
9.1 Avanços da Widget ................................................................................................................................. 166 
9.1.1 Button .................................................................................................................................................. 166 
9.1.2 ImageButton ........................................................................................................................................ 169 
9.1.3 CheckBox .............................................................................................................................................. 171 
9.1.4 RadioButton ......................................................................................................................................... 174 
9.1.5 Spinner ................................................................................................................................................. 177 
10. Competência 10 | Planejar e executar o compartilhamento do APK .......................................... 182 
10.1 Versionamento da aplicação ................................................................................................................ 182 
10.2 Compatibilidade para instalação .......................................................................................................... 184 
10.3 Assinatura da aplicação com certificado digital ................................................................................... 186 
10.4 Assinatura da aplicação para publicá-la no Google Play ...................................................................... 189 
10.5 Publicando a sua aplicação no Google Play .......................................................................................... 191 
Conclusão ........................................................................................................................................... 195 
Referências ......................................................................................................................................... 196 
Minicurrículo do Professor ................................................................................................................. 197 
 
 
 
 
 
 
7 
Introdução 
Olá, desenvolvedor em formação! Estamos iniciando nossa jornada no curso 
“Programador para Dispositivos Móveis”. O objetivo geral deste curso é por meio de uma linguagem 
simples, descomplicada e com aplicações práticas facilitar seu caminho para uma melhor 
compreensão das noções iniciais e essenciais do desenvolvimento de aplicativos para a plataforma 
Android. 
Para tal, no primeiro momento deste e-book, você conhecerá algumas das principais 
ferramentas necessárias para o desenvolvimento de aplicações emAndroid no ambiente operacional, 
aprenderá os pormenores de suas instalações, bem como suas configurações corretas. Também 
aprenderá a identificar e a trabalhar com termos tais quais variáveis, os tipos de dados e os 
operadores, as estruturas de controle condicional, as estruturas de repetição e o tipo de dado arrays. 
Já no segundo momento deste e-book, você aprenderá sobre as classes de interface 
gráfica mais importantes e utilizadas no desenvolvimento de aplicativos em Android: será mostrado 
o conceito da classe Activity; será visto como manipular Action bar e temas; e será abordado os 
conceitos de interface gráfica dos layouts ConstraintLayout, linearLayout e RelativeLayout. Em 
seguida, vamos aprofundar sobre o conceito de interface gráfica utilizando classe view. Por fim, será 
mostrado como planejar e executar o compartilhamento de aplicação do Android no Google Play. 
Esperamos que o conteúdo aqui discutido lhe sirva como uma primordial ferramenta em 
sua busca por um amplo universo de conhecimentos, e que você alce um voo muito além deste curso. 
Cordialmente, Rebecca Linhares e Danilo de Sousa. 
 
 
8 
1. Competência 01 | Introduzir os conceitos básicos de um sistema 
operacional móvel, configurar e conhecer o ambiente de desenvolvimento 
Caro estudante, a primeira competência tem o objetivo de apresentá-lo ao sistema 
operacional Android e ao ambiente de desenvolvimento de aplicações Android. Na primeira parte 
desta competência, você irá aprender os conceitos básicos do Android e sua arquitetura. Em seguida, 
você acompanhará a evolução das “doces” versões do Android. Na segunda parte desta competência, 
você irá conhecer os componentes necessários para o ambiente de desenvolvimento de aplicações 
Android: o Java Development Kit (JDK) e o Android Studio. Por fim, você irá aprender como instalar e 
configurar estes componentes. 
Vamos Iniciar! 
 
1.1 O que é o Android 
O Android (Figura1.1) é o sistema operacional móvel da Google completamente livre e de 
código aberto, e líder mundial nesse segmento. Na conferência anual da Google, Google I/O 2017, foi 
anunciado que já existem mais de dois bilhões de dispositivos Androids ativados no mundo. 
 
Figura 1.1 - Marca do sistema operacional Android. 
Fonte: veja.abril.com. 
Descrição da imagem: robô na cor verde. 
 
 
 
9 
Atualmente, o Android está disponível para diversas plataformas, como smartphones e 
tablets, TV, relógios, carros, e é o sistema operacional móvel mais utilizado no mundo. 
 
1.1.1 Sistema operacional Linux 
O sistema operacional do Android é baseado no Kernel do Linux, que é responsável por 
gerenciar a memória, os processos, as threads, a segurança dos arquivos e das pastas, redes e drivers, 
além da energia. 
Cada aplicativo no Android dispara um novo processo no sistema operacional. Diversos 
processos e aplicativos podem ser executados simultaneamente, e o kernel do sistema operacional é 
o responsável por realizar todo o controle de memória. Por exemplo, caso seja necessário, o próprio 
sistema operacional pode decidir encerrar algum processo para liberar memória e recursos. E quando 
a situação estiver controlada, talvez o mesmo processo seja reiniciado. 
 
 
 
Veja os principais anúncios da gigante Google na conferência Google I/O 2019: 
https://canaltech.com.br/google-io/google-io-2019-os-principais-anuncios-da-
gigante-para-este-ano-138705/ 
 
Linux é um Sistema Operacional, assim como o Windows e o Mac OS, que 
possibilita a execução de programas em um computador e outros dispositivos, e 
pode ser livremente modificado e distribuído. Mas, em uma definição mais 
profunda e técnica, Linux é o nome dado apenas ao núcleo do sistema 
operacional, chamado de Kernel. 
 
Kernel é um conjunto de instruções que controla como será usado o 
processador, a memória, o disco e dispositivos periféricos. É o software presente 
em todo sistema operacional que dita como o computador deve funcionar. Saiba 
mais sobre o Linux e o Kernel: 
https://www.4linux.com.br/o-que-e-linux 
https://www.vivaolinux.com.br/artigo/Como-explicar-o-que-e-kernel-para-um-
leigo/ 
 
https://canaltech.com.br/google-io/google-io-2019-os-principais-anuncios-da-gigante-para-este-ano-138705/
https://canaltech.com.br/google-io/google-io-2019-os-principais-anuncios-da-gigante-para-este-ano-138705/
https://www.4linux.com.br/o-que-e-linux
https://www.vivaolinux.com.br/artigo/Como-explicar-o-que-e-kernel-para-um-leigo/
https://www.vivaolinux.com.br/artigo/Como-explicar-o-que-e-kernel-para-um-leigo/
 
 
10 
 
1.1.2 Código aberto e livre 
Em 21 de outubro de 2008 o android se transformou em Open Source (Figura 1.2), com 
seu código publicado como AOSP (Android Open Source Project). Se tornado a primeira plataforma 
para aplicativo móveis completamente livre e de código aberto (open source), o que representou 
uma grande vantagem competitiva para a sua evolução, uma vez que diversas empresas e 
desenvolvedores do mundo podem contribuir para melhorar a plataforma. 
 
Figura 1.2 – Marca da iniciativa Adroid Open Source Project (AOSP). 
Fonte: mobilenet.cz. 
Descrição da imagem: robô na cor verde e ao seu entorno há diversos outros tipos de robôs, nos mais variados 
tamanhos e cores. 
 
Para os fabricantes de celulares, isso também é uma grande vantagem, uma vez que é 
possível utilizar o sistema operacional do Android em seus celulares sem ter de pagar por isso. 
Toda a segurança do sistema operacional Android é baseada na segurança do sistema 
Linux. Isto significa que, o Android é um sistema Linux multiusuário em que cada aplicativo é um 
usuário diferente. Ou seja, para cada aplicação instalada no celular é criado um usuário no sistema 
operacional para ter acesso a sua estrutura de diretórios. Assim, somente o usuário atribuído àquele 
aplicativo pode acessá-lo. 
 
 
11 
 
 
1.2 Arquitetura da plataforma 
Como descrito no site oficial, “O Android é uma pilha de software com base em Linux de 
código aberto criada para diversos dispositivos e fatores de forma”. Isto significa que, a arquitetura 
do Android é construída em camadas onde estas camadas são software agrupados em uma pilha. E 
estas, se dividem em seis camadas (Figura 1.3): Kernel do Linux, Camada de abstração de hardware 
(HAL), Android Runtime, Bibliotecas C/C++ nativas, Estruturas da Java API e os Aplicativos do sistema. 
 
Figura 1.3 - As seis camadas da arquitetura da plataforma Android: Kernel do Linux (Linux Kernel), Camada de abstração 
de hardware (Hardware Abstraction Layer - HAL), Android Runtime (ART), Bibliotecas nativas (Native Libraries), Java API 
Framework e os Aplicativos do sistema (System Apps). 
Fonte: source.android.com. 
 
O Android Open Source Project (AOSP) é uma iniciativa que visa disponibilizar 
versões do Android totalmente baseadas em código-fonte aberto. Saiba mais 
sobre o AOSP: 
https://source.android.com/ 
https://source.android.com/
 
 
12 
Descrição da imagem: figuras geométricas no formato de um quadrado representando camadas, sobrepostas de cima 
para baixo na seguinte sequência: rosa pink, lilás, laranja, azul, verde e verde claro. 
 
O diagrama a seguir (Figura 1.4) mostra a maioria dos componentes da arquitetura 
Android: 
 
Figura 1.4 - A pilha de software do Android e suas respectivas camadas: Kernel do Linux (Linux Kernel), Camada de 
 
 
13 
abstração de hardware (Hardware Abstraction Layer - HAL), Bibliotecas C/C++ nativas (Native C/C++ Libraries) e Android 
Runtime (ART), Java API Framework e os Aplicativos do sistema (System Apps). 
Fonte: developer.android.com 
Descrição da imagem: figuras geométricas no formato de um retângulo representando uma pilha, onde os elementos 
estão em cima do outro na seguinte sequência (base-topo): laranja, azul claro, lilás e amarelo, verde claro e azul escuro. 
 
• Kernel do Linux (Linux Kernel): 
O kernel do linux é o nível mais baixo e a base da arquitetura Android. Por exemplo:o 
Android Runtime (ART) confia no kernel do Linux para cobrir funcionalidades como encadeamento e 
gerenciamento de memória de baixo nível. 
Usar um kernel do Linux permite que o Android aproveite os recursos de segurança 
principais e que os fabricantes dos dispositivos desenvolvam drivers de hardware para um kernel 
conhecido. 
 
• Camada de abstração de hardware (Hardware Abstraction Layer - HAL): 
A camada de abstração de hardware (HAL) fornece interfaces padrão que expõem as 
capacidades de hardware do dispositivo para a estrutura da Java API de maior nível. A HAL consiste 
em módulos de biblioteca, que implementam uma interface para um tipo específico de componente 
de hardware, como o módulo de câmera ou Bluetooth. Quando uma Framework API faz uma 
chamada para acessar o hardware do dispositivo, o sistema Android carrega o módulo da biblioteca 
para este componente de hardware. 
 
 
• Android Runtime: 
Para dispositivos com Android versão 5.0 ou mais recente, cada aplicativo executa o 
próprio processo com uma instância própria do Android Runtime (ART). O ART é projetado para 
executar várias máquinas virtuais em dispositivos de baixa memória executando arquivos DEX, um 
formato de bytecode projetado especialmente para Android, otimizado para oferecer consumo 
mínimo de memória. 
 
 
 
 
 
14 
• Bibliotecas C/C++ nativas (Native C/C++ Libraries): 
Vários componentes e serviços principais do sistema Android, como ART e HAL, são 
implementados por código nativo que exige bibliotecas nativas programadas em C e C++. A 
plataforma Android fornece as Java APIs Framework para expor a funcionalidade de algumas dessas 
bibliotecas nativas aos aplicativos. Por exemplo, é possível acessar OpenGL ES pela Java OpenGL API 
da estrutura do Android para adicionar a capacidade de desenhar e manipular gráficos 2D e 3D no 
seu aplicativo. 
Se estiver desenvolvendo um aplicativo que exige código C ou C++, você pode usar o 
Android NDK para acessar algumas dessas bibliotecas de plataforma nativa diretamente do seu 
código nativo. 
 
• Java API Framework: 
O conjunto completo de recursos do sistema operacional Android está disponível pelas 
APIs programadas na linguagem Java. Essas APIs formam os blocos de programação que você precisa 
para criar os aplicativos Android simplificando a reutilização de componentes e serviços de sistema 
modulares e principais, inclusive: 
• Um sistema de visualização rico e extensivo útil para programar a IU de um aplicativo, 
com listas, grades, caixas de texto, botões e até mesmo um navegador da web 
incorporado 
• Um gerenciador de recursos, fornecendo acesso a recursos sem código como strings 
localizadas, gráficos e arquivos de layout 
• Um gerenciador de notificação que permite que todos os aplicativos exibam alertas 
personalizados na barra de status 
• Um gerenciador de atividade que gerencia o ciclo de vida dos aplicativos e fornece 
uma pilha de navegação inversa 
• Provedores de conteúdo que permite que aplicativos acessem dados de outros 
aplicativos, como o aplicativo Contatos, ou compartilhem os próprios dados 
 
 
 
15 
Os desenvolvedores têm acesso completo às mesmas Framework APIs que os aplicativos 
do sistema Android usam. 
 
• Os Aplicativos do sistema (System Apps): 
O Android vem com um conjunto de aplicativos principais para e-mail, envio de SMS, 
calendários, navegador de internet, contatos etc. Os aplicativos inclusos na plataforma não têm 
status especial entre os aplicativos que o usuário opta por instalar. Portanto, um aplicativo 
terceirizado pode se tornar o navegador da Web, o aplicativo de envio de SMS ou até mesmo o 
teclado padrão do usuário (existem algumas exceções, como o aplicativo Configurações do sistema). 
Os aplicativos do sistema funcionam como aplicativos para os usuários e fornecem 
capacidades principais que os desenvolvedores podem acessar pelos próprios aplicativos. Por 
exemplo: se o seu aplicativo quiser enviar uma mensagem SMS, não é necessário programar essa 
funcionalidade — é possível invocar o aplicativo de SMS que já está instalado para enviar uma 
mensagem ao destinatário que você especificar. 
 
1.3 Os diversos sabores do Android 
Em 22 de outubro de 2008, foi lançado oficialmente o primeiro Android comercial do 
mercado, o Android Alpha, com o famoso HTC Dream, e após isso o Android não parou mais de 
evoluir. 
E essa evolução aconteceu de uma forma engraçada e doce, pois cada nova versão do 
Android foi apelidada com o nome de um doce. Quando este caderno foi escrito a versão mais recente 
chamada extraoficialmente Android Q, foi batizada como Android 10 (Figura 1.5). Isso significa que 
houve uma quebra de tradição, e desta vez não houve doce. 
 
 
16 
 
Figura 1.5 - Imagem de divulgação do Android 10. 
Fonte: techtudo.com. 
Descrição da Imagem: palavra Android na cor branca seguida por uma cabeça de um robô na cor verde, com fundo em 
formato retangular na cor azul marinho. 
A tabela (Tabela 1.1) a seguir mostra os diversos sabores, ou melhor, as diversas versões do Android: 
Data de 
Lançamento 
Versão Nome Características Figura do Android 
Abril.2009 Android 1.5 Cupcake A principal novidade foi o 
lançamento do primeiro Android 
(HTC Magic) com apenas o touch 
screen e o teclado virtual. Foi no 
Cupcake que nasceram os 
widgets. 
Set.2009 Android 1.6 Donut Com o auxílio das pesquisas de 
voz, a home do Android ganhou 
mais funcionalidades, e o usuário 
pôde começar a pesquisar na 
agenda de contatos, na galeria de 
música. 
Out.2009 
(atualizado 
em 
Jan.2010) 
Android 12.0 
e 2.1 
Eclair Trouxe uma interface de usuário 
diferenciada e adicionou os Live 
Wallpapers (plano de fundo 
animado na tela inicial). E 
também lançou o suporte a 
múltiplas contas do Google e 
sincronização. 
 
Mai.2010 Android 2.2 Froyo Trouxe diversas melhorias de 
desempenho para o sistema 
operacional. 
 
 
 
17 
Dez.2010 Android 2.3 Gingerbread Trouxe novidade na câmera, pois 
era possível alternar entre a 
câmera frontal e a traseira. E 
melhorias na funcionalidade de 
copy-paste. Foi nesta versão que 
tivemos um grande ganho com 
relação ao gerenciamento da 
bateria. 
 
 
Fev.2011 Android 3.0 Honeycomb Trouxe um sistema operacional 
totalmente focado nos tablets, 
com uma experiência de usuário 
totalmente diferenciada para 
telas grandes. 
Nesta versão, o Android deixou 
de ter botões físicos e os botões 
de voltar e início (home) 
passaram a fazer parte da barra 
de navegação dentro da tela com 
o touch screen. 
 
 
Out.2011 Android 4.0 Ice cream 
Sandwich 
Unificou a plataforma de 
desenvolvimento entre 
smartphones e tablets 
executando o mesmo sistema 
operacional. 
 
Jun.2012 Android 4.1 Jelly Bean Trouxe um ganho significativo 
com relação ao desempenho do 
sistema, e todo o sistema 
operacional ganhou melhorias no 
suporte às animações, deixando a 
interface mais sensível ao toque e 
mais fluida. 
 
 
Out.2013 Android 4.4 KikKat Otimizou o Android ao máximo. 
E também trouxe 
aperfeiçoamento no Bluetooth. 
 
 
 
18 
Nov.2014 Android 5.0 Lollipop Foi a maior release focada na 
interface de usuário, usabilidade, 
animações e experiência do 
usuário. 
 
Agost.2015 Android 6.0 Marshmallow Trouxe um novo recurso, o novo 
modelo de permissão em tempo 
de execução, chamado Runtime 
Permissions. 
O Google Now também recebeu 
atualizações. 
 
 
Google I/O 
2016 
Android 7.0 Nougat Trouxe o suporte ao sistema de 
várias janelas (multi-window), 
uma nova central de notificações 
mais ricas, respostas diretas nas 
notificações e atalhos para 
executar ações nos aplicativos 
pela tela Home. 
 
Google I/O 
2017 
Android 8.0 Oreo Foi a versão que mais trouxe 
novidades para o usuário final. 
Dentre elas, tivemos uma 
inicialização mais rápida do 
sistema operacional. 
 
 
Google I/O 
2018 
Android 9.0 Pie Dentre as principais novidades 
tem o suporte ao Wi-Fi RTT para 
obter melhor localizaçãodo 
usuário, mesmo em ambientes 
internos. 
 
Set. 2019 Android 10 Android 10 O Android 10 foi construído em 
torno de três temas importantes. 
Primeiro, ele está liderando a 
inovação móvel com machine 
learning avançado e 
compatibilidade com novos 
dispositivos, como smartphones 
habilitados para 5G e dobráveis. 
Segundo o Android 10 tem um 
foco central em privacidade e 
segurança, com quase 50 
recursos que oferecem aos 
usuários maior proteção, 
 
 
 
19 
transparência e controle. Por fim, 
o Android 10 expande os 
controles de bem-estar digital 
dos usuários, para que indivíduos 
e famílias possam encontrar um 
melhor equilíbrio com a 
tecnologia. 
 
Tabela 1.1 - As diversas versões do Android 
Figura 1.6 - Versões do Android: Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice cream Sandwich, Jelly 
Bean, KikKat, Lollipop, Marshmallow, Nougat, Oreo, Pie e Android 10. 
Fonte: in.c.mi.com., tecmundo.com., developer.android.com., 
Descrição da Imagem: cupcake no formado de um robô na cor verde, uma rosquinha com um robô na cor verde, um 
doce bomba de chocolate com um robô na cor verde, um iogurte gelado na cor verde, um biscoito de gengibre no 
formato de um robô, um doce favo de mel no formato de uma abelha robô, um robô na cor verde com balas de jujuba 
de diversas cores, um sanduíche de sorvete no formato de um robô, um chocolate kitkat no formato de um robô, um 
robô na cor verde segurando um pirulito, um robô na cor verde segurando um marsmallow, um robô na cor verde sobre 
o doce torrone, um biscoito oreo no formato de um robô na cor verde e um robô na cor verde segurando um pedaço de 
torta. 
 
1.4 Google Play 
A Google Play é a loja de aplicativos, livros, filmes e músicas do Android, e é por meio dela 
que usuários de todo o mundo podem fazer o download de conteúdo para o seu aparelho. 
Foi criada para auxiliar na distribuição dos aplicativos, além da divulgação de sua nova 
plataforma. Inicialmente se chamava Android Market. O objetivo do site foi oferecer aos 
desenvolvedores um lugar comum para disponibilizar seus aplicativos. 
 
1.5 O ambiente de desenvolvimento 
Para começar a estudar a tão esperada “Programação para dispositivos móveis” é 
necessário configurar o ambiente de desenvolvimento de aplicações para o Android no seu 
computador ou no computador onde aplicação vai ser criada. Para isso o computador deve possuir 
os seguintes componentes: o Java Development Kit (JDK) e o Android Studio. 
Caso não tenha estes componentes no computador, você deverá instalá-los. Se esse for o 
seu caso, fique tranquilo nas próximas seções serão explicados tanto o processo de instalação como 
o processo de configuração do ambiente de desenvolvimento de aplicações para o Android. 
 
 
20 
Antes de realizar a instalação dos componentes é necessário verificar se o computador 
possui a configurações mínimas para executá-los. Os requisitos são: 
• Sistema operacional Microsoft Windows 7/8/10 (32 bits ou 64 bits) 
• No mínimo de 3 GB de RAM, porém o recomendado é de 8 GB de RAM (mais 1 GB 
para o emulador do Android). 
• No mínimo 2 GB de espaço disponível em disco, porém o recomendado é 4 GB (500 
MB para IDE mais 1.5 GB para Android SDK e imagem do sistema emulador). 
• Resolução mínima de tela de 1280 x 800. 
 
1.5.1 Instalação do JDK 
Java Development Kit (JDK) significa Kit de desenvolvimento Java, ou seja, é um pacote de 
ferramentas que permitem o desenvolvimento de uma aplicação baseado em Java. É composto por 
compilador e bibliotecas. 
O Java é fornecido em dois pacotes: o pacote JDK e o pacote Java Runtime Enviroment 
(JRE). JRE é o pacote de runtime (pacote de ferramenta para executar o código Java) e faz parte do 
JDK. 
A versão de JDK que iremos instalar será Java SE 11.0.5, a qual está disponível no site da 
Oracle para download no link abaixo: 
 
Você usa outro Sistema Operacional? 
Você utiliza outro SO (Sistema Operacional) como Mac OS e Linux e quer saber 
quais são os requisitos mínimos? Segue o link com as configurações mínimas 
para executar os componentes: 
https://www.javaworld.com/article/3095406/android-studio-for-beginners-part-
1-installation-and-setup.html 
 
https://www.javaworld.com/article/3095406/android-studio-for-beginners-part-1-installation-and-setup.html
https://www.javaworld.com/article/3095406/android-studio-for-beginners-part-1-installation-and-setup.html
 
 
21 
 
 
Assim, para fazer o Download do JDK, acesse o link e selecione a versão Java SE 11.0.5 de 
acordo com o sistema operacional do seu computador (Figura 1.7). 
 
Figura 1.7 - Seleção do pacote JDK. 
Fonte: oracle.com 
Descrição da Imagem: página do site oracle apresentando texto que informam a versão do JDK e as diversas opções do 
software para download. 
Finalizado o download, execute o JDK e siga as instruções para completar o processo de 
instalação (Figuras 1.8, 1.9 e 1.10). 
 
Download do JDK 
https://www.oracle.com/technetwork/java/javase/downloads/jdk11-
downloads-5066655.html 
https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
 
 
22 
 
Figura 1.8 - Instalação do pacote JDK. 
Fonte: Java SE 11.0.5 
Descrição da Imagem: janela com texto descritivo para instalação do pacote JDK que será confirmado mediante o click 
do mouse sobre um dos botões: Next, se deseja continuar a instalação e Cancel, se deseja cancelar a instalação. 
 
 
 
23 
 
Figura 1.9 - Processo de instalação do pacote JDK. 
Fonte: Java SE 11.0.5 
Descrição da imagem: janela com texto descritivo do progresso da instalação do pacote JDK. 
 
 
24 
 
Figura 1.10 - Finalizado o processo de instalação do pacote JDK. 
Fonte: Java SE 11.0.5 
Descrição da imagem: janela com texto descritivo da conclusão da instalação do pacote JDK. A janela será fechada 
mediante o click do mouse sobre o botão Close. 
 
1.5.2 Instalação e configuração do Android Studio 
O Android Studio é o IDE (Integrated Development Environment) ou ambiente de 
desenvolvimento integrado padrão da Google cuja a função é o desenvolvimento exclusivo de 
aplicações Android. Atualmente na versão 3.5.2, o Android Studio traz diversas ferramentas para 
auxiliar no processo de desenvolvimento, testes, análise e depuração de aplicações para android. 
Além de ser gratuito. Por este motivo, utilizaremos o Android Studio para criarmos os projetos que 
desenvolveremos no decorrer deste caderno. 
 
O que é Java? 
Java é uma linguagem de programação e plataforma computacional lançada pela 
primeira vez pela Sun Microsystems em 1995. 
Saiba mais: https://www.java.com/pt_BR/download/faq/whatis_java.xml 
https://www.java.com/pt_BR/download/faq/whatis_java.xml
 
 
25 
 
A versão do Android Studio que iremos instalar será 3.5.2, a qual está disponível no site 
oficial do Android Studio para download, segue o link abaixo: 
 
Assim, para fazer o Download do Android Studio, acesse o link e clique no botão baixar 
android studio (Figura 1.11) e aceite os termos e condições e clique no botão fazer o download de 
Android Studio para Windows para iniciar o download. 
 
Figura 1.11 - Download do Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da Imagem: página de acesso para fazer o Download do Android Studio, com texto descritivo do Android 
Studio em que na parte inferior tem-se um botão com fundo verde-escuro com o texto baixar android studio. 
 
 
O que é SDK? 
O Android SDK (Software Development Kit) ou Kit de Desenvolvimento de 
Software para Android é um pacote completo de ferramentas utilizadas pelo 
Android Studio e pelos desenvolvedores Android, incluindo componentes como 
o SDK Tools, Build Tools e o Platform Tools. 
Saiba mais: https://www.androidpro.com.br/blog/android-studio/android-sdk/ 
 
 
Downloads do Android Studio 
Downloads do Android Studio para os sistemas operacionais Windows, Mac, 
Linuxe Chrome OS: 
https://developer.android.com/studio/index.html 
Saiba mais: https://www.androidpro.com.br/blog/android-studio/android-sdk/ 
 
https://developer.android.com/studio/index.html
https://www.androidpro.com.br/blog/android-studio/android-sdk/
 
 
26 
Finalizado o download, execute o Android Studio e siga as instruções para completar o 
processo de instalação (Figuras 1.12, 1.13, 1.14, 1.15, 1.16 e 1.17). 
 
Figura 1.12 - Instalação do Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: janela com texto descritivo para instalação do Android Studio que será confirmado mediante o 
click do mouse sobre um dos botões: Back, se deseja voltar, Next, se deseja continuar a instalação e Cancel, se deseja 
cancelar a instalação. 
 
 
 
27 
 
Figura 1.13 - Instalação do Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: janela com texto descritivo para instalação dos componentes do Android Studio que será 
confirmado mediante o click do mouse sobre um dos botões: Back, se deseja voltar, Next, se deseja continuar a 
instalação e Cancel, se deseja cancelar a instalação. 
 
 
28 
 
Figura 1.14 - Instalação do Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: janela com texto descritivo para a instalação do Android Studio. E logo abaixo uma caixa de 
texto com o texto descritivo do local de instalação, em que no lado direito tem-se um botão com fundo cinza com o 
texto Browser. A instalação do Android Studio será confirmada mediante o click do mouse sobre um dos botões: Back, 
se deseja voltar, Next, se deseja continuar a instalação e Cancel, se deseja cancelar a instalação. 
 
Figura 1.15 - Instalação do Android Studio 
Fonte: Android Studio 3.5.2 
 
 
29 
Descrição da imagem: janela com texto descritivo para instalação do Android Studio que será confirmado mediante o 
click do mouse sobre um dos botões: Back, se deseja voltar, Next, se deseja continuar a instalação e Cancel, se deseja 
cancelar a instalação. 
 
 
Figura 1.16 - Instalação do Android Studio 
Fonte: Android Studio 3.5.2 
Descrição da imagem: janela com texto descritivo do progresso de instalação do Android Studio. A instalação do 
Android Studio será confirmada mediante o click do mouse sobre um dos botões: Back, se deseja voltar, Next, se deseja 
continuar a instalação e Cancel, se deseja cancelar a instalação. 
 
 
 
30 
 
Figura 1.17 - Instalação do Android Studio 
Fonte: Android Studio 3.5.2 
Descrição da imagem: janela com texto descritivo da instalação completa do Android Studio. O Android Studio será 
executado mediante o click do mouse sobre um dos botões: Back, se deseja voltar, Finish, se deseja finalizar a instalação 
e Cancel, se deseja cancelar a instalação. 
 
Após o processo de instalação, o Android Studio irá executar pela primeira vez e então 
surgirá a janela de carregamento do editor (Figura 1.18). 
 
Você usa outro SO? 
Você utiliza outro SO como Mac OS e Linux e quer instalar o Android Studio 
Segue o link com o guia de instalação para estes SO: 
https://developer.android.com/studio/install#mac 
https://developer.android.com/studio/install#linux 
 
https://developer.android.com/studio/install#mac
https://developer.android.com/studio/install#linux
 
 
31 
 
Figura 1.18 - Tela de carregamento do Android Studio 3.5.1 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza com figuras geométricas em diversos tamanhos, no centro a palavra 
Android na cor verde seguida pela palavra Studio na cor cinza-claro. 
 
Uma janela com texto descritivo da instalação completa do Android Studio. O Android 
Studio será executado mediante o click do mouse sobre um dos botões: Back, se deseja voltar, Finish, 
se deseja finalizar a instalação e Cancel, se deseja cancelar a instalação. 
Surgirá a tela intitulada Android Studio Setup Wizard, siga as instruções para o Android 
Studio realizar o download de alguns componentes padrão do SDK. Para finalizar o processo, clique 
no botão finish. 
Em seguida, irá aparecer a tela intitulada Welcome to Android Studio, onde existem várias 
opções, selecione a opção Start a new Android Studio project. Esta opção irá conduzi-lo para o 
processo de configuração de um novo projeto Android. 
Finalizado o processo de configuração de um novo projeto Android, é exibida a janela 
principal do Android Studio (Figura 1.19). 
 
 
32 
 
Figura 1.19 - janela principal do Android Studio 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que na parte superior tem-se o menu textual, a barra de 
ferramentas e a barra de navegação. Logo em seguida, ao lado esquerdo, tem-se a barra de janela de ferramentas e ao 
lado direito, na cor preta, tem-se a janela do editor, . E na parte inferior tem-se outra janela de ferramenta e a barra de 
estado. 
Agora, iremos conhecer cada área destacada na janela principal do Android Studio (Figura 
2.13): 
1) Menu textual: onde os comandos e controles são exibidos de forma textual. 
2) Barra de ferramentas: é a barra de ícones com comandos. Permite executar diversas 
ações, incluindo a execução de aplicações e iniciar ferramentas do Android. 
3) Barra de navegação: é a barra que permite a navegação pelo projeto e a abertura de 
janelas para edição. Além de oferecer uma visualização mais compacta da estrutura visível na janela 
Project. 
4) Janela das ferramentas ou Janela Project: é a janela que dá o acesso a tarefas 
específicas, como gestão de projetos, controle de versão e etc. 
5) Barra de janela de ferramentas: é a barra que contém botões que permitem expandir 
ou recolher a janela de cada ferramenta. 
6) Janela do editor: é a janela que permite ao programador criar e modificar o código. 
 
 
33 
7) Outra janela de ferramentas: neste caso, o LogCat. A janela Logcat no Android Studio 
exibe mensagens do sistema, como quando ocorre uma coleta de lixo, e mensagens que você 
adicionou ao seu app com a classe Log. Ela exibe mensagens em tempo real e mantém um histórico 
para que você possa ver mensagens mais antigas. 
8) Barra de estado: é a barra que mostra o estado do projeto e do próprio IDE. Além de 
mostrar advertências e mensagens. 
 
1.6 Configuração do AVD no Android Studio 
O Android Virtual Device (AVD) é um emulador do Android Studio onde podemos testar 
as aplicações desenvolvidas. Então, é no AVD que configuramos e definimos as características de um 
smartphone ou tablet Android, Wear OS, Android TV ou um dispositivo Android Automotive OS que 
você queira simular no Android Emulator. Já o AVD Manager é uma interface que pode ser iniciada 
no Android Studio para ajudar a criar e gerenciar AVDs. 
Para abrir o AVD Manager, siga um dos procedimentos a seguir: 
Selecione o ícone AVD Manager na barra de ferramentas, na janela principal do 
Android Studio (Figura 1.20): 
 
O que é LogCat? 
Saiba mais: https://developer.android.com/studio/debug/am-logcat.html?hl=pt-
br 
https://developer.android.com/studio/debug/am-logcat.html?hl=pt-br
https://developer.android.com/studio/debug/am-logcat.html?hl=pt-br
 
 
34 
 
Figura 1.20 - Ícone AVD Manager na janela principal do Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que na parte superior tem-se o menu textual, a barra de 
ferramentas e a barra de navegação. Na barra de ferramentas, tem-se o ícone com um celular na cor branco e cinza-
escuro com uma cabeça de um robô na cor verde. 
Logo em seguida tem-se a barra de janela de ferramentas e a janela do editor. E na parte inferior tem-se outra janela de 
ferramenta e a barra de estado. 
 
Surgirá a tela intitulada Android Studio Device Manager (Figura 1.21), clique no botão 
+Create Virtual Device na parte inferior da caixa de diálogo. 
 
 
 
35 
 
Figura 1.21 - Configuração do Android Virtual Device 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro,com as figuras de um celular na cor cinza-claro, um relógio na 
cor cinza-claro, uma tv na cor cinza-claro e um carro na cor cinza-claro, com texto descritivo do Android Virtual Device. E 
logo abaixo, na parte inferior tem-se um botão com fundo cinza-claro com o texto create virtual device. 
 
A janela Select Hardware será exibida (Figura1.22). 
 
Figura 1.22 – Configuração do Hardware 
 
 
36 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro, com texto descritivo para a configuração do hardware. A 
configuração do hardware será confirmada mediante o click do mouse sobre um dos botões: Next, se deseja continuar a 
configuração e Cancel, se deseja cancelar a configuração. 
 
O AVD Manager já contém alguns perfis de hardware pré-carregados, nós iremos utilizar 
o perfil Nexus 5K. Para definir o perfil de hardware selecione primeiro a categoria Phone, após 
selecione o perfil Nexus 5K e para finalizar clique no botão Next 
A janela System Imagem será exibida 
 
Figura 1.23 – Configuração do Android Oreo 8.0. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro, com texto descritivo para a seleção da versão Android. A 
configuração do Android Oreo 8.0 será confirmada mediante o click do mouse sobre um dos botões: Next, se deseja 
continuar a configuração e Cancel, se deseja cancelar a configuração. 
 
Selecione a imagem de sistema com o Release Name Oreo e o Target Android 8.0 (Google 
Play), e clique em Next (Figura 1.23). 
A janela Verify Confiuration será exibida. 
 
 
37 
 
Figura 1.24 – Verificando a configuração do AVD. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro, com texto descritivo para a configuração do AVD. A 
configuração do AVD será confirmada mediante o click do mouse sobre um dos botões: Next, se deseja continuar a 
configuração e Cancel, se deseja cancelar a configuração. 
 
Altere as propriedades na Verify Configuration conforme as propriedades exibidas na 
Figura 1.24 e clique em Finish. 
 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
• Os conceitos básicos do Android. 
• Arquitetura da plataforma. 
• A evolução das “doces” versões do Android. 
• Instalar o JDK. 
 
Saiba mais sobre AVD 
Ficou curioso? Quer saber mais sobre o AVD e sua configuração? Então acesse: 
https://developer.android.com/studio/run/managing-avds.html?hl=pt-br 
https://developer.android.com/studio/run/managing-avds.html?hl=pt-br
 
 
38 
• Instalar e configurar do Android Studio. 
• Configurar do AVD no Android Studio. 
• Criar um projeto no Android Studio. 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
Agora, o próximo passo é mergulhar na competência 2, que trata das variáveis, dos tipos 
de dados e dos operadores. Esses elementos definem os limites de uma linguagem e determinam o 
tipo de tarefas às quais ela pode ser aplicada. 
 E então, vamos lá? 
 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a nossa primeira videoaula competência 1. 
 
 
39 
2. Competência 02 | Formatar uma Activity para o Desenvolvimento, 
Utilizando Operadores Matemáticos 
Caro estudante, vamos iniciar a segunda competência! Nesta competência, você irá 
conhecer as variáveis. Também irá conhecer com detalhes os tipos de dados e os operadores. Porém, 
antes disso, você vai aprender a criar um projeto Android. E em seguida, conhecerá a estrutura de 
um projeto Android e o processo de compilação e execução de um aplicativo. 
Vamos continuar! 
 
2.1 Conceitos Básicos 
2.1.1 Iniciando um novo projeto com Android Studio 
O Android Studio é um ambiente de desenvolvimento que facilita a criação de aplicativos 
Android em vários formatos, como celulares, tablets, TVs e dispositivos Wear. Neste caderno, vamos 
aprender a criar aplicativos para Android com a linguagem Java, focado no desenvolvimento mobile. 
Vamos criar o nosso projeto Android. Execute o Android Studio, no menu principal clique 
em File e selecione a opção New → New Project (Figura 2.1). 
 
 
 
 
40 
Figura 2.1 - Criando um novo projeto no Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que na parte superior tem-se o menu textual. Um Novo 
projeto é iniciado mediante o click do mouse sobre File → New → New Project, no menu textual. 
 
Surgirá a janela Create New Projet, onde será iniciado o processo de configuração de um 
novo projeto. Nesta janela é possível adicionar uma Activity ao projeto partindo de um 
template. Para escolher o seu template selecione primeiro Phone and Tablet, após selecione Empty 
Activity e clique no botão next (Figura 2.2). 
 
Figura 2.2 - Tela do assistente de criação de um novo projeto. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro, com texto descritivo para escolher seu projeto. Além de dez 
retângulos em formato paralelo representando os projetos a serem escolhidos. A escolha do projeto será confirmada 
mediante o click do mouse sobre um dos botões: Next, se deseja continuar a configuração e Cancel, se deseja cancelar a 
configuração. 
 
 
O que é um activity? 
Uma Activity é responsável por criar uma janela na qual é exibida a interface 
gráfica do aplicativo. 
https://www.androidpro.com.br/blog/desenvolvimento-android/activity-intro/ 
https://www.androidpro.com.br/blog/desenvolvimento-android/activity-intro/
 
 
41 
A janela Configure your project será exibida (Figura 2.3). 
 
Figura 2.3 - Definindo as configurações iniciais do projeto. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro, do lado esquerdo temos um retângulo representando o 
projeto escolhido. E do lado temos texto descritivo para configurar seu projeto: a palavra Name, e logo baixo uma caixa 
de texto. A palavra language, e logo abaixo uma caixa de seleção de texto. A palavra Minimum API level, e ao lado uma 
caixa de seleção de texto. A configuração do novo projeto será confirmada mediante o click do mouse sobre um dos 
botões: Cancel, se deseja cancelar a configuração, e Finish, quando estiver tudo pronto para criar o projeto. 
 
Nesta janela (Figura 2.3) você irá definir algumas configurações para criar um novo 
projeto. Vamos a configuração: 
1. Em Name digite o nome do seu projeto que aparecerá no aparelho. 
2. Em Package Name digite o nome do pacote, que define onde ficarão as classes do 
projeto. Por padrão, esse nome de pacote também se torna o ID do aplicativo, ou 
seja, não pode haver duas aplicações com o mesmo nome de pacote instalados no 
aparelho. 
3. Em Save location, especifique em que local do computador o seu projeto será salvo. 
 
 
42 
4. Em Language, devemos selecionar a linguagem de programação que o Android 
Studio irá usar ao criar um código. Todos os exemplos deste caderno serão 
desenvolvidos com a linguagem Java, por isso, no campo Language, selecione Java. 
5. Em Minimum API level devemos selecionar a versão mínima do Android que o 
aparelho deve possuir para executar a aplicação. Todos os exemplos apresentados 
neste caderno devem funcionar no Android Oreo, por isso, no campo Minimum API 
level, selecione API 26: Android 8.0 (Oreo). 
6. Se o tipo de projeto selecionado for compatível com experiências instantâneas por 
meio do Google Play Instant e você quiser ativá-las para a sua aplicação, marque a 
caixa ao lado de This project will support instant apps. O Google Play Instant não 
será utilizado nos exemplos apresentados neste caderno, desta forma desmarque a 
caixa ao lado de This project will support instant apps. 
7. Se você quiser que o projeto use bibliotecas AndroidX por padrão, que são 
substituições aprimoradas das Android Support Libraries, marquea caixa ao lado de 
Use AndroidX artifacts. A bibliotecas AndroidX não será utilizado nos exemplos 
apresentados neste caderno, desta forma desmarque a caixa ao lado de Use 
Androidx.* artifacts. 
 
Quando estiver tudo pronto para criar o projeto, clique em Finish. 
Depois que o projeto for criado, iremos visualizá-lo igual à da Figura 2.4. 
 
 
43 
 
Figura 2.4 – Novo projeto criado. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que na parte superior tem-se o menu textual, a barra de 
ferramentas e a barra de navegação. Logo em seguida tem-se a barra de janela de ferramentas e a janela do editor. E na 
parte inferior tem-se outra janela de ferramenta e a barra de estado. 
 
 
 
O que é Google Play Instant? 
O Google Play Instant é um serviço que permite que aplicativos sejam iniciados 
em dispositivos com Android 5.0 sem serem instalados, ou seja, sem realizar o 
download. Desta forma, você irá experimentar a aplicação Android antes de 
instalar. 
https://developer.android.com/topic/google-play-instant/overview?hl=pt-br 
https://www.techtudo.com.br/noticias/2019/08/o-que-e-google-instant-apps-
no-android-saiba-como-funciona-o-servico.ghtml 
 
 
O que é AndroidX? 
O AndroidX é o projeto de código aberto que a equipe Android usa para 
desenvolver, testar, incluir, controlar a versão e liberar bibliotecas no Jetpack. 
https://developer.android.com/jetpack/androidx/?hl=pt-br 
https://www.techtudo.com.br/noticias/2019/08/o-que-e-google-instant-apps-no-android-saiba-como-funciona-o-servico.ghtml
https://www.techtudo.com.br/noticias/2019/08/o-que-e-google-instant-apps-no-android-saiba-como-funciona-o-servico.ghtml
https://developer.android.com/jetpack/androidx/?hl=pt-br
 
 
44 
 
 
2.1.2 Estrutura de um projeto Android 
Depois de aprender a criar um projeto, vamos conhecer a estrutura de diretórios e 
arquivos gerados. No lado esquerdo é exibida a estrutura do projeto (Figura 2.5). 
 
Figura 2.5 – Estrutura de um projeto Android 
Fonte: Android Studio 3.5.2 
 
O que é Android Jetpack? 
O Android Jetpack é uma coleção de bibliotecas para facilitar o desenvolvimento 
de aplicativos Android. Esta coleção de bibliotecas ajudam o desenvolvedor a 
seguir as práticas mais recomendadas e simplifica tarefas complexas. 
https://developer.android.com/jetpack?hl=pt-br 
https://developer.android.com/jetpack?hl=pt-br
 
 
45 
Descrição da imagem: apresenta um fundo cinza-escuro em que tem-se a janela de ferramentas, com texto descritivo 
na cor branca. E do lado esquerdo temos a barra de janela de ferramentas contendo botões. 
 
Na parte superior, ao selecionar a opção Project, é exibida outra forma de visualização do 
projeto mais próxima que existe no sistema de arquivos. Alguns arquivos desta estrutura serão 
detalhados neste caderno, são eles: o AndroidManifest.xml, a Classe MainActivity e o arquivo de 
Layout activity_main.xml. 
 
2.1.2.1 Arquivo AndroidManifest.xml 
O arquivo AndroidManifest.xml é a base de um aplicativo e contém boa parte das 
informações que foram declaradas no assistente de criação do projeto (Figura 2.6). 
 
Figura 2.6 - Arquivo AndroidManifest.xml 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que na parte superior tem-se três botões: 
AndroidManifest.xml, MainActivity.java e activity_main.xml. Logo abaixo tem-se a janela do editor com o código do 
arquivo AndroidManifest.xml. 
 
Quando criamos um novo projeto, é gerada a classe MainActivity, a qual é configurada 
automaticamente como a activity inicial do projeto no AndroidManifest.xml. 
 
 
46 
Na tag <manifest> é declarado o pacote principal do projeto, utilizando a tag 
<package>. O <package> é o pacote identificador do projeto e deve ser único. 
 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="br.gov.pe.edu.helloworld"> //pacote único do projeto 
 
Na tag <application> são adicionadas algumas configurações do aplicativo. A propriedade 
andoid:label = “@string/app_name” informa o nome do aplicativo na tela inicial. 
 
android:label="@string/app_name" 
// Nome do aplicativo na tela inicial 
 
Todas as activities das aplicações que serão exibidas para o usuário devem estar 
declaradas no AndroidManifest.xml com a tag <activity>. 
 
<activity android:name=".MainActivity"> 
// Classe da activity que deve ser executada 
 <intent-filter> 
 <action android:name="android.intent.action.MAIN" /> 
// A ação MAIN indica que esta activity pode ser executada como a inicial 
do app 
 <category android:name="android.intent.category.LAUNCHER" /> 
 </intent-filter> 
</activity> 
 
2.1.2.2 Classe MainActivity 
A classe MainActivity foi configurada pelo wizard do Android Studio como a activity inicial, 
portanto pode ser executada pelo usuário ao clicar no ícone do aplicativo na tela Home do Android 
(Figura 2.7). 
 
 
47 
 
Figura 2.7 - Classe MainActivity. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que tem-se a janela do editor com o código do arquivo 
MainActivity. 
 
A classe MainActivity ou qualquer outra activity deve ser filha da classe 
android.app.activity: 
public class MainActivity extends AppCompatActivity { 
 
........ 
 
} 
 
 
 
 
Nota: Se no wizard de criação de projetos for selecionado para adicionar a 
biblioteca de compatibilidade, o Android Studio vai criar a classe MainActivity 
como filha de AppCompactActivity. A classe AppCompactActivity é uma 
subclasse de Activity. 
 
 
48 
A classe android.app.Activity representa uma tela do aplicativo, sendo responsável por 
controlar os estados e os eventos da tela. Portanto para cada tela do aplicativo você criará uma classe-
filha de android.app.Activity. 
 
2.1.2.3 Arquivo de Layout activity_main.xml 
No Android é possível criar o layout da tela em arquivos XML ou utilizar a API via código. 
Porém, o mais recomendado é criar o layout em XML, para separar a lógica de negócios da camada 
de apresentação. Uma view pode ser um simples componente gráfico como botão, check box, 
imagem e etc ou uma view complexa, atuando como um gerenciador de layout, que pode conter 
várias views-filhas. 
A seguir podemos visualizar o código do arquivo activity_main.xml (Figura 2.8): 
 
Figura 2.8 - Arquivo activity_main.xml. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que tem-se a janela do editor com o código do arquivo 
activity_main.xml. 
 
No código existem as tags <ConstraintLayout> e <TextView> que correspondem às classes 
ConstraintLayout e TextView, respectivamente. A classe ConstraintLayout é filha da classe 
ViewGroup. E as classes ViewGroup e TextView são filhas da classe android.view.view do Android. A 
 
 
49 
classe ConstraintLayout é um gerenciador de layout da plataforma Android. Esta classe é similar a 
classe LinearLayout, ou seja, possui as melhores características do LinearLayout. Porém, permite a 
criação de layouts grandes e complexos. Neste exemplo a tag <TextView> está contida dentro da tag 
<ConstraintLayout> justamente para compor a interface da tela. 
 
 
 
 
 
 
 Saiba mais sobre a classe LinearLayout 
https://developer.android.com/guide/topics/ui/layout/linear?hl=pt-BR 
 
Saiba mais sobre a classe ConstraintLayout 
https://developer.android.com/reference/android/support/constraint/Constrain
tLayout 
https://medium.com/collabcode/implementando-telas-no-android-com-
constraint-layout-13a90e44622f 
https://imasters.com.br/android/como-usar-o-constraint-layout-no-android 
 
 
Saiba mais sobre a classe TextView 
https://developer.android.com/reference/android/widget/TextView.html?hl=pt-
BR 
 
Saiba mais sobre a classe ViewGroup 
https://developer.android.com/reference/android/view/ViewGroup 
Saiba mais sobre a classe View 
https://developer.android.com/reference/android/view/View.html 
SaibaComo usar Android Views 
https://www.androidpro.com.br/blog/desenvolvimento-android/android-views-
intro/ 
https://developer.android.com/guide/topics/ui/layout/linear?hl=pt-BR
https://developer.android.com/reference/android/support/constraint/ConstraintLayout
https://developer.android.com/reference/android/support/constraint/ConstraintLayout
https://medium.com/collabcode/implementando-telas-no-android-com-constraint-layout-13a90e44622f
https://medium.com/collabcode/implementando-telas-no-android-com-constraint-layout-13a90e44622f
https://imasters.com.br/android/como-usar-o-constraint-layout-no-android
https://developer.android.com/reference/android/widget/TextView.html?hl=pt-BR
https://developer.android.com/reference/android/widget/TextView.html?hl=pt-BR
https://developer.android.com/reference/android/view/ViewGroup
https://developer.android.com/reference/android/view/View.html
https://www.androidpro.com.br/blog/desenvolvimento-android/android-views-intro/
https://www.androidpro.com.br/blog/desenvolvimento-android/android-views-intro/
 
 
50 
2.1.3 Processo de compilação e execução de um projeto Android 
Para compilar e executar seu projeto no Android Studio, selecione Run → Run na barra 
de menus ou clique em Run na barra de ferramentas (Figura 2.9). Uma terceira opção para compilar 
e executar o novo projeto é selecionar AVD Mananger na barra de ferramentas. Será exibida a tela 
Available Virtual Devices e no campo Actions selecione Run (Figura 2.10). 
 
Figura 2.9 – compilando e executando um projeto no Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que na parte superior tem-se o menu textual. O processo 
de compilar e executar o novo projeto é iniciado mediante o click do mouse sobre Run → Run, no menu textual. 
 
 
 
51 
 
Figura 2.10 – compilando e executando um projeto no AVD Mananger do Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que na parte superior tem-se o menu textual. O processo 
de compilar e executar o novo projeto é iniciado mediante o click do mouse sobre AVD Mananger na barra de 
ferramentas. Será exibida a tela Available Virtual Devices e no campo Actions selecione Run. 
 
O resultado deve ficar igual ao da Figura 2.11. 
 
 
52 
 
Figura 2.11 – Resultado. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: apresenta um fundo cinza-escuro em que na parte central tem-se um celular com a palavra Hello 
World. 
 
 
2.2 Variáveis 
As aplicações podem ser vistas como funções que devem ser aplicadas a certos dados de 
entrada com objetivo de produzir determinados resultados. Portanto, todas as aplicações utilizam 
dados. 
Mas, para que possamos transformar o dado em algo útil, temos que primeiro guardá-los. A estrutura 
que guarda um valor para ser utilizados depois é a variável. 
 Monitorar o processo de compilação 
https://developer.android.com/studio/run#gradle-console 
https://developer.android.com/studio/run#gradle-console
 
 
53 
Talvez nenhuma outra estrutura seja tão importante para uma linguagem de programação quanto 
a atribuição de um valor a uma variável. Uma variável é um local nomeado na memória ao qual pode ser 
atribuído um valor. E o valor de uma variável é alterável e não fixo. 
Por exemplo, vamos criar duas variáveis chamadas variavel01 e variavel02 (Figura 2.12): 
 
public class MainActivity extends AppCompatActivity { 
 
 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 
 int variavel01; //esta instrução declara uma variável 
 
 int variavel02; //esta instrução declara uma variável 
 
 
 
 variavel01 = 7; //esta instrução atribui 7 a variavel01 
 
 variavel02 = variavel01 + 1; //esta instrução atribui (7 + 1) a 
variavel02 
 
 } 
 
} 
Figura 2.12 – Declaração de variáveis. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando as duas variáveis: variavel01 e variavel02 
 
 
Nota: Em Java todas as variáveis devem ser declaradas antes de serem usadas. 
 
Saiba mais sobre variáveis 
https://www.embarcados.com.br/variaveis-e-constantes/ 
Saiba mais sobre variáveis na linguagem de programação Java 
https://www.devmedia.com.br/java-variaveis-e-constantes/38311 
https://www.embarcados.com.br/variaveis-e-constantes/
https://www.devmedia.com.br/java-variaveis-e-constantes/38311
 
 
54 
2.3 Tipo de dados 
Os tipos de dados são especialmente importantes em Java porque essa é uma linguagem 
fortemente tipada. Ou seja, todas as operações têm a compatibilidade de seus tipos verificada pelo 
compilador. Para que seja possível fazer a verificação cuidadosa dos tipos, todas as variáveis, 
expressões e valores têm um tipo. Não há o conceito de uma variável sem tipo. 
 
2.3.1 Tipo de dado primitivo 
Na base de Java, existem oito tipos de dados primitivos, também chamados de 
elementares ou simples, mostrados na Tabela 2.1. O termo primitivo é usado para indicar que esses 
tipos são valores binários simples. 
Tipo Significado 
Boolean Representa os valores 
verdadeiro/falso. 
Byte Inteiro de 8 bits. 
Char Caractere. 
Double Ponto flutuante de precisão dupla. 
Int Ponto flutuante de precisão 
simples. 
Long Inteiro longo. 
Short Inteiro curto. 
Tabela 2.1 - Tipo de dados primitivos de Java 
Fonte: o autor 
 
 
Nota: Todos os outros tipos de dados de Java são construídos a partir dos tipos 
primitivos. 
 
 
55 
2.3.2 Tipo de dado lógico 
São também chamados de dados booleanos. O tipo boolean representa os valores 
verdadeiro/falso. Java define os valores verdadeiro e falso usando as palavras reservadas true e false. 
Desta forma, uma variável ou expressão de tipo boolean terá um desses valores. 
Aqui está um exemplo que demonstra o tipo boolean (Figura 2.13): 
 
public class MainActivity extends AppCompatActivity { 
 
 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 boolean t; //esta instrução declara uma variável do tipo boolean 
 
 t = true; //esta instrução atribui true a variável t 
 
 
 
 } 
 
} 
Figura 2.13 – Declaração da variável boolean. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando variáveis do tipo boolean. 
 
2.3.3 Tipo de dado numérico Inteiros 
Java define quatro tipos de inteiros, mostrados na Tabela 2.2 abaixo: 
Tipo Tamanho em bits Intervalo 
Byte 8 -128 a 127 
Short 16 -32.768 a 32.767 
Int 32 -2.147.483.648 a 2.147.483.647 
Long 64 -9.223.372.036.854.775.808 a -
9.223.372.036.854.775.807 
 
 
56 
Tabela 2.2 - Tipo de dados inteiros de Java 
Fonte: o autor 
Todos os tipos inteiros são valores de sinal positivo e negativo. Java não suporta inteiros 
sem sinal, ou seja, somente positivos. O tipo inteiro mais usado é o Int. Quando for preciso usar um 
inteiro com um intervalo maior do que o de Int use Long. Por exemplo, aqui está um programa que 
calcula soma de dois valores inteiros (Figura 2.14): 
 
public class MainActivity extends AppCompatActivity { 
 
 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 
 int variavel01; // esta instrução declara uma variável 
 
 int variavel02; // esta instrução declara uma variável 
 
 int Soma; // esta instrução declara uma variável 
 
 
 
 variavel01 = 7; // esta instrução atribuiu 7 a variavel01; 
 
 variavel02 = variavel01 + 1; // esta instrução atribuiu 7 + 1 a 
variavel02; 
 
 Soma = variavel01 + variavel02; // esta instrução atribuiu (7 + 8) aSoma; 
 
 
 
 TextView c = (TextView) findViewById(R.id.campo); 
 
 c.setText("O resultado da soma é: " + Soma); 
 
 
 
 } 
 
} 
Figura 2.14 – Declaração das variáveis int. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando variáveis do tipo int. 
 
 
57 
 
Aqui está a saída gerada por esse programa: 
O resultado da soma é: 15 
 
2.3.4 Tipo de dado numérico de ponto flutuante 
Representam números fracionários. Há dois tipos de ponto flutuante, float e double, que 
representam números de precisão simples e dupla, respectivamente. O tipo float tem 32 bits e o tipo 
double tem 64 bits. Dos dois o double é o mais usado. 
Por exemplo, aqui está um programa que calcula a média de dois valores de ponto 
flutuante (Figura 2.15): 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 
 double variavel01; 
 
 double variavel02; 
 
 double Soma; 
 
 double Media; 
 
 
 
 variavel01 = 7.5; 
 
 variavel02 = 9.8; 
 
 Soma = variavel01 + variavel02; 
 
 Media = Soma/2; 
 
 
 TextView c = (TextView) findViewById(R.id.campo); 
 
 
 
58 
 c.setText("O resultado da soma é " + Media); 
 
 
 } 
 
} 
Figura 2.15 – Declaração das variáveis double. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando variáveis do tipo double. 
 
Aqui está a saída gerada por esse programa: 
o resultado da média é: 8.6 
 
2.3.5 Tipo de dado de caractere 
Em Java, o tipo de dado de caractere guarda um número que representa um caractere. 
Java usa Unicode. O Unicode define um conjunto de caracteres que pode representar todos os 
caracteres encontrados em todos os idiomas humanos. Char é o tipo de 16 bits sem sinal com um 
intervalo que vai de 0 a 65.536, podemos armazenar apenas um caractere neste tipo de variável. 
Aqui está um exemplo que demonstra o tipo char (Figura 2.16): 
 
public class MainActivity extends AppCompatActivity { 
 
 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 char x; 
 x = 'X'; 
 
 TextView c = (TextView) findViewById(R.id.campo); 
 c.setText("A variável x contém: " + x); 
 
 
 } 
 
} 
 
 
59 
Figura 2.16 – Declaração da variável char. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando variáveis do tipo char. 
 
Aqui está a saída gerada por esse programa: 
A variável x contém: X 
 
2.3.6 Tipo de dado complexo: String 
Um dos tipos de dados Java mais importantes é o tipo String. String define e dá suporte 
a strings de caracteres. Em Java, Strings são objetos. Por exemplo, na instrução: 
 
System.out.println(“Em Java, Strings são objetos”); 
 
O string “Em Java, Strings são objetos” é convertido automaticamente em um objeto 
String por Java. É bom ressaltar, no entanto, que a classe String é muito grande e aqui só a 
examinaremos superficialmente. 
Você pode construir um String como construiria qualquer outro tipo de objeto: usando 
new e chamando o construtor de String. Por exemplo: 
String game = new String (“Death Stranding”); 
 
Essa linha cria um objeto String chamado game que contém o string de caracteres “Death 
Stranding”. Você também pode construir um String a partir de outro. Por exemplo: 
String jogo = new String (“Death Stranding”); 
 
String kojimaProductions = new String (jogo); 
 
 
Saiba mais sobre tipos de dados 
https://www.embarcados.com.br/tipos-de-dados/ 
 
Saiba mais sobre tipos de dados primitivos em Java 
http://www.bosontreinamentos.com.br/java/tipos-de-dados-primitivos-em-
java/ 
https://www.embarcados.com.br/tipos-de-dados/
http://www.bosontreinamentos.com.br/java/tipos-de-dados-primitivos-em-java/
http://www.bosontreinamentos.com.br/java/tipos-de-dados-primitivos-em-java/
 
 
60 
Após essa sequência ser executada, objeto String chamado kojimaProductions também 
irá conter o string de caracteres “Death Stranding”. 
Outra maneira de construir um String é: 
 
String melhorJogo = new String ("Sekiro: Shadows Die Twice" é eleito o Game do 
Ano no Game Awards 2019”); 
 
 
Nesse caso, melhorJogo é inicializada com a sequência de caracteres "Sekiro: Shadows 
Die Twice" é eleito o Game do Ano no Game Awards 2019”. 
Você também pode concatenar strings, ou seja, realizar a junção de uma string com outra. 
Por exemplo: 
String jogo = new String (“Death Stranding”); 
 
 
String estudio= new String (“Kojima Productions”); 
 
 
 
String concatenacao = jogo + “ é um jogo eletrônico de ação desenvolvido pelo 
estúdio japonês “ +estudio; 
 
 
 
Após essa sequência ser executada, objeto String chamado concatenacao irá conter o 
string de caracteres “Death Stranding é um jogo eletrônico de ação desenvolvido pelo estúdio 
japonês Kojima Productions”. Na operação concatenação, utilizamos o símbolo de soma (+) para 
juntar strings. 
 
 
 Saiba mais sobre os tipos de dado complexo String em Java 
https://www.devmedia.com.br/trabalhando-com-string-string-em-java/21737 
https://www.devmedia.com.br/trabalhando-com-string-string-em-java/21737
 
 
61 
2.4 Separadores 
Java define quatro separadores, mostrados na Tabela 2.3 abaixo: 
 
Separador Descrição 
Ponto e Vírgula 
“;” 
é usado para terminar uma instrução. 
Parênteses ‘()’ Separa as expressões. 
Colchetes ‘[]’ são utilizados para indicar/separar os índices de 
vetores. 
Chaves ‘{}’ Separa blocos de programação. 
Tabela 2.3 - Separadores. 
Fonte: o autor 
Na linguagem de programação Java, o ponto e vírgula é um separador que é usado para 
terminar uma instrução. Ou seja, cada instrução individual deve ser finalizada com um ponto e vírgula. 
Um bloco é um conjunto de instruções conectadas logicamente que são delimitados por chaves de 
abertura e fechamento. Ou seja, o início e o fim de cada bloco é indicado pela chave de abertura e 
pela chave fechamento. 
 
2.5 Operadores 
Um operador é um símbolo que solicita ao compilador que execute uma operação 
matemática ou lógica específica. Java tem quatro classes gerais de operadores: aritmético, bitwise, 
relacional e lógico. Nós iremos conhecer agora os operadores aritmético, relacional e lógico. 
 
 Saiba mais sobre Separadores 
https://pt.wikibooks.org/wiki/Java/Operadores#Separadores 
https://pt.wikibooks.org/wiki/Java/Operadores#Separadores
 
 
62 
2.5.1 Operadores Aritméticos 
Os operadores aritméticos definidos por Java podem ser visualizados a seguir, na Tabela 
2.4 : 
Operador Significado 
+ Adição 
- Subtração 
* Multiplicação 
/ Divisão 
% Módulo 
++ Incremento 
-- Decremento 
Tabela 2.4 - Operadores aritméticos. 
Fonte: o autor 
Os operadores soma, subtração, multiplicação e divisão funcionam em Java da mesma 
maneira que qualquer outra linguagem de programação. Eles podem ser aplicados a qualquer tipo de 
dado numérico. E também podem ser usados em objetos do tipo char. 
Em Java o operador % (módulo ou resto) gera o resto de uma divisão. Pode ser aplicado 
a tipos inteiros e de ponto flutuante. Por exemplo, 10 % 3 é igual a 1. 
Aqui está um exemplo que demonstra o operador módulo (Figura 2.17): 
 
public class MainActivity extends AppCompatActivity { 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 
 int modulo; 
 
 modulo = 10 % 3; 
 
 
 
 
63 
 TextView c = (TextView) findViewById(R.id.campo); 
 
 c.setText("A variável modulo contém o valor: " + modulo);} 
 
} 
Figura 2.17 – Demonstração do operador módulo. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando o operador módulo. 
 
Aqui está a saída gerada por esse programa: 
A variável modulo contém: 1 
 
2.5.1.1 Incremento e decremento 
Em Java, o operador de incremento adiciona 1 ao seu operando e o operador de 
decremento subtrai 1. Por exemplo: 
 
i = i + 1; 
 
é o mesmo que: 
i++; 
 
e 
i = i - 1; 
 
é o mesmo que: 
i--; 
 
Tanto o operador de incremento quanto o operador de decremento podem preceder 
(prefixar) ou vir após (posfixar) o operando. Por exemplo: 
i = i + 1; 
 
pode ser escrito como: 
++i; //forma prefixada 
 
 
64 
 
ou como: 
i++; //forma posfixada 
 
Quando um operador de incremento ou decremento precede seu operando, Java executa 
a operação correspondente antes de obter o valor do operando a ser usado pelo resto da expressão. 
Se o operador vier após o seu operando, Java obterá o valor do operando antes dele ser incrementado 
ou decrementado. Por exemplo nas Figuras 2.18 e Figura 2.19 com a demonstração do operador 
módulo incrementado ou decrementado: 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 int x; 
 
 int y; 
 
 
 x = 10; 
 
 y = ++x; // Java executa a operação correspondente antes de obter o valor 
do operando 
 
 
 TextView c = (TextView) findViewById(R.id.campo); 
 
 c.setText("O resultado de y é: " + y); 
 
 } 
 
} 
Figura 2.18 – Demonstração do operador de incremento de forma prefixada. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando o operador de incremento de forma 
prefixada. 
 
Aqui está a saída gerada por esse programa: 
O resultado de y é: 11 
 
 
65 
 
public class MainActivity extends AppCompatActivity { 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 
 int x; 
 
 int y; 
 
 
 x = 10; 
 
 y = x++; // Java obterá o valor do operando antes dele ser incrementado 
 
 
 TextView c = (TextView) findViewById(R.id.campo); 
 
 c.setText("O resultado de y é: " + y); 
 
 
 } 
 
} 
Figura 2.19 – Demonstração do operador de incremento de forma posfixada. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando o operador de incremento de forma 
posfixada. 
Aqui está a saída gerada por esse programa: 
O resultado de y é: 10 
Nos dois casos, x é igual a 11. A diferença é quando isso ocorre. 
 
 
 Saiba mais sobre as operações aritméticas 
https://www.embarcados.com.br/operacoes-aritmeticas/ 
https://www.embarcados.com.br/operacoes-aritmeticas/
 
 
66 
2.5.2 Operadores Relacionais e Lógicos 
O operador relacional se refere aos relacionamentos que os valores podem ter uns com 
os outros. Os operadores relacionais são mostrados na Tabela 2.5 abaixo: 
Operador Significado 
== Igual a 
!= Diferente de 
> Maior que 
< Menor que 
>= Maior ou igual a 
<= Menor ou igual a 
Tabela 2.5 - Operadores relacionais. 
Fonte: o autor 
O operador lógico se refere às maneiras como os valores verdadeiro e falso podem estar 
conectados. Estes, fazem operações com os operandos do tipo boolean e o resultado da operação 
lógica é também de tipo boolean. Já que os operadores relacionais produzem resultados verdadeiros 
ou falsos, com frequência trabalham com os operadores lógicos. Logo, o resultado dos operadores 
relacionais e lógicos é um valor boolean. Os operadores lógicos são mostrados na Tabela 2.6 abaixo: 
 
Operador Significado 
& AND 
| OR 
^ XOR (exclusive OR) 
|| OR de curto-circuito 
&& AND de curto-circuito 
! NOT 
Tabela 2.6 - Operadores lógicos. 
Fonte: o autor 
Os operadores lógicos &, |,^ e ! dão suporte às operações lógicas básicas AND, OR, XOR 
e NOT. Observe na Tabela 2.7 os resultados das comparações. 
 
 
67 
 
a b a & b a | b a^b !a 
true true true true false false 
true false false true true false 
false treu false true true true 
false false false false false true 
Tabela 2.7 - Tabela verdade. 
Fonte: o autor 
Na tabela acima, é mostrado o resultado das operações lógicas básicas AND, OR, XOR 
(exclusive OR) e NOT. Na operação exclusive OR, pode-se observar que o resultado mostrado é 
diferente do OR. Isso ocorre porque o resultado de uma operação exclusive OR é verdadeiro quando 
exatamente um, e apenas um, operando é verdadeiro. 
 
 
2.5.3 Operadores de atribuição 
O operador de atribuição é o sinal de igual simples, =. Esta é a sua forma geral em Java: 
variavel = expressao; 
Onde, o tipo de variavel deve ser compatível com o tipo de expressao. 
O operador de atribuição permite a criação de uma cadeia de atribuições. Por exemplo: 
int a, b, c; 
 
a = b = c = 8; //configura a, b e c com o valor 8. 
 
 Saiba mais sobre as operações relacionais e lógicas 
https://www.embarcados.com.br/operacoes-relacionais-e-logicas/ 
https://www.embarcados.com.br/operacoes-relacionais-e-logicas/
 
 
68 
2.5.3.1 Operadores de atribuições abreviadas 
As atribuições abreviadas são operadores especiais que simplificam a codificação de 
certas instruções de atribuição. Por exemplo: 
x = x + 8; 
pode ser escrita, com o uso da atribuição abreviada em Java, como: 
x += 8; 
O par de operadores += solicita ao compilador que atribua a x o valor de x mais 8. 
Observe na Tabela 2.8 os operadores aritméticos de atribuição abreviada: 
Significado Par de Operadores 
Soma x += 8; 
Subtração x -= 8; 
Multiplicação x *= 8; 
Divisão x /= 8; 
Módulo x %= 8; 
Tabela 2.8 - Operadores de atribuição abreviada 
Fonte: o autor 
Já que esses operadores combinam uma operação com uma atribuição, são formalmente 
chamados de operadores de atribuição composta. 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
• Criar um novo projeto com o Android Studio. 
• A estrutura de um projeto Android. 
• O processo de compilação e execução de um projeto Android. 
• Variáveis 
• Tipos de dados 
• Operadores 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
 
69 
 
Agora, o próximo passo é mergulhar na competência 3, que trata do desenvolvimento de 
instruções de controle de programa 
Vamos juntos? 
 
 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a nossa primeira videoaula competência 2. 
 
 
70 
3. Competência 03 | Formatar uma Activity para o desenvolvimento de 
instruções de controle de programa 
 
Caro estudante, vamos iniciar a terceira competência! Nesta competência, você irá 
conhecer as estruturas de controle condicional e as estruturas de repetição. Você aprenderá as 
instruções que controlam o fluxo de execução do programa: as instruções de seleção, que incluem as 
estruturas if e switch, e as instruções de interação, que incluem os laços for, while e do-while. 
Vamos continuar! 
 
3.1 Estruturas de controle condicional 
3.1.1 Estrutura if 
Podemos executar seletivamente parte de um programa com o uso da instrução 
condicional: a instrução if. A instrução if da linguagem Java funciona de maneira semelhante à 
instrução if de qualquer outra linguagem. Sua forma mais simples é mostrada abaixo: 
if (condição) instrução; 
 
A forma geral de if, usando blocos de instruções é: 
 
if (condição) 
{ 
Instrução ou sequência de instruções 
} 
 
A condição é uma expressão booleana. Se a condição for verdadeira, a instrução (ou o 
bloco de instruções)será executada. Se a condição for falsa, a instrução será ignorada. 
Para demonstrar if, iremos criar e desenvolver um jogo de adivinhação simples. Na 
primeira versão do jogo, o programa pede ao jogador um número entre 0 e 9. Se o jogador pressionar 
o número correto no teclado, o programa responderá exibindo a mensagem “O número da 
adivinhação está certo”. O código pode ser visualizado na Figura 3.1 abaixo: 
 
 
71 
 
 
Figura 3.1 - Estrutura if no Android Studio. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando a estrutura if. 
 
Esse programa interage com o jogador e então lê um número no teclado. Usando uma 
instrução if, ele compara o número com a resposta que, nesse caso, é 7. Se 7 for inserido, a mensagem 
“O número da adivinhação está certo!” será exibida. 
 
3.1.1.1 Estrutura if-else 
A instrução if-else é uma instrução de seleção dupla, porque seleciona entre duas ações 
diferentes (ou bloco de ações), diferentemente da instrução if que seleciona ou ignora uma única 
ação (ou bloco de instruções). A forma completa da instrução if-else é: 
 
if (condição) instrução; 
else instrução; 
 
Onde as ações de if e else são instruções individuais. As ações tanto de if quanto de else 
pode ser uma única instrução ou ser um bloco de instruções. A forma geral de if-else, usando blocos 
de instruções é: 
 
 
 
72 
if (condição) 
{ 
Instrução ou sequência de instruções 
} 
else 
{ 
Instrução ou sequência de instruções 
} 
 
Se a expressão condicional for verdadeira, a ação de if será executada, caso contrário, a 
ação de else será executada. Nunca ambos serão executados. 
 
Na segunda versão do jogo, iremos usar else para exibir a mensagem “O número da 
adivinhação está errado” quando o número errado é escolhido. O código pode ser visualizado na 
Figura 3.2 abaixo: 
 
 
 
Figura 3.2 - Estrutura if-else no Android Studio. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando a estrutura if-else. 
 
Esse programa interage com o jogador e então lê um número no teclado. Usando uma 
instrução if, ele compara o número com a resposta que, nesse caso, é 7. Se 7 for inserido, a mensagem 
 
 
73 
“O número da adivinhação está certo” será exibida. Caso contrário, a cláusula else será executado, 
e a mensagem “O número da adivinhação está errado” será exibida. 
 
 
3.1.1.2 Estrutura if-else aninhada 
Um if aninhado é uma instrução if que é a ação de outro if ou else. Em Java, uma instrução 
else será sempre referente à instrução if mais próxima que estiver dentro do mesmo bloco e ainda 
não estiver associada a um else. A forma geral de if aninhada, usando blocos de instruções é: 
 
if (condição) 
{ 
if (condição) 
{ 
Instrução ou sequência de instruções 
} 
else 
{ 
Instrução ou sequência de instruções 
} 
 
} 
else 
{ 
Instrução ou sequência de instruções 
} 
 
Se a expressão condicional for verdadeira, a ação de if será executada, 
consequentemente, a instrução if-else associada a ela será executada. Caso contrário, a ação de else 
será executada. 
 
Na terceira versão do jogo, iremos usar um if-else aninhado para melhorar ainda mais o 
jogo de adivinhação. Esse acréscimo irá fornecer um palpite exibindo ou a mensagem “A resposta é 
um número menor!” caso o número seja maior que 7, ou a mensagem “A resposta é um número 
maior!” caso o número seja menor que 7. O código pode ser visualizado na Figura 3.3 abaixo: 
 
 
 
74 
public class MainActivity extends AppCompatActivity { 
 
 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 
 TextView c = (TextView) findViewById(R.id.campo); 
 
 
 
 int adivinhacao = 5; 
 
 int resposta = 9; 
 
 
 
 if (adivinhacao == resposta){ 
 
 
 
 c.setText("O número da adivinhação está certo"); 
 
 
 
 } else { 
 
 
 
 //Este é um if-else aninhado 
 
 if (adivinhacao > resposta){ 
 
 c.setText("a resposta é um número menor"); 
 
 } else { 
 
 c.setText("a resposta é um número maior"); 
 
 } 
 
 } 
 
 
 
 } 
 
} 
 
 
75 
 Figura 3.3 - Estrutura if-else aninhado no Android Studio. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando a estrutura if-else aninhado. 
 
Esse programa interage com o jogador e então lê um número no teclado. Usando uma 
instrução if, ele compara o número com a resposta que, nesse caso, é 7. Se 7 for inserido, a mensagem 
“O número da adivinhação está certo” será exibida. Caso contrário, else será executado. Na a 
cláusula else, será executado o if-else aninhado, o qual irá fornecer um palpite. 
 
 
3.1.2 Estrutura Switch 
A instrução switch fornece uma ramificação com vários caminhos. Logo, ela permite que 
o programa faça uma seleção entre várias alternativas. Funciona desta forma: o valor de uma 
expressão é verificado sucessivamente em uma lista de constantes. Quando uma ocorrência é 
encontrada, a sequência de instruções associada a essa ocorrência é executada. A forma geral da 
estrutura switch é: 
 
switch(expressão){ 
case constante1: 
sequência de instruções 
break; 
case constante2: 
sequência de instruções 
break; 
case constante3: 
sequência de instruções 
break; 
. 
. 
. 
default: 
sequência de instruções 
} 
 
A sequência de instruções default é executada quando nenhuma constante case coincide 
com a expressão. 
 
 
 
76 
Para demonstrar switch, iremos criar e desenvolver um jogo simples para RPGs. Neste 
jogo, o programa irá pedir ao jogador um número entre 1 e 6, que corresponde a um dado de seis 
faces, e irá informar uma classe de personagem. Assim, ao pressionar um número, o programa 
responderá exibindo uma mensagem com a face do dado escolhida e uma mensagem com a classe 
que será atribuída ao personagem do jogador no RPG. O código pode ser visualizado na Figura 3.4 
abaixo: 
 
public class MainActivity extends AppCompatActivity { 
 
 
 
 @Override 
 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 
 setContentView(R.layout.activity_main); 
 
 
 TextView c = (TextView) findViewById(R.id.campo); 
 
 
 int faceDado = 2; 
 
 
 
 switch (faceDado){ 
 
 case 1: 
 
 c.setText("O número escolhido da face do dado foi: " + faceDado); 
 
 c.setText("Wow! A classe do seu personagem é: Guerreiro"); 
 
 break; 
 
 case 2: 
 
 c.setText("O número escolhido da face do dado foi: " + faceDado); 
 
 c.setText("Wow! A classe do seu personagem é: Berserker"); 
 
 break; 
 
 case 3: 
 
 c.setText("O número escolhido da face do dado foi: " + faceDado); 
 
 c.setText("Wow! A classe do seu personagem é: Assassino"); 
 
 
 
77 
 break; 
 
 case 4: 
 
 c.setText("O número escolhido da face do dado foi: " + faceDado); 
 
 c.setText("Wow! A classe do seu personagem é: Ninja"); 
 
 break; 
 
 case 5: 
 
 c.setText("O número escolhido da face do dado foi: " + faceDado); 
 
 c.setText("Wow! A classe do seu personagem é: Arqueiro"); 
 
 break; 
 
 case 6: 
 
 c.setText("O número escolhido da face do dado foi: " + faceDado); 
 
 c.setText("Wow! A classe do seu personagem é: Mago"); 
 
 break; 
 
 default: 
 
 c.setText("What!?! Não lembra os valores de um D6?"); 
 
 } 
 } 
} 
 
Figura 3.4 - Estruturaswitch no Android Studio. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando a estrutura switch. 
 
Tecnicamente, a instrução break é opcional. Quando encontrada dentro da sequência de 
instruções de um case, a instrução break faz o fluxo do programa sair da instrução switch e continuar 
na próxima instrução externa. 
 
 
 
 
78 
3.2 Estruturas de repetição 
3.2.1 Estrutura For 
Podemos executar repetidamente uma sequência de código criando um laço. Java 
fornece um grupo poderoso de estrutura de laço. A que examinaremos primeiro é o laço for. A forma 
mais simples do laço for é mostrada a seguir: 
 
for(inicialização; condição; interação) instrução; 
 
Para a repetição de um bloco, a forma geral é: 
 
for(inicialização; condição; interação) 
{ 
Instrução ou sequência de instruções 
} 
 
Onde: 
• A inicialização do laço define uma variável de controle de laço com um valor inicial. 
• A condição é uma expressão booleana que testa a variável de controle de laço. Se o 
resultado desse teste for verdadeiro, o laço for continuará a iterar. Se for falso, o laço 
será encerrado. 
• A interação determina como a variável de laço é alterada sempre que o laço itera. 
 
Para demonstrar for, iremos inicialmente pensar em como você irá guiar o seu 
personagem no mundo. Onde, o laço de repetição irá fazer seu o personagem andar x passos em 
uma direção ou y passos em outra direção. Por exemplo, como podemos guiar o personagem para 
“andar cinco passos para o leste”? O código pode ser visualizado na Figura 3.5 abaixo: 
 
 
 
79 
 
 
Figura 3.5 – Estrutura for no Android Studio. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando a estrutura for. No lado esquerdo tem-se um 
celular com as palavras PASSO 0L, PASSO 1L, PASSO 2L, PASSO 3L. 
 
Nesse exemplo, passo é a variável de controle do laço. Ela é configurada com zero na 
parte de inicialização do for. No começo de cada iteração (inclusive a primeira), o teste condicional 
passo < 4 é executado. Se o resultado desse teste for verdadeiro, serão executadas as instruções 
b.setText() e l.addView(), e então a parte de iteração do laço, que aumentará passo em uma unidade. 
Esse processo continua até o teste condicional ser falso, momento em que a execução é retomada 
no final do laço. 
 
3.2.2 Estrutura While 
Outro laço Java é o while. A forma mais simples do laço while é mostrada a seguir: 
while (condição) instrução; 
 
Para a repetição de um bloco, a forma geral é: 
 
Inicialização; 
while (condição) 
{ 
 Instrução ou sequência de instruções; 
interação; 
} 
 
Onde: 
 
 
80 
• A inicialização do laço define uma variável de controle de laço com um valor inicial. 
• A condição pode ser qualquer expressão booleana válida. O laço se repete enquanto 
a condição é verdadeira. Quando a condição se torna falsa, o controle do programa 
passa para a linha imediatamente posterior ao laço. 
• Enquanto a condição for verdadeira, a instrução (ou um bloco de instruções) será 
executada. 
• A interação determina como a variável de controle do laço é alterada sempre que o 
laço itera. 
 
Para demonstrar o laço while, iremos novamente guiar o seu personagem no 
mundo. Onde, o laço de repetição irá fazer seu o personagem andar x passos em uma direção ou y 
passos em outra direção. Por exemplo, como podemos guiar o personagem para “andar quatro 
passos para o oeste”? O código pode ser visualizado na Figura 3.6 abaixo: 
 
 
Figura 3.6 – Estrutura while no Android Studio. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando a estrutura while. No lado esquerdo tem-se 
um celular com as palavras PASSO0, PASSO1, PASSO2. 
 
 
 
81 
No exemplo, a variável passo é inicializado com 0. A cada passagem pelo laço, a 
mensagem é exibida e a variável passo é incrementada. Esse processo continuará até que o teste da 
expressão condicional seja verdadeiro, ou seja, até que o valor da variável passo seja menor que 3. 
Quando o teste da expressão condicional se tornar falso, o controle do programa irá passa para a 
linha imediatamente posterior ao laço. 
Como no laço for, while verifica a expressão condicional no início do laço, ou seja, o 
código do laço pode não ser executado. Isso elimina a necessidade de execução de um teste separado 
do laço. 
 
3.2.3 Estrutura Do-While 
O último dos laços Java é o do-while. Diferentemente dos laços for e while, em que a 
condição é testada no início do laço, o laço do-while verifica sua condição no fim do laço. Ou seja, um 
laço do-while será sempre executado pelo menos uma vez. A forma mais simples do laço do-while é 
mostrada a seguir: 
 
do instrução; 
while (condição); 
 
Para a repetição de um bloco, a forma geral é: 
 
Inicialização; 
do { 
Instrução ou sequência de instruções; 
interação; 
} while(condição); 
 
Onde: 
• A inicialização do laço define uma variável de controle de laço com um valor inicial. 
• A instrução (ou um bloco de instruções) será executada. 
• A interação determina como a variável de controle do laço é alterada sempre que o 
laço itera. 
 
 
82 
• A condição pode ser qualquer expressão booleana válida. O laço se repete enquanto 
a condição é verdadeira. Quando a condição se torna falsa, o controle do programa 
passa para a linha imediatamente posterior ao laço. 
 
Embora as chaves não sejam necessárias quando há apenas uma instrução presente, elas 
são usadas com frequência para melhorar a legibilidade da estrutura do-while, evitando, assim, 
confusão com while. o Laço do-while é executado enquanto a expressão condicional for verdadeira. 
Para demonstrar o laço do-while, iremos novamente guiar o seu personagem no 
mundo. Onde, o laço de repetição irá fazer seu o personagem andar x passos em uma direção ou y 
passos em outra direção. Por exemplo, como podemos guiar o personagem para “voltar três passos 
para o leste”? O código pode ser visualizado na Figura 3.7 abaixo: 
 
Figura 3.7 – Estrutura do-while no Android Studio. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando a estrutura do-while. No lado esquerdo tem-
se um celular com as palavras PASSO0, PASSO1, PASSO2. 
 
No exemplo, a variável passo é inicializado com 0. A cada passagem pelo laço, a 
mensagem é exibida e a variável passo é incrementada. Esse processo continuará até que o teste da 
expressão condicional seja verdadeiro, ou seja até que o valor da variável passo seja menor que 3. 
Quando o teste da expressão condicional se tornar falso, o controle do programa irá passa para a 
linha imediatamente posterior ao laço. 
Diferente da estrutura for e da estrutura while, o laço do-while verifica a expressão 
condicional no fim do laço. Ou seja, um laço do-while será sempre executado pelo menos uma vez. 
 
 
83 
 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
• As estruturas de controle condicional. 
• A forma completa da estrutura if. 
• Usar a instrução if. 
• A forma completa da estrutura switch. 
• Usar a instrução switch. 
• As estruturas de repetição. 
• A forma completa da estrutura for. 
• Usar a instrução for. 
• A forma completa da estrutura while. 
• Usar a instrução while. 
• A forma completa da estrutura do-while. 
• Usar a instrução do-while. 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
Agora, o próximo passo é mergulhar na competência 4, que trata da utilização de listas e 
arrays. Vamos juntos? 
 
 
 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a nossa primeira videoaula competência. 
 
 
84 
4.Competência 04 | Formatar uma Activity para utilização de Arrays 
Caro estudante, vamos iniciar a quarta competência! Nesta competência,o assunto “tipos 
de dados” será retomado, e você irá conhecer o tipo de dado array. Em seguida, você vai entender e 
criar um array unidimensionais. E por fim, você vai entender e criar um array multidimensionais. 
Vamos continuar! 
4.1 Arrays 
Um array é um tipo de dado formado por um conjunto de variáveis do mesmo tipo, 
referenciadas por um nome comum. Em Java, os arrays podem ter uma ou mais dimensões. Os arrays 
são usados para diversos fins, porque oferecem um meio conveniente de agrupar variáveis 
relacionadas. Por exemplo, imagine que durante o desenvolvimento de um programa fosse preciso 
declarar variáveis para armazenar um registro da temperatura máxima diária durante um mês, ou 
seja, você teria que declarar tempmax01, tempmax02, tempmax03, tempmax04, …. , tempmax30 e 
tempmax31. Nesse caso, para resolver este problema, você pode usar um array para armazenar o 
registro diário da temperatura máxima de um mês. 
A principal vantagem de um array é que ele organiza os dados de tal forma que é fácil 
tratá-los. Por exemplo, com um array contendo o registro diário da temperatura máxima de um mês, 
será fácil calcular a temperatura média percorrendo-o. 
 
 
 
 
 
 
 Você sabia que um vetor é uma estrutura de dados formada por um conjunto de 
elementos de mesmo tipo. Em programação, os vetores são chamados de arrays. 
 
 
85 
4.1.1 Arrays Unidimensionais 
Um array unidimensional é uma lista de variáveis relacionadas. Essas listas são comuns 
em programação. Para declarar um array unidimensional, você pode usar esta forma geral: 
 
tipo nome-array[ ] = new tipo[tamanho] 
onde: 
• tipo declara o tipo do elemento do array. O tipo de elemento determina o tipo de 
dado de cada elemento contido no array. 
• nome-array determinará o nome que o array conterá. 
• tamanho determinará o número de elementos que o array conterá. 
 
Em Java, a criação de um array se dá em duas etapas, primeiro você declara uma variável 
de referência de array. Depois, aloca memória para o array, atribuindo uma referência dessa memória 
a variável de array. 
Para demonstrar o array unidimensional, iremos inicialmente pensar como armazenar 
um conjunto de palavras secretas para um jogo de advinhação simples, o jogo da forca. Por exemplo, 
como podemos criar um array String de 15 elementos e o vincular a uma variável de referência de 
array chamado palavra. A linha a seguir cria um array String de 15 elementos e o vincula a palavra: 
String palavra[] = new String [15]; 
A variável palavra contém uma referência a memória alocada por new. Essa memória é 
suficientemente grande para conter 15 elementos do tipo String. 
Um elemento individual de um array é acessado com o uso de um índice. Um índice 
descreve a posição de um elemento dentro de um array. Em Java, todos os arrays tem zero como o 
índice de seu primeiro elemento. Já que a variável palavra tem 15 elementos, ela tem valores de 
índice que vão de 0 a 14. Para indexar um array, devemos especificar o número do elemento 
desejado, inserido em colchetes. Portanto o primeiro elemento de palavra é palavra[0] e o último é 
palavra[14]. 
 
 
 
86 
Por exemplo, o programa a seguir (Figura 4.1) carrega palavra com 15 elementos 
(palavras secretas): 
 
 
Figura 4.1 - Array unidimensional. Neste exemplo o array carrega palavra com 15 elementos (palavras secretas). 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando array unidimensional. 
 
 
 
 
 
 
87 
Conceitualmente, o array palavra tem a seguinte aparência (Figura 4.2): 
 
Figura 4.2 - Aparência conceitual do array palavra. 
Fonte: o autor 
Descrição da imagem: apresenta um retângulo contendo outros quadrados, cada um representando o elemento 
individual de um array unidimensional. Cada quadrado contendo as seguintes palavras: Deadpool, Wolverine, Black 
Widow, Iroman, ..., Gamora, Death, Kratos, Yoda e Drácula. Em seguida temos abaixo de cada quadrado textos 
descritivos do índice da posição de cada elemento dentro de um array. 
 
4.1.2 Arrays Multidimensionais 
O array unidimensional é o mais comum em programação, porém os arrays 
multidimensionais (arrays de duas ou mais dimensões) não são raros. Em Java, o array 
multidimensional é um array composto por arrays. 
4.1.2.1 Arrays Bidimensionais 
A forma mais simples de array multidimensional é o array bidimensional. Para declarar 
um array bidimensional, você pode usar esta forma geral: 
tipo nome-array[ ] [ ] = new tipo[tamanho] [tamanho] 
 
Diferentemente de outras linguagens de programação, que usam vírgulas para separar as 
dimensões do array, Java insere cada dimensão em seu próprio conjunto de colchetes. 
Para demonstrar o array bidimensional, iremos inicialmente pensar como criar um 
tabuleiro para o desenvolvimento do jogo da velha. Por exemplo, como podemos criar um array int 
de 9 elementos e o vincular a uma variável de referência de array chamado tabuleiro. Por exemplo, 
o programa a seguir (Figura 4.3) cria um array int de 9 elementos e o vincula a tabuleiro: 
 
 
88 
 
Figura 4.3 - Array bidimensional. Neste exemplo o array carrega tabuleiro com 9 elementos. 
Fonte: o autor 
Descrição da imagem: apresenta um fundo preto com o código utilizando array bidimensional. 
 
Neste exemplo, tabuleiro[0][0] terá o valor 1, tabuleiro[0][1] terá o valor 2, tabuleiro[0][2] 
terá o valor 3, e assim por diante. O valor de tabuleiro[2][2] será 9. Conceitualmente, o array ficará 
parecido como mostrado na Figura 4.4: 
 
 
89 
 
 
Figura 4.4 - Visão conceitual do array tabuleiro. 
Fonte: o autor 
Descrição da imagem: apresenta um retângulo contendo outros quadrados, cada um representando o elemento 
individual de um array bidimensional. Cada quadrado contendo os seguintes textos: 1, 2, 3, 4, 5, 6, 7, 8 e 9. Em seguida 
temos acima de cada quadrado textos descritivos do índice direito, no lado esquerdo de cada quadrado temos textos 
descritivos do índice esquerdo, e no lado direito temos o texto descritivos do índice da posição Tabuleiro [1][2] e o valor 
do elemento. 
 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
• Entender e criar arrays. 
• A forma completa de um array unidimensional. 
• Criar arrays unidimensional. 
• A forma completa de um array bidimensional. 
• Criar arrays bidimensional. 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
Agora, o próximo passo é mergulhar na competência 5, que trata da utilização de Activity 
em detalhes. Vamos juntos? 
 
 
 
90 
5. Competência 05 | Conhecer o Activity em detalhes 
Caro estudante, vamos iniciar a quinta competência! Nesta competência você vai 
aprender como criar um novo projeto com Activity. Em seguida, será mostrado a descrição do 
conceito da classe Activity e o funcionamento do ciclo de vida de uma Activity. E por fim, será 
mostrado como realizar a navegabilidade entre Activity, e será visto como realizar navegabilidade 
simples de uma Activity para outra e a navegação entre telas com passagem de parâmetros. 
Vamos Continuar! 
 
5.1 Criando um novo projeto com Activity 
A competência 1 introduziu os conceitos básicos de um sistema operacional móvel, e 
ensinou a criar e a configurar o ambiente de desenvolvimento, o Android Studio. Você lembra? Na 
construção desse projeto criado por você foram gerados os arquivos AndroidManifest.xml, 
MainActivity.java e o activity_main.xml. A declaração da sintaxe da nova Activity ocorre no arquivo 
AndroidManifest.xml com a execução da Activity sendo realizada no arquivo MainActivity.java 
através da seguinte sintaxe <activity android:name=".MainActivity"/>. O código do 
AndroidManifest.xml do novo projeto com Activity pode ser visualizado na Figura 5.1 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<manifestxmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambuco"> 
 
 <application 
 android:allowBackup="true" 
 android:icon="@mipmap/ic_launcher" 
 android:label="@string/app_name" 
 android:roundIcon="@mipmap/ic_launcher_round" 
 android:supportsRtl="true" 
 android:theme="@style/AppTheme"> 
 <activity android:name=".MainActivity"/> 
 </application> 
 
</manifest> 
Figura 5.1 – Arquivo AndroidManifest.xml do novo projeto com Activity 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo AndroidManifest.xml possuindo 
as principais declarações da aplicação e a declaração da activity no novo projeto. 
 
 
 
91 
No arquivo MainActivity.java é executado o método setContentView(view) para 
especificar a View que contém os elementos de layout com acesso ao arquivo de gerenciamento de 
layout activity_main.xml. O código do arquivo MainActivity.java pode ser visualizado na Figura 5.2 
abaixo: 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
 
public class MainActivity extends AppCompatActivity { 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 } 
} 
 
Figura 5.2 – Arquivo MainActivity.java 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo o 
acesso ao arquivo de layout com o nome activity_main. 
 
O arquivo activity_main.xml é responsável por configurar o gerenciador de layout, ou 
classe ViewGroup, além de configurar os elementos da classe Widgets. O código do activity_main.xml 
do novo projeto com Activity pode ser visualizado na Figura 5.3 abaixo: 
 
 <?xml version="1.0" encoding="utf-8"?> 
 
<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 
 
 
92 
 
Figura 5.3 – Arquivo activity_main.xml 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml possuindo a 
declaração do layout ConstraintLayout com o componente de texto chamado TextView. 
 
Até aqui você aprendeu como criar um novo projeto com declaração da classe Activity. 
Nas seções a seguir, você vai aprender sobre os conceitos da classe Activity, ciclo de vida de uma 
Activity e a navegabilidade entre Activity. 
 
5.2 Conceito de Activity 
A classe Activity é responsável por controlar os eventos da tela dos aplicativos e definir 
qual componente visual será responsável pela interface gráfica do usuário. Mas o que é uma classe 
Activity? A classe Activity deve herdar da classe Java android.app.Activity ou alguma subclasse Java 
desta, essa classe Activity é representada por alguma tela da aplicação, assim como é responsável por 
tratar todos os eventos gerados nessa tela, por exemplo, os cliques de botão, seleção de checkbox, 
cliques no menu e mudanças de tela. 
Essa classe Activity possui implementado o método onCreate(bundle), responsável por 
realizar a inicialização dos elementos necessários para exibir uma tela do aplicativo. Esse método 
onCreate(bundle) é executado no método setContentView(view), responsável por configurar o layout 
XML (Extensible Markup Language) que contém os elementos da tela, tais como as suas imagens e 
botões. Por fim, cada Activity criada deve ser declarada no arquivo AndroidManifest.xml, como será 
mostrado nos exemplos abaixo. O código do AndroidManifest.xml com MainActivity pode ser 
visualizado na Figura 5.4 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambuco"> 
 
 <application> 
 <activity android:name=".MainActivity"/> 
 
 </application> 
 
</manifest> 
 
Figura 5.4 – Arquivo AndroidManifest.xml no Android Studio com MainActivity 
 
 
93 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo AndroidManifest.xml possuindo a 
declaração da Activity com o nome MainActivity. 
 
Nessa configuração, esse “.” (ponto) antes do nome da sua Activity indica que o pacote 
da classe Java é relativo ao pacote do projeto. Caso esse pacote estivesse em um pacote diferente, o 
nome desse pacote deveria ser especificado, por exemplo, br.com.cursoandroid.hello.activity. O 
código do AndroidManifest.xml com activity.MinhaClasseActivity pode ser visualizado na Figura 5.5 
abaixo: 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambuco"> 
 
 <application> 
 <activity android:name=".activity.MinhaClasseActivity"/> 
 </application> 
 
</manifest> 
 
Figura 5.5 – Arquivo AndroidManifest.xml no Android Studio com activity.MinhaClasseActivity 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo AndroidManifest.xml possuindo a 
declaração da Activity com o nome MinhaClasseActivity na pasta Activity. 
 
Se achar necessário, pode definir o nome completo da classe Java, pois não é considerado 
uma declaração errada. O código do AndroidManifest.xml com a declaração da classe Java completa 
br.com.cursoandroid.hello.activity.MinhaClasseActivity pode ser visualizado na Figura 5.6 abaixo: 
 
xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambuco"> 
 
 <application> 
 <activity android:name=" br.com.cursoandroid.hello.activity.MinhaClasseActivity 
"/> 
 </application> 
 
</manifest> 
 
Figura 5.6 – Arquivo AndroidManifest.xml no Android Studio com 
br.com.cursoandroid.hello.activity.MinhaClasseActivity 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo AndroidManifest.xml possuindo a 
declaração da Activity com o nome da classe br.com.cursoandroid.hello.activity.MinhaClasseActivity. 
 
 
94 
Na prática podemos relacionar a palavra “Activity” à palavra “tela”. Diante desse 
raciocínio, caso seja necessário criar uma nova tela do seu projeto, você deverá criar uma nova 
Activity, e essa classe deverá ser declarada no arquivo AndroidManifest.xml. Esse arquivo é 
responsável por controlar os eventos e elementos da tela, que é especificada no método 
setContentView(view), que já vimos anteriormente. 
Por fim, lembre-se de configurar corretamente o nome da classe Activity, pois o 
compilador é case sensitive, ou seja, ele diferencia as letras maiúsculas das minúsculas, dessa forma 
para ele “MinhaActivity” é diferente de “minhaActivity”. Para ter certeza de que o nome e o pacote 
foram especificados corretamente, segure a tecla ctrl (control) do seu teclado e passe o mouse em 
cima do nome da sua Activity, se o texto ficar selecionado, você pode clicar para abrir o código-fonte 
da classe. Se o editor abrir, essa execução está correta. 
 
5.3 Ciclo de vida de uma Activity 
Na execução do ciclo de vidade uma Activity é importante entender em qual estado ele 
se encontra e como você pode controlar o comportamento da sua aplicação. Tenha em mente o 
seguinte conceito: quem cuida da execução do fluxo do ciclo de vida é o sistema operacional Android, 
mas você pode customizar esses estados, por exemplo, criando outros estados como: executando, 
temporariamente interrompida em segundo plano e completamente destruída. 
Imagine que você tenha desenvolvido um jogo espetacular para Android e enquanto o 
usuário está jogando ele receba uma ligação, então o que vai acontecer com o jogo? Bom, o sistema 
operacional vai interromper o jogo temporariamente e colocá-lo em segundo plano para que o 
usuário possa atender a ligação. Depois que ligação for encerrada a grande pergunta é: o que deve 
acontecer com o jogo? as informações do jogo serão salvas? Bom, isso vai depender das 
especificações realizada por você. O Android fornece toda a estrutura necessária para isso, basta 
você entender o ciclo de vida da Activity. 
Mas o que acontecerá quando for executado diversos aplicativos no Android, como o 
browser, a tela inicial (Home) e a tela para discar um número? Bem, cada execução possui uma 
Activity inicial sendo inserido no topo de uma pilha, chamada de pilha de atividades. Assim, nessa 
pilha de atividade, sempre que uma nova Activity é inserida no topo da pilha, a Activity anterior que 
 
 
95 
estava em execução fica logo abaixo da nova, ou seja, a Activity que está no topo da pilha é a Activity 
em execução no momento, as demais podem estar executando no segundo plano, estar no estado 
pausado ou totalmente paradas. 
Agora você vai aprender como utilizar na prática o ciclo de vida de uma Activity. Vamos 
começa? Alguns métodos da classe Activity pode ser utilizado para controlar o estado da tela. Dentre 
eles, existem o método onCreate(), que é responsável por inicializar a Activity e iniciar o seu ciclo de 
vida. Além desse método, os outros métodos importantes do ciclo de vida são onStart(), onRestart(), 
onPause(), onStop() e onDestroy(). A Figura 5.7, abaixo, mostra o fluxo do ciclo de vida de uma Activity 
e seus possíveis estados. 
 
 
96 
 
Figura 5.7 – Ciclo de vida de uma activity 
Fonte: o autor 
Descrição: a imagem apresenta todas as fases do ciclo de vida de uma aplicação Android. Quando uma activity é 
iniciada o seu ciclo de vida tem início e o método onCreate é executado, em seguida é executado o onStart e o 
onResume. Caso outra activity seja iniciada, a atual é pausada, então, é executado o método onPause. Se a activity 
anterior voltar a executar, ela chamará novamente o onResume, caso contrário, é chamado o método onStop e em 
seguida pode ser chamado o onDestroy, que encerra a activity ou pode ser chamado o onRestart , se a Activity voltar a 
executar ou caso ela tenha ido para segundo plano no onStop e encerrada pelo SO. No caso dela voltar a ser exibida, o 
método onCreate é chamado novamente. 
 
 
 
97 
Preste atenção nesse momento, pois agora você cai aprender sobre cada um dos métodos 
que se encontram no ciclo de vida de uma Activity na Tabela 5.1, abaixo. É importante que você leia 
a descrição do método e acompanhe o fluxograma da Figura 5.7, acima. 
 
Método Descrição 
onCreate(bundle) 
 
Esse método é considerado obrigatório no ciclo de vida da Activity, 
por isso deve ser iniciado apenas uma vez. O objetivo desse 
método é realizar a inicialização necessária para executar um 
aplicativo. Neste método, deve-se criar uma view e chamar o 
método setContentView(view) para configurar os elementos que 
serão exibidos no layout da tela dos usuários. Após a execução do 
onCreate(bundle) é chamado o método onStart. 
onStart() 
 
Esse método é chamado quando uma Activity está criada, assim 
como a sua view, ou seja, após o método onCreate(bundle) ocorre 
uma execução quando a activity está visível ao usuário. Como 
mostrado no fluxo acima, esse método também é chamado depois 
dos métodos onRestart ou onCreate, dependendo assim do 
estado atual o aplicativo. 
onRestart() 
 
Esse método é chamado quando uma Activity é parada 
temporariamente e esteja sendo iniciada novamente, então uma 
aplicação em Android chama o método onRestart que logo após 
executa o método onStart. 
onResume() 
 
Esse método é chamado quando a Activity principal já está 
executando e está interagindo com o usuário. Além disso, quando 
esse método está sendo executado, o usuário está vendo a tela. 
Por isso, esse método é frequentemente utilizado para consultar 
o banco de dados e atualizar as informações da tela do aplicativo. 
 
onPause() 
 
 
Esse método é chamado quando a tela da Activity fecha. Isso pode 
acontecer quando o usuário pressiona o botão voltar para sair do 
 
 
98 
aplicativo. Outra maneira ocorre quando você recebe uma ligação 
telefônica. Nesse momento, o método é chamado para salvar o 
estado do aplicativo, para posteriormente, quando essa activity 
voltar a executar, tudo possa ser recuperado no método 
onResume. 
onStop() 
 
Esse método é chamado quando a Activity está sendo encerrada e 
não está mais visível para o usuário. Depois de parada, a Activity 
pode ser reiniciada. Caso isso ocorra, o método onRestart realiza 
a reinicialização da activity. Caso essa Activity fique muito tempo 
parada em segundo plano e o sistema operacional Android precise 
liberar a memória, o método onDestroy pode ser 
automaticamente chamado para remover completamente 
Activity. 
onDestroy() 
 
Esse método encerra a execução de uma Activity. Com isso, esse 
método pode ser chamado automaticamente pelo sistema 
operacional para liberar recursos alocados pela Activity como 
valores de atributos e demais recursos. Após o método onDestroy 
ser executado, a Activity será removida completamente e o seu 
processo no sistema operacional será completamente encerrado. 
 
Tabela 5.1 – Ciclo de vida de uma aplicação Android 
Fonte: o autor 
Descrição da imagem: a descrição dos métodos do ciclo de vida de uma Activity e seus respectivos conceitos. 
 
Depois de mostrar o ciclo de vida de uma Activity e descrever o funcionamento dos seus 
métodos. Você deve ter ficado curioso para entender a execução desse ciclo de vida em código! Bem, 
a seguir será mostrado um exemplo do código de uma activity que implementa os métodos: 
onCreate(bundle), onStart(), onRestart(), onResume(), onPause(), onStop() e onDestroy() do ciclo de 
vida que mostramos anteriormente. 
Recomendo seguir esse exemplo e implementar todos os métodos. Dessa maneira, você 
pode fazer diversos testes. Como exemplo, realizar ligação para o seu celular, encerrar uma aplicação 
 
 
99 
e acompanhar esses métodos chamados, através das mensagens de log que serão exibidas na janela 
do LogCat. Para testar isso, você pode criar um projeto Android e executá-lo usando o emulador do 
Android ou diretamente no seu próprio celular. O código do MainActivity com a descrição do Logcat 
pode ser visualizado na Figura 5.8 abaixo: 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 
 
public class MainActivity extends AppCompatActivity { 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 
 Log.i(getLocalClassName(), "onCreate()"); 
 
 TextView olaMundo = new TextView(this); 
 olaMundo.setText("Olá mundo! :)"); 
 setContentView(olaMundo); 
 setContentView(R.layout.activity_main); 
 } 
 @Override 
 protected void onStart(){ 
 super.onStart(); 
 Log.i(getLocalClassName(), "onStart()"); 
 } 
 @Override 
 protected void onRestart(){ 
 super.onRestart(); 
 Log.i(getLocalClassName(), "onRestart()"); 
 } 
 @Override 
 protectedvoid onResume(){ 
 super.onResume(); 
 Log.i(getLocalClassName(), "onResume()"); 
 } 
 @Override 
 protected void onPause(){ 
 super.onPause(); 
 Log.i(getLocalClassName(), "onPause()"); 
 } 
 @Override 
 protected void onStop(){ 
 super.onStop(); 
 Log.i(getLocalClassName(), "onStop()"); 
 } 
 @Override 
 protected void onDestroy(){ 
 super.onDestroy(); 
 Log.i(getLocalClassName(), "onDestroy()"); 
 } 
} 
 
 
100 
 
Figura 5.8 – estrutura do logcat no arquivo MainActivity.java do Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
declaração dos métodos onCreate, onStart, onRestart, onResume, onPause, onStop e onDestroy. 
 
Na execução do código mostrada na Figura 1.8, acima, o Android Studio mostra no LogCat 
a descrição dos métodos onCreate(), onStart() e onResume(). A execução do LogCat do Android Studio 
pode ser visualizada na Figura 5.9 abaixo: 
 
Figura 5.9 – descrição de logs no LogCat do Android Studio. 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com a tela de logCat com logs mostrando a descrição do 
Logcat com os métodos onCreate(), onStart() e onResume() que foram chamados a partir da exibição de uma Activity 
 
Entender o ciclo de vida de uma Activity é fundamental para você dominar o 
desenvolvimento de aplicações Android. O conhecimento desses métodos é considerado importante 
principalmente quando você está jogando no seu celular. A seguir será mostrado dois exemplos do 
ciclo de vida de uma Activity no momento da execução do jogo. 
Imagine que você está jogando e ocorre uma interrupção por receber uma ligação, ou a 
bateria do seu celular acaba quando você estiver jogando. Nessas situações, o ideal seria que o jogo 
fosse salvo ao ser interrompido pela falta de bateria ou pausado no momento da ligação, para assim 
o usuário não ser prejudicado com interrupções externas. 
 
 
 
101 
5.4 Navegabilidade entre Activity 
Até esse momento abordamos conceitos do que significa uma Activity, para que serve 
uma Activity e o funcionamento do ciclo de vida da Activity. Agora chegou o momento de aprender 
como criar uma Activity, assim como a navegabilidade de uma para outra. Essas activities são 
representadas por telas. Diante disso, os aplicativos utilizam um conjunto de telas diferentes, então 
para cada tela desse aplicativo será criado uma nova Activity. 
A navegabilidade entre activities pode ocorrer utilizando os métodos startActivity(intent) 
ou startActivityForResult(intent, código). Ambos os métodos utilizam uma instância da classe Intent. 
Essa classe Intent significa intenção, nesse caso a intenção é mudar de Activity, ou seja, a 
navegabilidade da transição da tela de origem para uma tela de destino com envio de informação 
entre elas. 
Mas como ocorre a execução desses dois métodos? Bem, o método startActivity é 
responsável pela mudança de uma tela de origem para uma tela de destino, porém a navegabilidade 
entre activities não vincula relação com a Activity anterior. A Figura 5.10, abaixo, mostra a 
navegabilidade do método startActivity(intent). Com isso, a informação da Activity de origem e 
enviada para Activity de destino sem retorno de informação. 
 
Figura 5.10 – navegabilidade do método startActivity(intent). 
Fonte: o autor 
Descrição da imagem: A imagem apresenta uma caixa azul representando a tela azul com a Activity A e uma caixa 
vermelha representando a tela vermelha com a Activity B. Entre as telas azul e vermelha possui uma seta azul com a 
navegabilidade do método startActivity(intent) que realiza a transição entre a tela azul (Activity A) e a tela vermelha 
(Activity B). 
 
Já o método startActivityForResult é responsável pela mudança de uma tela de origem 
para uma tela de destino, porém a navegabilidade entre activities retorna informações da tela de 
 
 
102 
destino para a tela de origem. A Figura 5.11, abaixo, mostra a navegabilidade do método 
startActivityForResult. Com isso, a informação da Activity de origem (Activity A) é enviada para 
Activity de destino (Activity B). Em seguida, a Activity de destino (Activity B) faz o tratamento do 
parâmetro recebido e retorna à informação para Activity de origem. 
 
 
Figura 5.11 – navegabilidade do método startActivityForResult(). 
Fonte: o autor 
Descrição da imagem: A imagem apresenta uma caixa azul representando a tela azul com a Activity A e uma caixa 
vermelha representando a tela vermelha com a Activity B. Entre as telas azul e vermelha possui uma seta com a 
navegabilidade do método startActivityForResult() que realiza a transição entre a tela azul e a tela vermelha e outra seta 
azul com o retorno da tela vermelha para azul. 
 
 
 
5.5 Navegabilidade Simples de uma Activity para outra 
A navegação simples de uma Activity para outra necessita de duas telas. Mas como isso 
ocorre a nível de código? O código da Figura 5.12, abaixo, mostra como a partir de um clique é 
possível abrir uma nova tela. Para isso ocorrer é necessário criar uma segunda Activity como 
mostrado na Figura 5.13, abaixo. Nesse código será necessário criar duas activities para navegar de 
uma tela para outra. A primeira Activity será chamada de MainActivity e a segunda Activity de 
SegundaTela. 
 
package com.example.eadpernambuco; 
 
import androidx.appcompat.app.AppCompatActivity; 
 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
 
public class MainActivity extends AppCompatActivity implements 
 
 
103 
View.OnClickListener { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 
 Button olaMundo = new Button(this); 
 olaMundo.setText("EAD Pernambuco! :)"); 
 olaMundo.setOnClickListener(this); 
 setContentView(olaMundo); 
 } 
 
 public void onClick(View v) { 
 Intent tela2 = new Intent(this, SegundaTela.class); 
 startActivity(tela2); } 
} 
 
Figura 5.12 – Arquivo MainActivity.java com navegabilidade simples de uma Activity 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java com 
navegabilidade simples de uma Activity para outra, por meio da classe MainActivity.java que realiza a navegabilidade 
entre a tela de origem representada por MainActivity para a tela de destino representada por SegundaTela usando a 
classe intent. 
 
 
package com.example.eadpernambuco; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
 
public class SegundaTela extends Activity { 
 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 TextView tela2 = new TextView(this); 
 tela2.setText("Bem vindo a SegundaTela."); 
 setContentView(tela2); } 
 
} 
 
Figura 5.13 – Arquivo SeguntaTela.java com navegabilidade simples de uma Activity 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo SeguntaTela.java com 
navegabilidade simples de uma Activity para outra, por meio da classe SegundaTela que mostra o resultado da tela de 
destino representada por SegundaTela e mostrada na mensagem ("Bem vindo a SegundaTela."). 
 
Depois de criar as activities dessas classes é necessário criar a declaração dessas activities 
no AndroidManifest.xml. Mas ocorre algum erro caso não declare essas activities no 
AndroidManifest.xml? Sim, a criação da nova Activity(tela) deve ser declarada no AndroidManisfest. 
 
 
104 
Caso você não realize essa declaração no AndroidManifest, a seguinte mensagem de erro será exibida 
no seu LogCat. A descrição do erro no Logcatpode ser visualizada na Figura 5.14 abaixo: 
 
 
Figura 5.14 – Descrição do erro no Logcat 
Fonte: Android Studio 3.5.2 
 
Descrição da imagem: a imagem apresenta um fundo preto com a tela de logCat com log de erro mostrando a seguinte 
mensagem “você declarou essa activity no seu AndroidManifest.xml?”. 
 
 
Perceba nessa mensagem de exceção fatal a explicação do erro em inglês, traduzindo: 
“você declarou essa Activity no seu AndroidManifest.xml?”. Para resolve esse problema adicione as 
seguintes linhas no seu AndroidManifest.xml <activity android:name=".MainActivity"/>. O código do 
MainActivity com a declaração da Activity pode ser visualizado na Figura 5.15 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambuco"> 
 
 <application 
 android:allowBackup="true" 
 android:icon="@mipmap/ic_launcher" 
 android:label="@string/app_name" 
 android:roundIcon="@mipmap/ic_launcher_round" 
 android:supportsRtl="true" 
 android:theme="@style/AppTheme"> 
 <activity android:name=".MainActivity"> 
 <intent-filter> 
 <action android:name="android.intent.action.MAIN" /> 
 
 <category android:name="android.intent.category.LAUNCHER" /> 
 </intent-filter> 
 </activity> 
 <activity android:name=".SegundaTela"/> 
 
 </application> 
</manifest> 
 
Figura 5.15 - Arquivo AndroidManifest.xml com a declaração da Activity 
Fonte: Android Studio 3.5.2 
 
 
105 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo AndroidManifest.xml com a 
declaração da Activity com o nome MainActivity. 
 
Depois da atualização dessas duas activities no AndroidManifest.xml o erro anterior foi 
resolvido e ocorreu a navegabilidade da primeira tela (Figura 5.16) para a segunda tela (Figura 5.17). 
 
 
 
Figura 5.16 – tela da classe MainActivity.java no android Studio 
Fonte: o autor 
Descrição da imagem: a imagem apresenta uma tela do celular da classe MainActivity.java mostrado na parte superior 
da tela a mensagem EADPrnambucoPDM, na barra inferior da tela três botões do celular com símbolos da seta, bola e 
quadrado e na parte do meio da tela a mensagem "EAD Pernambuco! :)”. 
 
 
106 
 
 
Figura 5.17 - tela da classe SegundaTela.java no android Studio 
Fonte: o autor 
Descrição da imagem: a imagem apresenta uma tela do celular da classe SegundaTela.java mostrado na parte superior 
da tela a mensagem EADPernambucoPDM, na barra inferior da tela três botões do celular com símbolos da seta, bola e 
quadrado e na parte do meio da tela a mensagem ("Bem vindo a SegundaTela."). 
 
5.6 Navegação entre telas com passagem de parâmetros 
Agora você vai aprender sobre como funciona a navegação entre telas com passagem de 
parâmetros. Mas como ocorre o envio de uma ou mais informações da primeira tela para a segunda 
tela? Nessa navegação é utilizada a classe Bundle que é semelhante a uma HashTable (estrutura de 
dados do tipo chave com valor). Essa classe utiliza o método putString(chave, valor) para configurar 
as informações com formato de texto para a segunda tela. O código do MainActivity com a 
navegabilidade entre telas com passagem de parâmetro pode ser visualizado na Figura 5.18 abaixo: 
 
package com.example.eadpernambuco; 
 
import androidx.appcompat.app.AppCompatActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
 
 
 
107 
public class MainActivity extends AppCompatActivity implements 
View.OnClickListener { 
 
 public void onClick(View v) { 
 Intent tela2 = new Intent(this, SegundaTela.class); 
 Bundle informacoes = new Bundle(); 
 
 informacoes.putString("disciplina", "Programação de desenvolvimento de 
sistemas"); 
 informacoes.putString("professor", "Danilo "); 
 tela2.putExtras(informacoes); 
 startActivity(tela2); 
 } 
} 
 
Figura 5.18 - Arquivo MainActivity.java com navegabilidade entre telas com passagem de parâmetros 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java com 
navegabilidade entre telas com passagem de parâmetros, por meio do método putString que configurar o formato de 
texto para a segunda tela. 
 
Nesse exemplo anterior utilizamos o método putString, porém a classe Bundle possui 
outras opções de tipo primitivo como putInt, putChar, putBoolean, entre outros. Até esse momento 
você aprendeu como enviar as informações entre as telas, em seguida você vai aprender como 
conseguir informação da segunda tela. O código da SegundaTela com a navegabilidade entre telas 
com passagem de parâmetro pode ser visualizado na Figura 5.19 abaixo: 
package com.example.eadpernambuco; 
 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.TextView; 
 
 
public class SegundaTela extends Activity { 
 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 TextView tela2 = new TextView(this); 
 Intent it = getIntent(); String disciplina = "", professor = ""; 
 if(it != null){ 
 Bundle informacoes = it.getExtras(); 
 if(informacoes != null){ 
 disciplina = informacoes.getString("disciplina"); 
 professor = informacoes.getString("professor"); 
 } 
 } 
 tela2.setText("Bem vindo " + disciplina + " " + professor); 
 setContentView(tela2); } 
} 
 
Figura 5.19 – Arquivo SegundaTela.java com navegabilidade entre telas com passagem de parâmetros 
 
 
108 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo SegundaTela.java com 
navegabilidade entre telas com passagem de parâmetros, por meio do parâmetro do startActivity e do método 
onCreate da segunda tela retornamos essa mesma intent da tela2 e extraímos as informações relacionadas a 
“disciplina” e “professor”. 
 
No método onClick da primeira tela (MainActivity) executamos a Intent (chamado tela2) 
com as informações que desejamos transferir para segunda tela. Como parâmetro do startActivity e 
no método onCreate da segunda tela (SegundaTela) retornamos essa mesma Intent(tela2) e 
extraímos as informações relacionadas as chaves “disciplina” e “professor”. 
Em linguagem de programação existem diversas maneiras de realizar a mesma 
funcionalidade, isso depende do seu conhecimento e da sua flexibilidade sobre a lógica utilizada. 
Diante disso, você pode realizar a passagem de informação entre as telas da seguinte maneira. O 
código com a navegabilidade entre telas com passagem de parâmetro utilizando putExtra pode ser 
visualizado na Figura 5.20 abaixo: 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.content.Intent; 
 
import android.view.View; 
 
public class MainActivity extends AppCompatActivity implements 
View.OnClickListener { 
 
 
 public void onClick(View v) { 
 Intent tela2 = new Intent(this, SegundaTela.class); 
 tela2.putExtra("disciplina","Programação de desenvolvimento de 
sistemas"); 
 tela2.putExtra("professor","Danilo "); 
 startActivity(tela2); 
 } 
} 
 
Figura 5.20 - Arquivo MainActivity.java com navegabilidade entre telas com passagem de parâmetro utilizando putExtra 
Fonte: o autor 
 Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java com 
navegabilidade entre telas com passagem de parâmetros, por meio do parâmetro putExtra que extrair informações 
relacionadas a “disciplina” e “professor”. 
 
No exemplo da Figura 5.20, acima, não utilizamos o Bundle e colocamos os parâmetros 
diretamente no Intent. Depois damodificação dessas classes de activities ocorreu a navegabilidade 
da primeira tela para a segunda tela. A tela com a execução da segunda tela pode ser visualizada na 
Figura 5.21 abaixo: 
 
 
109 
 
Figura 5.21 - tela da classe SegundaTela.java no android Studio 
Fonte: o autor 
Descrição da imagem: a imagem apresenta uma tela do celular da classe SegundaTela.java mostrado na parte superior 
da tela a mensagem EADPernambucoPDM, na barra inferior da tela três botões do celular com símbolos da seta, bola e 
quadrado e na parte do meio da tela a mensagem “Bem vindo Programação de desenvolvimento de sistemas Danilo”. 
 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
● Criar um novo projeto com Activity 
● Conceito de Activity 
● Ciclo de vida de uma Activity 
● Navegabilidade entre Activity 
● Navegabilidade Simples de uma Activity para outra 
● Navegação entre telas com passagem de parâmetros 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
 
 
110 
 
Agora, o próximo passo é mergulhar na competência 6, que trata da utilização de sobre 
Action Bar, a barra de ação dos aplicativos e sobre o tipo de estilo temas. 
Vamos juntos? 
 
 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a nossa primeira videoaula competência. 
 
 
111 
6. Competência 06 | Manipular Action bar e temas 
Caro estudante, vamos iniciar a sexta competência! Nesta competência você vai aprender 
com criar um novo projeto com Action Bar e os conceitos de Action Bar e temas. Em seguida, será 
mostrado sobre a customização de Action Bar. Por fim, será visto a Modificando Action Bar com 
temas. 
Vamos continuar! 
6.1 Criando um novo projeto com Action Bar 
A competência 1 introduziu os conceitos básicos de um sistema operacional móvel, e 
ensinou a criar e a configurar o ambiente de desenvolvimento, o Android Studio. Você lembra? No 
início da construção desse novo projeto você selecionou a opção Basic Activity com a funcionalidade 
do Action Bar. Diante disso, esse novo projeto incluir de maneira automática uma biblioteca de 
suporte para utilizar o Action Bar. A criação do novo projeto com a opção do Action Bar pode ser 
visualizado na Figura 6.1 abaixo: 
 
 
 
112 
Figura 6.1 - Criando uma nova Activity com Action Bar 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta a tela do Android para criar um novo projeto com Action Bar possuindo a 
seleção de uma tela com Activity e a opção next para prosseguir na criação da nova Activity. 
 
Para prosseguir a criação do projeto clique em Next. Em seguida, na próxima tela será 
necessário inserir a nova configuração do projeto. As opções modificadas nesse novo projeto são o 
nome do projeto, a linguagem Java e a API com a versão 26 e o Android Oreo. A configuração do novo 
projeto com Action Bar pode ser visualizado na Figura 6.2 abaixo: 
 
Figura 6.2 – Configurar um novo projeto com Action Bar 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta a tela do Android para configurar um novo projeto com ActionBar 
possuindo o preenchimento do name com o nome do projeto, Package name com a descrição do pacote do projeto, 
save location com a localização da pasta do projeto, language com a descrição da linguagem e a Minimum API Level 
com a descrição da mínima versão utilizada nesse projeto. Com o preenchimento desses campos deve acessar o botão 
finish para finalizar o projeto. 
 
Em seguida, o projeto no Android Studio inicia a sua execução. Nesse projeto, as classes 
utilizadas para executar o Action Bar são AndroidManifest.xml, styles.xml e colors.xml. Agora você vai 
 
 
113 
aprender sobre esses arquivos geradas pelo Android Studio para realizar a configuração inicial de um 
Action Bar. Vamos iniciar explicando o arquivo AndroidManifest.xml com a definição do tema do 
Action Bar definido no atributo android:theme da tag application. O código do arquivo 
AndroidManifest.xml com a declaração do tema pode ser visualizado na Figura 6.3 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambucopdm"> 
 <application 
 android:allowBackup="true" 
 android:icon="@mipmap/ic_launcher" 
 android:label="@string/app_name" 
 android:roundIcon="@mipmap/ic_launcher_round" 
 android:supportsRtl="true" 
 android:theme="@style/AppTheme"> 
 <!—Código comentado em XML: outros temas padrões 
 android:theme="@android:style/Theme.Black" Padrão cor preta 
 android:theme="@style/Theme.AppCompat.Light" padrão cor branca 
 --> 
 <activity 
 android:name=".MainActivity" 
 android:label="@string/app_name" 
 android:theme="@style/AppTheme.NoActionBar"> 
 
 <intent-filter> 
 <action android:name="android.intent.action.MAIN" /> 
 
 <category android:name="android.intent.category.LAUNCHER" /> 
 </intent-filter> 
 </activity> 
 </application> 
 
</manifest> 
 
 
Figura 6.3 – Arquivo AndroidManifest.xml com Action Bar 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
declaração da Activity com a tag name com o nome da activity, label com rótulo com a string da aplicação e o theme 
com o tema da aplicação. 
 
O código do AndroidManifest,xml da Figura 6.3, acima, mostra o atributo android:theme 
com a declaração no arquivo @style/AppTheme. No arquivo do AndroidManifest.xml, o arquivo 
@style/AppTheme é criado em Theme.AppCompat do arquivo styles.xml. No arquivo styles.xml, o 
AppTheme é considerado o nome do estilo e o tema Theme.AppCompat.Light.DarkActionBar é 
representado pela cor branca do layout. O Android Studio possui outros temas padrões como o 
 
 
114 
android:theme="@android:style/Theme.Black" representado pela cor preta do layout e o 
android:theme="@style/Theme.AppCompat.Light" representando pela cor branca do layout. Por fim, 
O AppTheme.NoActionBar é considerado o nome do estilo do Action Bar. O código do arquivo 
styles.xml com a configuração do estilo do Action Bar pode ser visualizado na Figura 6.4 abaixo: 
<resources> 
 <!-- Base application theme. --> 
 <style name="AppTheme" parent="Theme.AppCompat.Light "> 
 <!-- Customize your theme here. --> 
 <item name="colorPrimary">@color/colorPrimary</item> 
 <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
 <item name="colorAccent">@color/colorAccent</item> 
 </style> 
 <style name="AppTheme.NoActionBar"> 
 <item name="windowActionBar">false</item> 
 <item name="windowNoTitle">true</item> 
 </style> 
</resources> 
 
Figura 6.4 - Arquivo styles.xml com a declaração do Action Bar 
Fonte: Android Studio 3.5.2 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo styles.xml possuindo a 
declaração do estilo com a cor branca, com a tag style com name possuindo o nome do estilo AppTheme e o parent 
possuindo o acesso ao arquivo do tema Theme.AppCompat.Light, em seguida a declaração do estilo do Action Bar com 
o nome do estilo AppTheme.NoActionBar relacionado ao Action Bar. 
 
Outra maneira de utilizar o arquivo styles.xml é declarando a personalização da cor com 
formato de número hexadecimal. Essa declaração possui o nome o tema AppTheme com fundo 
branco e os itens colorPrimary com descrição hexadecimal na cor verde clara, colorPrimaryDark com 
descrição hexadecimal na cor verde escura e o colorAccent com descrição hexadecimal na cor rosa. 
O código do arquivo styles.xml com o tema personalizadopor cor pode ser visualizado na Figura 6.5 
abaixo: 
 <resources> 
 <!-- Base application theme. --> 
 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
 <!-- Customize your theme here. --> 
 <item name="colorPrimary">#008577</item> 
 <item name="colorPrimaryDark">#00575B</item> 
 <item name="colorAccent">#D81B60</item> 
 </style> 
</resources> 
 
 
Figura 6.5 - Arquivo styles.xml com o tema personalizado por cor 
Fonte: Android Studio 3.5.2 
 
 
115 
Descrição da imagem: a imagem apresenta um fundo branco com o código do arquivo styles.xml possuindo a descrição 
do tema personalizado por cor possuindo a tag resources e as três tags color com a descrição da cor primária, cor 
primária escura e cor acentuada, assim como, a descrição hexadecimal da cor. 
 
Até aqui você aprendeu como criar um novo projeto com Action Bar. Nas seções a seguir, 
você vai aprender sobre os conceitos de Action Bar e temas, a customização de Action Bar com botão 
e a modificando do Action Bar com temas. 
 
6.2 Conceito de Action Bar 
Action Bar, ou simplesmente barra de ação, é considerado um elemento de interface 
gráfica utilizado em aplicativos. Mas qual a função do Action Bar? A sua função é identificar em qual 
região do aplicativo você está, além de fornecer ações contextualizadas executada por você, assim 
como, o processo de navegação para outras telas utilizando Activity. 
Além disso, a Action Bar é capaz de realizar o ajuste adequado de qualquer configuração 
de tela no arquivo AndroidManifest.xml do Android Studio. Os principais elementos de um Action Bar 
pode ser visualizado na Figura 6.6 abaixo: 
 
 Figura 6.6 – Elementos do Action Bar 
Fonte: o autor 
Descrição da imagem: a imagem apresenta uma barra de navegação com os quatro elementos do Action 
bar. A barra de navegação possui no número um o ícone do Android (No inglês App icon), no número dois possui a 
descrição em texto do Action bar que realiza a navegação com controle de telas (No inglês View control), no número três 
possui os ícones de ações (No inglês Action buttons) com uma lupa de pesquisa em seguida uma câmera de vídeo e no 
número quatro possui um submenu com as ações (No inglês Action overflow) possuindo três pontos com os ícones que 
não couberam na barra de ações. 
 
Nesse momento você vai aprender sobre esses quatro elementos do Action Bar na Tabela 
6.1, abaixo. Essa tabela está relacionada aos quatro elementos com números mostrado na Figura 6.6, 
acima. 
 
 
 
116 
Elemento Descrição 
(1) Ícone (App Icon) O ícone é considerado o elemento de identificação do seu 
aplicativo. Além disso, esse elemento com o ícone do Android 
realiza o processo de navegação, por meio da seta para 
esquerda que realiza a navegação para cima no processamento 
entre telas. 
(2) Navegação (View 
control) 
 
A navegação é considerada o elemento de navegação entre 
outras telas (views) do aplicativo, permitindo assim uma rápida 
navegação entre telas. 
(3) Botões de ações 
(Action bottons) 
Os botões de ações são considerados os elementos com 
opções mais importantes e disponíveis para o usuário. Alguns 
exemplos de ações são acesso a lupa do celular, acesso a fotos 
e vídeos. 
(4) Submenu de 
acesso (Action 
overflow) 
 
O submenu de acesso é considerado um dos elementos com 
ações menos usadas ou ações que não são visualizadas nessa 
barra de ações. 
 
Tabela 6.1 – Os elementos do Action Bar 
Fonte: o autor 
Descrição da imagem: a descrição dos quatro elementos do Action Bar ícone, navegação, botões de ações e submenu 
de acesso, assim como as respectivas descrições desses elementos. 
 
 
6.3 Conceito de temas 
O tema é considerado um tipo de estilo que pode ser configurado em toda aplicação, 
atividade ou hierarquia de exibição do Android. Mas o que é estilo? É considerado uma coleção de 
atributos que especificam a aparência de um único elemento visual do Android. 
Com o estilo você pode especificar atributos como cor, tamanho da fonte e cor do plano 
de fundo. Quando você aplica o seu estilo com tema, todas as visualizações no aplicativo ou atividade 
aplicam cada atributo de estilo configurado nesse tema. Os temas também podem aplicar estilos que 
não são visualizados, como por exemplo, as barras de status e o plano de fundo da janela. 
 
 
117 
O tema é declarado no arquivo styles.xml da pasta values do Android Studio. Esse tema 
deve possuir a tag <style> responsável por identificar o tipo de estilo e a tag <item> responsável pela 
configuração de cada atributo do estilo definido. 
Na tag <item> possui o item name responsável por especifica um atributo XML em seu 
layout. O código do styles.xml com exemplo de estilo com tema pode ser visualizado na Figura 6.7 
abaixo: 
 
<resources> 
 
 <!-- Base application theme. --> 
 <style name=" " parent=" "> 
 <!-- Customize your theme here. --> 
 <item name="colorPrimary">@color/colorPrimary</item> 
 
 </style> 
</resources> 
 
Figura 6.7 – Arquivo styles.xml do Android Studio 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo styles.xml possuindo o item da 
cor com o nome da cor primária e o acesso dessa cor representado por @color/colorPrimary . 
 
6.4 Customização de Action Bar com botão 
A customização do Action Bar com botão de ação (Action Buttons) necessita de 
configuração em sua visualização. Você pode definir se o botão sempre ficará visível, ou se ficará 
disponível no menu de submenu com ações (Action overflow). Para isso, podemos utilizar o atributo 
showAsAction responsável por definir o tipo de item que será exibido no Action Bar. Os itens do 
atributo showAsAction pode ser: 
• always – Indica que o botão sempre será exibido no botão de ação (Action Buttons). 
Sendo considerado o item recomendado para definir as ações mais comuns do 
aplicativo. 
• ifRoom – Exibe o item no botão de ação (Action Buttons) somente se houver espaço 
disponível. Sendo considerado o item de configuração mais adequado para manter a 
compatibilidade em diversos tipos de dispositivos. 
 
 
118 
• withText – Mostra o título do item ao lado do ícone caso haja espaço disponível no 
botão de ação (Action Buttons). 
• never – Nunca exibe o item, nesse caso o item é exibido no submenu de ações (Action 
Overflow). 
As configurações dos itens do atributo showAsAction pode ser definida no arquivo 
activity_main.xml. Esses itens são declarados na tag menu, com a declaração do item com a função 
showAsAction podendo ser Always, ifRoom, withText ou never. O código do arquivo activity_main.xml 
com os itens personalizados do Action Bar customizado pode ser visualizado na Figura 6.8 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:app="http://schemas.android.com/apk/res-auto" 
 xmlns:android="http://schemas.android.com/apk/res/android" > 
 <!-- Search / will display always --> 
 <item android:id="@+id/action_search" 
 android:icon="@mipmap/ic_launcher_round" 
 android:title="Android" 
 app:showAsAction="always"/> 
 
 <item android:id="@+id/camera" 
 android:icon="@android:drawable/ic_menu_camera" 
 android:title="camera" 
 app:showAsAction="ifRoom" /> 
 
 <item android:id="@+id/help" 
 android:icon="@android:drawable/ic_menu_help" 
 android:title="help" 
 app:showAsAction="never" /> 
 
 <item android:id="@+id/Agenda" 
 android:icon="@android:drawable/ic_menu_agenda" 
 android:title="Agenda" 
 app:showAsAction="never" /> 
 
 <item android:id="@+id/menuJanela3" 
 android:icon="@android:drawable/ic_menu_call" 
 android:title="call" 
 app:showAsAction="withText" /> 
 
</menu> 
 
Figura 6.8 – Código activity_main.xml com customização do Action Bar 
Fonte: o autor 
Descriçãoda imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
customização do Action Bar possuindo a descrição dos cinco itens com nome Android, câmera, help, agenda e call. 
 
A customização do Action Bar no arquivo MainActivity.java possui o método 
getMenuInflater que permite configurar as ações definidas no arquivo activity_main.xml e adicioná-
 
 
119 
las ao botão de ações do Action Bar. Por fim, o método onCreateOptionsMenu é responsável por 
iniciar uma Activity e executar os botões de ações no arquivo activity_main.xml. O código do arquivo 
MainActivity.java do Android Studio representando o Action Bar pode ser visualizado na Figura 6.9 
abaixo: 
 
 
package com.example.eadpernambuco; 
 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.MenuInflater; 
import android.view.Menu; 
public class MainActivity extends AppCompatActivity { 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 } 
 @Override 
 public boolean onCreateOptionsMenu(Menu menu) { 
 MenuInflater inflater = getMenuInflater(); 
 inflater.inflate(R.menu.activity_main, menu); 
 return super.onCreateOptionsMenu(menu); 
 } 
} 
 
Figura 6.9– Arquivo da classe MainActivity.java com a customização do Action Bar 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java com a 
customização do Action Bar possuindo a execução da tela do Action Bar no arquivo activity_main.xml 
 
A tela do Android Studio representando a customização do Action Bar pode ser 
visualizado na Figura 6.10 abaixo: 
 
 
120 
 
Figura 6.10 – tela com customização do Action Bar 
Fonte: o autor 
Descrição da imagem: a imagem apresenta uma tela do celular com customização do Action bar 
mostrando na parte superior da tela a mensagem Action Bar e os dois botões com o símbolo do Android e da câmera e 
os três menus com os nomes help, agenda e call e na barra inferior da tela três botões do celular com símbolos da seta, 
bola e quadrado e na parte do meio da tela a mensagem “hello world”. 
 
6.5 Modificando Action Bar com temas 
A aplicação de temas no Android Studio ocorre no arquivo AndroidManifest.xml. Nesse 
arquivo, o tema da aplicação é definido no atributo android:theme na tag application. A alteração do 
tema pode ser executada acessando o arquivo themes.xml. O código do arquivo AndroidManifest.xml 
com a modificação do tema pode ser visualizado na Figura 6.11 abaixo: 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambuco"> 
 
 <application 
 
 android:theme ="@android:style/Theme.Black"> 
 
 </application> 
 
</manifest> 
 
Figura 6.11 – Arquivo AndroidManifest.xml com modificação do tema 
Fonte: o autor 
 
 
121 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo AndroidManifest.xml possuindo a 
tag application com a aplicação do tema e a descrição do theme com acesso específico. 
 
O código anterior acessa o arquivo themes.xml e realiza a configuração do layout da 
aplicação para cor preta. O código do arquivo themes.xml com a configuração das cores pode ser 
visualizado na Figura 6.12 abaixo: 
<resources> 
 
 <style name="Theme.Black"> 
 <item name="windowBackground">@color/black</item> 
 <item name="colorBackground">@color/black</item> 
 </style> 
 
</resources> 
 
Figura 6.12– Arquivo themes.xml com a configuração das cores. 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo themes.xml possuindo a tag style 
com o tema preto e duas tags item com os name windowBackground representando a cor da janela de fundo e o 
colorBackground representando a cor de fundo. 
 
 A execução desse código gera a tela do layout para a cor preta. A tela com a execução 
do layout para a cor preta pode ser visualizada na Figura 6.13 abaixo: 
 
Figura 6.13 – tela com modificação de temas 
Fonte: o autor 
Descrição da imagem: a imagem apresenta uma tela do celular com modificação de temas mostrando na parte 
superior da tela a mensagem EADPernambucoPDM e na barra inferior da tela três botões do celular com símbolos da 
seta, bola e quadrado e na parte do meio com layout com fundo preto a mensagem “hello world” na cor branca. 
 
 
122 
 
Outra maneira de alterar a cor dos temas é acessando o arquivo styles.xml. Nesse arquivo, 
deve-se alterar a descrição do tema para Theme.AppCompat, dessa forma modifica a cor do layout 
para preto. O código do arquivo styles.xml com a configuração do tema com a cor preta pode ser 
visualizado na Figura 6.14 abaixo: 
<resources> 
 
 <!-- Base application theme. --> 
 <style name="AppTheme" parent="Theme.AppCompat"> 
 <!-- Customize your theme here. --> 
 <item name="colorPrimary">@color/colorPrimary</item> 
 <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
 <item name="colorAccent">@color/colorAccent</item> 
 </style> 
 
</resources> 
 
Figura 6.14 – Arquivo styles.xml com o tema na cor preta. 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo styles.xml possuindo o tema com 
a cor preta representada pela tag style com o nome do estilo AppTheme e os três itens representando a cor primária, 
cor primária sombria e cor acentuada. 
 
 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
• Criando um novo projeto com Action Bar 
• Conceito de Action Bar 
• Conceito de temas 
• Customização de Action Bar com botão 
• Modificando Action Bar com temas 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
 
123 
 
Agora, o próximo passo é mergulhar na competência 7, que trata sobre conceitos de 
gerenciadores de layout ou ViewGroup e sobre os layouts ConstraintLayout , LinearLayout e 
RelativeLayout. Vamos juntos? 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a nossa vídeo aula sobre a competência. 
 
 
124 
7. Competência 07 | Conhecer os conceitos de interface gráfica - 
gerenciadores de layout 
Caro estudante, vamos iniciar a sétima competência! Nesta competência você vai 
aprender sobre os conceitos de interface gráfica utilizando a classe View com os seus componenetes 
da classe ViewGroup ou gerenciadores de layout. Em seguida, será visto os layouts ConstraintLayout, 
linearLayout e RelativeLayout. Por fim, será mostrado os componentes de dimensões do layout. 
Vamos continuar! 
 
7.1 Criando um novo projeto com a classe ViewGroup 
A competência 1 introduziu os conceitos básicos de um sistema operacional móvel, e 
ensinou a criar e a configurar o ambiente de desenvolvimento, o Android Studio. Você lembra? Na 
criação desse novo projeto é gerado o arquivo activity_main.xml responsável por modificar a classe 
ViewGroup. A declaração da classe ViewGroup utiliza alguns componentes da paleta de layouts. Os 
principais layouts mostrados nessa paleta são ConstraintLayout, LinearLayout, FrameLayout, 
RelativeLayout e TableLayout. A declaração do identificador desses layouts e a modificação do nome 
do atributo id (identificador) ocorre na paleta atributos. Por exemplo: o identificador do textView 
declarado na Figura 7.1, abaixo, possui o id representado pelo nome “campo” e a sua declaração no 
arquivo XML é representado por android:id="@+id/campo". A tela com a execução do arquivo 
activity_main.xml da classe ViewGroup pode ser visualizada na Figura 7.1 abaixo:125 
 
Figura 7.1 - Arquivo activity_main.xml gerado pelo novo projeto da classe ViewGroup 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml possuindo do 
lado esquerdo a opção clicada na paleta de layout do tipo ContraintLayout e o componente campo com o nome “Hello 
World”, e no lado direito duas telas da aplicação nas cores branco e verde com o nome centralizado “Hello World”. 
 
Até aqui você aprendeu como criar um novo projeto com a classe ViewGroup. Nas seções 
a seguir, você vai aprender sobre o conceito da classe View e sobre o seu componente ViewGroup. 
 
7.2 Conceito da classe View 
A classe View é considerada a classe principal dos componentes visuais do Android, e suas 
subclasses são utilizadas na criação das interfaces gráficas dos aplicativos. Além disso, é uma classe 
base de qualquer outro componente utilizada com a respectiva classe Activity. Cada subclasse dessa 
classe View representada no Android por android.iew.View deve realizar a implementação do método 
onDraw(Canvas), essa classe Canvas utilizada no método onDraw define os métodos para desenhar 
texto, linhas, bitmaps e outras primitivas gráficas das telas dos aplicativos. 
No Android podemos classificar a classe View em dois tipos de componentes: os widgets 
e os gerenciadores de layout ou ViewGroup. O widget é considerado um componente que herda 
diretamente da classe View, como exemplos existe o elemento TextView representada pela classe 
android.widget.TextView, além de outros elementos como Button, ImageButton, ImageView e o 
 
 
126 
gerenciador de layout ou ViewGroup representado pela classe android.view.ViewGroup, é 
considerado um componente mais popular sendo representado pelos layouts dos aplicativos. A 
imagem representando as classes da View pode ser visualizada na Figura 7.2 abaixo: 
 
Figura 7.2 – Representação da classe View 
Fonte: o autor 
Descrição da imagem: a imagem apresenta o fluxograma de execução da classe View. O retângulo amarelo com a classe 
android.view.View herda do retângulo azul o componente ViewGroup ou gerenciador de layouts representado pela 
classe android.view.ViewGroup que herda cinco retângulo azuis com as classes android.vew.FrameLayout, 
android.view.ConstraintLayout, android.view.RelativeLayout e a classe android.view.TableLayout herdada por 
android.view.LinearLAyout. O retângulo amarelo com a classe android.view.View também herda os componentes da 
Widget representada pelo retângulo azul da classe android.widget.TextView que herda dois retângulos representados 
por android.view.Button e android.widget.EditText, além de herda o quadrado azul representado pela classe 
android.widget.ImageView. 
 
 
7.3 Conceito da classe ViewGroup 
O gerenciador de layout, ou classe ViewGroup, é considerado um componente visual 
responsável por organizar os componentes da tela. Essa classe é representada no Android por 
android.view.ViewGroup, sendo assim considerada a classe principal de todos os gerenciadores de 
layout. Os principais componentes da ViewGroup pode ser visualizado na Tabela 7.1 abaixo. 
 
 
 
 
 
 
127 
Componente Descrição Figura do Layout 
LinearLayout É um 
componente 
utilizado para 
organizar as 
telas na forma 
linear no sentido 
horizontal ou 
vertical. Por 
exemplo, o 
elemento vai ter 
que ser 
posicionar na 
tela de maneira 
horizontalmente 
ou 
verticalmente. 
 
 
 
128 
RelativeLayout É um 
componente 
utilizado para 
posicionar um 
componente de 
forma relativa a 
outro. Por 
exemplo, o 
elemento acima, 
abaixo de outro 
componente já 
existente ou ao 
lado de um 
componente já 
existente. 
 
 
 
129 
ConstraintLayout É similar ao 
componente da 
RelativeLayout, 
ou seja, o seu 
alinhamento é 
feito de relações 
entre as Views 
por meio dos 
seus eixos. Por 
exemplo: o 
componente de 
texto 
centralizado e os 
seus eixos 
definidos como 
X sendo eixo de 
início (esquerdo) 
e fim (direito) e o 
Y o eixo do topo 
(cima) e inferior 
(baixo). 
 
 
Tabela 7.1 – Os principais componentes do ViewGroup ou gerenciadores de layout 
Fonte: o autor 
Descrição da imagem: a descrição de cinco componentes da classe ViewGroup representadas pelos layouts 
ConstraintLayout, linearLayout, e relativeLayout. 
 
Existem diversas classes que herdam de ViewGroup, como por exemplo FrameLayout, 
TableLayout GridLayout, GridView e TableRow. Portanto, nesse e-book de programador de 
dispositivos móveis você vai aprender sobre os três principais tipos de layouts mostrado na Tabela 
3.1, acima. Esses componentes são considerados os mais utilizados como componente visual em telas 
de aplicativos. 
 
 
130 
Nas seções a seguir, você vai aprender sobre os componentes de layout LinearLayout e 
ConstraintLayout e RelativeLayout. 
7.3.1 LinearLayout 
O LinearLayout é considerado o gerenciador de layout mais utilizado, pois possui a 
possibilidade de organizar os seus componentes internos de maneira linear, posicionando objetos um 
abaixo do outro, quando configurado na orientação vertical ou um ao lado do outro, quando 
configurado na orientação horizontal. Na tela da aplicação, a orientação vertical representa o layout 
de cima para baixo e na orientação horizontal representa o layout da esquerda para a direita. 
Toda classe do LinearLayout representada no Android por android.widget.LinearLayout 
possui os atributos layout_width (android:layout_width) e o layout_height (android:layout_height), 
para especificar, respectivamente, a largura e altura do layout. Esses atributos possuem dois valores 
importantes, o match_parent e o wrap_content. O valor do match_parent informa que o componente 
deve ocupar o tamanho definido pelo seu layout, ou seja, o layout deve ocupar toda a tela da 
aplicação e o wrap_content informa que o componente deve ocupar apenas o seu tamanho real, ou 
seja, o layout não possui nenhum tipo de alteração. 
Além desses atributos, o LinearLayout possui o atributo orientation (android:orientation), 
com a função de especificar a orientação dos seus respectivos componentes. Esse atributo 
orientation pode ser representado por valores na horizontal (android:orientation=”horizontal”) ou 
vertical (android:orientation=”vertical”), outra maneira é o valor default (android:orientation=””), o 
qual é utilizado quando não é especificado nenhum valor, assim, os elementos serão exibidos de 
maneira horizontal. Outro atributo é o android:gravity, com a função de localizar a gravidade do 
layout na tela. Esse atributo gravity pode ser representado pelo layout centralizado verticalmente e 
horizontalmente na tela. A imagem representando os componentes LinearLayout pode ser 
visualizada na Figura 7.3 abaixo: 
 
 
131 
 
Figura 7.3 – Telas representando os componentes do LinearLayout 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas de celular na cor fundo branco e com linhas azuis 
representando o layout do LinearLayout. A primeira tela possui uma tela (lado esquerdo) com fundo branco e cinco 
linhas na horizontal representando o LinearLayout horizontal e a segunda tela (lado direito) com fundo branco e três 
linhas na vertical representando o LinearLayout vertical. 
 
Por exemplo, imagine que existe um aplicativo de jogo com o layout LinearLayout com a 
visualização horizontal dos jogos Mario, Lol e Barkbridge. Diante desse exemplo, você vai aprender 
como utilizar a classe LinearLayout na visualização de imagens dos jogos na horizontal. O arquivo 
activity_main.xml mostrado na Figura 7.4, abaixo, possui o layout LinearLayout com orientação 
horizontal e três classes Imageview com as imagens dos jogos Mario, Lol e Barkbridge. Esse código 
do activity_main.xml representando o LinearLayout horizontal pode ser visualizado na Figura 7.4 
abaixo: 
<?xml version=”1.0” encoding=”utf-8”?> 
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”xmlns:tools=”http://schemas.android.com/tools” 
 android:layout_width=”match_parent” 
 android:layout_height=”match_parent” 
 android:orientation=”horizontal” 
 tools:context=”.MainActivity”> 
 <ImageView 
 android:id=”@+id/lol” 
 android:layout_width=”wrap_content” 
 android:layout_height=”wrap_content” 
 android:src=”@mipmap/ic_launcher_mario” 
 /> 
 <ImageView 
 android:id=”@+id/mario” 
 android:layout_width=”wrap_content” 
 android:layout_height=”wrap_content” 
 android:src=”@mipmap/ic_launcher_barkbridge” 
 /> 
 <ImageView 
 android:id=”@+id/ barkbringe” 
 android:layout_width=”wrap_content” 
 
 
132 
 android:layout_height=”wrap_content” 
 android:src=”@mipmap/ic_launcher_lol” 
 /> 
</LinearLayout> 
 
Figura 7.4 – Arquivo activity_main.xml com LinearLayout horizontal 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do LinearLayout horizontal possuindo a representação da tag LinearLayout com os componentes altura, 
largura, orientação horizontal e o contexto do layout, e as três tags de imagens representadas pelas imagens do mario, 
barkbridge e lol. 
 
Depois da execução do arquivo activity_main.xml com LinearLayout horizontal da Figura 
7.4, acima, e gerado o designer da tela no Android Studio visualizado na Figura 7.5 abaixo: 
 
Figura 7.5 – Tela do LinearLayout horizontal 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o LinearLayout horizontal. A 
tela do lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três 
botões do celular e na parte do meio da tela três imagens dos jogos mario, barkbridge e lol organizado na sequência de 
maneira horizontal, a tela do lado direito possui um quadrado com fundo verde representado a tela e três quadrados 
pequenos representados as três imagens organizada de maneira horizontal. 
 
O LinearLayout horizontal configura no arquivo MainActivity.java da Figura 7.6, abaixo, 
esse LinearLayout horizontal possui a declaração do método setOrientation() com orientação 
 
 
133 
horizontal e na imageView é utilizado o método addView() para visualizar uma respectiva imagem. 
Por fim é executado o método setContextview() responsável por configurar o layout XML com o 
LinearLayout. O código do arquivo MainActivity.java do Android Studio representando o LinearLayout 
horizontal pode ser visualizado na Figura 7.6 abaixo: 
 
 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.LinearLayout; 
import android.widget.ImageView; 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 
 
 LinearLayout linearLayout = new LinearLayout(this); 
 linearLayout.setOrientation(LinearLayout.HORIZONTAL); 
 LinearLayout.LayoutParams param = new 
 LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
LinearLayout.LayoutParams.MATCH_PARENT); 
 linearLayout.setLayoutParams(param); 
 
 ImageView imageView = new ImageView(this); 
 imageView.setImageResource(R.mipmap.lol); 
 linearLayout.addView(imageView); 
 
 ImageView imageView2 = new ImageView(this); 
 imageView2.setImageResource(R.mipmap.mario); 
 linearLayout.addView(imageView2); 
 
 ImageView imageView3 = new ImageView(this); 
 imageView3.setImageResource(R.mipmap.barkbringe); 
 linearLayout.addView(imageView3); 
 
 setContentView(linearLayout); 
 } 
} 
 
Figura 7.6 – Arquivo da classe MainActivity.java do LinearLayout horizontal 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do LinearLayout horizontal no arquivo activity_main.xml. 
 
 
134 
 
 
Por exemplo, imagine que existe um aplicativo de jogo com o layout LinearLayout com a 
visualização vertical dos jogos Mario, Lol e barkbridge. Diante desse exemplo, você vai aprender como 
utilizar a classe LinearLayout na visualização de imagens dos jogos na vertical. O arquivo 
activity_main.xml mostrado na Figura 7.7, abaixo, possui o layout LinearLayout com orientação 
vertical e três classes Imageview com as imagens dos jogos Mario, Lol e Barkbridge. Esse código do 
activity_main.xml representando o LinearLayout vertical pode ser visualizado na Figura 7.7 abaixo: 
 
<?xml version=”1.0” encoding=”utf-8”?> 
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” 
 xmlns:tools=”http://schemas.android.com/tools” 
 android:layout_width=”match_parent” 
 android:layout_height=”wrap_content” 
 android:orientation=”vertical” 
 tools:context=”.MainActivity”> 
 <ImageView 
 android:layout_width=”wrap_content” 
 android:layout_height=”wrap_content” 
 android:src=”@mipmap/ic_launcher_mario” 
 /> 
 <ImageView 
 android:layout_width=”wrap_content” 
 android:layout_height=”wrap_content” 
 android:src=”@mipmap/ic_launcher_barkbridge” 
 /> 
 <ImageView 
 android:layout_width=”wrap_content” 
 android:layout_height=”wrap_content” 
 android:src=”@mipmap/ic_launcher_lol” 
 /> 
</LinearLayout> 
 
Figura 7.7 – Arquivo activity_main.xml com LinearLayout vertical 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do LinearLayout vertical possuindo a representação da tag LinearLayout com os componentes altura, 
largura, orientação vertical e o contexto do layout, e as três tags de imagens representadas pelas imagens do mario, 
barkbridge e lol. 
 
Depois da execução do arquivo activity_main.xml com LinearLayout vertical da Figura 7.7, 
acima, e gerado o designer da tela no Android Studio visualizado na Figura 7.8 abaixo: 
 
 
135 
 
Figura 7.8 – Tela do LinearLayout vertical 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o LinearLayout vertical. A tela 
do lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três 
botões do celular e na parte do meio da tela três imagens dos jogos mario, barkbridge e lol organizado na sequência de 
maneira vertical, a tela do lado direito possui um quadrado com fundo verde representado a tela e três quadrados 
pequenos representados as três imagens organizada de maneira vertical. 
 
O LinearLayout vertical configura no arquivo MainActivity.java da Figura 7.9, abaixo, esse 
LinearLayout horizontal possui a declaração do método setOrientation() com orientação vertical e na 
imageView é utilizado o método addView() para visualizar uma respectiva imagem. Por fim é 
executado o método setContextview() responsável por configurar o layout XML com o LinearLayout. 
O código do arquivo MainActivity.java do Android Studio representando o LinearLayout vertical pode 
ser visualizado na Figura 7.9 abaixo: 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.LinearLayout; 
import android.widget.ImageView; 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 
 
136 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 
 LinearLayout linearLayout = new LinearLayout(this); 
 linearLayout.setOrientation(LinearLayout.VERTICAL); 
 LinearLayout.LayoutParams param = new 
 LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
LinearLayout.LayoutParams.MATCH_PARENT); 
 linearLayout.setLayoutParams(param);ImageView imageView = new ImageView(this); 
 imageView.setImageResource(R.mipmap.lol); 
 linearLayout.addView(imageView); 
 
 ImageView imageView2 = new ImageView(this); 
 imageView2.setImageResource(R.mipmap.mario); 
 linearLayout.addView(imageView2); 
 
 ImageView imageView3 = new ImageView(this); 
 imageView3.setImageResource(R.mipmap.barkbringe); 
 linearLayout.addView(imageView3); 
 setContentView(linearLayout); 
 } 
} 
 
Figura 7.9 – Arquivo da classe MainActivity.java do LinearLayout vertical 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do LinearLayout vertical no arquivo activity_main.xml. 
 
7.3.2 ConstraintLayout 
 O ConstraintLayout é considerado o gerenciador de layout padrão do Android, pois possui 
recursos de outros gerenciadores de layout, assim como, uma série de outras funcionalidades desses 
layouts para posicionar e redimensionar os seus componentes. Nesse layout é possível criar layout 
planos, ou seja, sem as características de encadeamento de diversos layouts, como exemplo o 
LinearLayout dentro de FrameLayout e dentro do RelativeLayout. Dessa maneira, os layouts do 
ConstraintLayout possuem a tendência de renderizar de forma mais rápida e eficiente. 
O ConstraintLayout representada pela classe android.widget.ConstraintLayout possui os 
atributos layout_width (android:layout_width) e o layout_height (android: layout_height), para 
definir, consequentemente, a sua largura e a altura. Nesses atributos é utilizado o valor match_parent 
para informar que o componente deve ocupar um tamanho definido pelo seu respectivo layout, ou 
seja, esse layout deve ocupar a tela inteira da aplicação. Além desses atributos, o ConstraintLayout 
 
 
137 
possui os atributos de Bias representando a inclinação do Layout e os atributos Editor representando 
o posicionamento do layout como visualizado na Tabela 7.2 abaixo: 
 
Atributo Descrição 
app:layout_constraintHorizontal_bias define a inclinação horizontal do layout da 
tela 
app:layout_constraintVertical_bias define a inclinação vertical do layout da tela 
tools:layout_editor_absoluteX define o posicionamento do eixo X na tela 
do layout 
tools:layout_editor_absoluteY define o posicionamento do eixo y na tela 
do layout 
 
Tabela 7.2 – Atributos de posicionamento do ConstraintLayout 
Fonte: o autor 
Descrição da imagem: a descrição dos quatro atributos de posicionamento do ConstraintLayout. 
. 
 
Por exemplo, imagine que existe um aplicativo de jogo com o layout ConstraintLayout 
com a descrição textual do jogo no formato de texto. Diante desse exemplo, você vai aprender como 
utilizar a classe ConstraintLayout na visualização da descrição do texto. O arquivo activity_main.xml 
mostrado na Figura 7.10, abaixo, possui o layout Constraintlayout e a classe TextView com a descrição 
“Descrição do jogo!”. Esse código do activity_main.xml representando o layout ConstraintLayout com 
a classe TextView pode ser visualizado na Figura 7.10 abaixo: 
 
<?xml version=”1.0” encoding=”utf-8”?> 
<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=”Descrição do jogo!” 
 app:layout_constraintBottom_toBottomOf=”ontent” 
 app:layout_constraintLeft_toLeftOf=”ontent” 
 app:layout_constraintRight_toRightOf=”ontent” 
 app:layout_constraintTop_toTopOf=”ontent” /> 
 
 
</androidx.constraintlayout.widget.ConstraintLayout> 
 
 
138 
Figura 7.10 – Arquivo activity_main.xml do ConstraintLayout com TextView 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do ConstraintLayout com TextView possuindo a representação da tag ConstraintLayout com os 
componentes altura, largura e o contexto do layout, e a tag do TextView com os componentes altura, largura e texto 
com a mensagem “Descrição do jogo!”. 
 
Depois da execução do arquivo activity_main.xml do ConstraintLayout com TextView da 
Figura 7.10, acima, e gerado o designer da tela no Android Studio visualizado na Figura 7.11 abaixo: 
 
 
Figura 7.11 – Tela do ConstraintLayout com TextView 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o ConstraintLayout com 
TextView. A tela do lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra 
inferior três botões do celular e na parte do meio o texto descrição do jogo na cor cinza, a tela do lado direito possui um 
quadrado com fundo verde representado a tela e quadrado centralizado na tela com o nome “Descrição do jogo”. 
 
O ConstraintLayout com texto configura no arquivo MainActivity.java da Figura 7.12, 
abaixo, esse ConstraintLayout possui a declaração do método SetId() com o identificador do 
ConstraintLayout e no TextView é utilizado o método addView() para visualizar a mensagem do texto 
“descrição do jogo”. Por fim é executado o método setContextview() responsável por configurar o 
 
 
139 
layout XML com o ConstraintLayout. O código do arquivo MainActivity.java do Android Studio 
representando o ConstraintLayout com TextView pode ser visualizado na Figura 7.12 abaixo: 
 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import androidx.constraintlayout.widget.ConstraintLayout; 
import android.widget.TextView; 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 
 ConstraintLayout constraintLayout = new ConstraintLayout(this); 
 constraintLayout.setId(R.id.constraintLayout); 
 ConstraintLayout.LayoutParams param = new 
ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, 
ConstraintLayout.LayoutParams.MATCH_PARENT); 
 constraintLayout.setLayoutParams(param); 
 
 TextView textView = new TextView(this); 
 textView.setText(“descrição do jogo”); 
 constraintLayout.addView(textView); 
 
 setContentView(constraintLayout); 
 } 
} 
 
Figura 7.12 – Arquivo da classe MainActivity.java do ConstraintLayout com TextView 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do ConstraintLayout com TextView no arquivo activity_main.xml. 
 
 
Por exemplo, imagine que existe um aplicativo de jogo com o layout ConstraintLayout 
com o botão de acesso ao jogo. Diante desse exemplo, você vai aprender como utilizar a classe 
ConstraintLayout utilizando um botão do jogo. O arquivo activity_main.xml mostrado na Figura 7.13, 
abaixo, possui o layout ConstraintLayout e a classe Button com a descrição=”Acesso ao jogo”. Esse 
código do activity_main.xml representando o layout ConstraintLayout com a classe Button pode ser 
visualizado na Figura 7.13 abaixo: 
 
 
 
140 
<?xml version=”1.0” encoding=”utf-8”?> 
<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”> 
<Button 
 android:id=”@+id/button” 
 android:layout_width=”wrap_content” 
 android:layout_height=”wrap_content” 
 android:text=”Acessoao jogo” 
 
 tools:layout_editor_absoluteX=”135dp” 
 tools:layout_editor_absoluteY=”221dp” /> 
</androidx.constraintlayout.widget.ConstraintLayout> 
 
Figura 7.13 – Arquivo activity_main.xml do ConstraintLayout com Button 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do ConstraintLayout com Button possuindo a representação da tag ConstraintLayout com os 
componentes altura, largura e o contexto do layout, e a tag do Button com os componentes id do botão, altura, largura 
e texto com a mensagem “Acesso ao jogo”. 
 
Depois da execução do arquivo activity_main.xml do ConstraintLayout com Button da 
Figura 7.13, acima, e gerado o designer da tela no Android Studio visualizado na Figura 7.14 abaixo: 
 
Figura 7.14- Tela do ConstraintLayout com Button 
Fonte: o autor 
 
 
141 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o ConstraintLayout com 
botão. A tela do lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra 
inferior três botões do celular e na parte do meio o botão na cor azul com o texto acesso ao jogo, a tela do lado direito 
possui um quadrado com fundo verde representado a tela e um quadrado verde claro centralizado na tela 
representando o botão com o nome acesso ao jogo na cor branca. 
 
 
O ConstraintLayout com botão configura no arquivo MainActivity.java da Figura 7.15, 
abaixo, esse ConstraintLayout possui a declaração do método SetId() com o identificador do 
ConstraintLayout e no Button é utilizado o método addView() para visualizar a mensagem do botão 
“Acesso ao jogo’. Por fim é executado o método setContextview() responsável por configurar o layout 
XML com o ConstraintLayout. O código do arquivo MainActivity.java do Android Studio 
representando o ConstraintLayout com Button pode ser visualizado na Figura 7.15 abaixo: 
 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import androidx.constraintlayout.widget.ConstraintLayout; 
import android.widget.Button; 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 
 
 ConstraintLayout constraintLayout = new ConstraintLayout(this); 
 constraintLayout.setId(R.id.constraintLayout); 
 ConstraintLayout.LayoutParams param = new 
ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, 
ConstraintLayout.LayoutParams.MATCH_PARENT); 
 constraintLayout.setLayoutParams(param); 
 Button button = new Button(this) 
 button.setText(“Acesso ao jogo”); 
 constraintLayout.addView(button); 
 setContentView(constraintLayout); 
 } 
} 
 
 
 
Figura 7.15 – Arquivo da classe MainActivity.java do ConstraintLayout com Button 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do ConstraintLayout com Button no arquivo activity_main.xml. 
 
 
142 
 
7.3.3 RelativeLayout 
O componente RelativeLayout também é bastante utilizada, através desse layout é 
possível posicionar um componente em relação ao outro. Nesse layout também é possível especificar 
um determinado elemento para aparecer ao lado direito ou lado esquerdo de uma determinada 
imagem, assim como pode ser posicionado acima ou abaixo dessa imagem. 
Mas como esse componente deve aparecer ao lado, abaixo ou acima de outro 
componente já existente? Para realizar isso você deve definir um ID (identificador) para cada 
componente da tela, pois o posicionamento de um conjunto depende do outro. Com isso, é possível 
com o RelativeLayout dizer para um componente “A” fique abaixo do componente “B”. Os atributos 
importantes que podem ser usados pelo RelativeLayout podem ser visualizados na Tabela 7.3, abaixo. 
 
Atributo Descrição 
android:layout_below Posiciona o elemento abaixo de outro. 
android:layout_above Posiciona o elemento acima de outro. 
 
android:layout_toLeftOf Posiciona o elemento à esquerda de outro. 
 
android:layout_toRightOf Posiciona o elemento à direita de outro 
android:layout_marginTop 
 
Utilizado para definir um espaço (margem) na parte 
superior (Top) do componente 
android:layout_marginBottom Utilizado para definir um espaço (margem) na parte 
inferior (Bottom) do componente. 
android:layout_marginRight 
 
Utilizado para definir um espaço (margem) na parte 
direita (Right) do componente. 
android:layout_marginLeft Utilizado para definir um espaço (margem) na parte 
esquerda (Left) do componente 
Tabela 7.3 – Atributos de posicionamento do RelativeLayout 
Fonte: o autor 
Descrição da imagem: a descrição dos oito atributos de posicionamento do RelativeLayout. 
 
 
143 
 
Por exemplo, imagine que existe um aplicativo de jogo com o layout RelativeLayout com 
um formulário de cadastro do jogo. Diante desse exemplo, você vai aprender como utilizar a classe 
RelativeLayout no formulário de cadastro o jogo com os atributos de posicionamento 
layout_marginBottom e layout_marginLeft. O arquivo activity_main.xml mostrado na Figura 7.16, 
abaixo, possui o layout RelativeLayout, a classe TextView possuindo a descrição "Formulário de 
cadastro de jogo", as três classes do TextView possuindo os nomes Login, senha e confirmação da 
senha e as três classes do EditText como preenchimento desse formulário. Esse código do 
activity_main.xml representando o layout RelativeLayout com as classes ImageView e EditText pode 
ser visualizado na Figura 7.16 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:id="@+id/txtViewDescricao" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:layout_margin="25dp"" 
 android:gravity="center" 
 android:textSize="18dp" 
 android:text="Formulário de cadastro de jogo" /> 
 
 <TextView 
 android:id="@+id/txtViewLogin" 
 android:layout_width="155dp" 
 android:layout_height="wrap_content" 
 android:layout_below="@+id/txtViewDescricao" 
 android:layout_marginBotton="20dp" 
 android:layout_marginLeft="15dp" 
 android:text="Login" /> 
 
 
 <EditText 
 android:id="@+id/editTxtLogin" 
 Você pode entender um pouco sobre a execução do RelativeLayout consultando 
este link: https://www.youtube.com/watch?v=rNyrFNxVwZs 
https://www.youtube.com/watch?v=rNyrFNxVwZs
 
 
144 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:layout_alignTop="@+id/txtViewLogin" 
 android:layout_toRightOf="@+id/txtViewLogin" 
 android:background="@android:drawable/editbox_background"/> 
 
 <TextView 
 android:id="@+id/txtViewSenha" 
 android:layout_width="155dp" 
 android:layout_height="wrap_content" 
 android:layout_below="@+id/txtViewLogin" 
 android:layout_marginBottom="20dp" 
 android:layout_marginLeft="15dp" 
 android:text="Senha"/> 
 
 <EditText 
 android:id="@+id/editTxtSenha" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:layout_alignTop="@+id/txtViewSenha" 
 android:layout_toRightOf="@+id/txtViewSenha" 
 android:background="@android:drawable/editbox_background"/> 
 
 <TextView 
 android:id="@+id/txtViewConfirmacaoDeSenha" 
 android:layout_width="155dp" 
 android:layout_height="wrap_content"android:layout_below="@+id/editTxtSenha" 
 android:layout_marginBottom="20dp" 
 android:layout_marginLeft="15dp" 
 android:text="Confirmação de senha/> 
 
 <EditText 
 android:id="@+id/editTxtConfirmacaoDeSenha" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:background="@android:drawable/editbox_background" /> 
 
</RelativeLayout> 
 
Figura 7.16 - Arquivo activity_main.xml com RelativeLayout 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do RelativeLayout possuindo a representação da tag RelativeLayout com os componentes altura, largura, 
e as quatro tags de TextView com a descrição do texto do formulário e as três tags do EditText com campos para 
preencher o login, senha e a confirmação da senha do formulário. 
 
Depois da execução do arquivo activity_main.xml com RelativeLayout da Figura 7.16, 
acima, e gerado o designer da tela no Android Studio visualizado na Figura 7.17 abaixo: 
 
 
145 
 
 Figura 7.17 – Tela do RelativeLayout 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o RelativeLayout. A tela do lado 
esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três botões do 
celular e na parte do meio possui uma tela branca com um campo de texto na parte superior com a descrição 
“formulário de cadastro de jogo”, em baixo um campo de texto login e um campo para preencher o login, em seguida o 
campo de texto senha e um campo para preencher a senha, por fim o campo com o texto confirmação da senha, a tela 
do lado direito possui um quadrado na parte superior com o nome “formulário de cadastro de jogo”, em baixo dois 
quadrados com login e o campo para editar o login, em seguida dois quadrados com o texto senha e o campo para 
editar a senha, por fim um quadrado com o texto de confirmação da senha 
 
 
7.4 Dimensões dos componentes do layout 
As dimensões de altura e largura geralmente utilizam valores como match_parent e 
wrap_content. Entretanto, outra possibilidade possível é definir os valores específicos, ou seja, 
valores numéricos com notações indicando a unidade que está sendo utilizado. Por exemplo: 15px 
(pixels) ou 16mm (milímetros). Dessa forma é possível modificar a dimensão do layout utilizando o 
tamanho do componente. As dimensões no Android e as suas respectivas notações pode ser 
visualizado na Tabela 7.4. 
 
 
146 
Notação Descrição 
px (pixels) É uma medida que corresponde ao número de pixels que será ocupado na 
tela. 
in (inches) Inches significa polegadas, é uma medida baseada no tamanho físico em 
polegadas da tela. 
mm (milímetros) É uma medida baseada no tamanho em milímetros da tela. 
pt (pontos) É uma medida baseado no tamanho físico de pontos da tela. A medida pt 
corresponde a 1/72 de uma polegada. 
dp(Density-
independent 
Pixels) 
É a unidade relacionada à resolução da tela. Por exemplo, caso a resolução 
da tela é de 160 dpi, significa que para cada dp representa 1 pixel em um 
total de 160. A notação dp é a mais utilizada. 
Sp (Scale-
independent 
Pixels) 
É a unidade mais recomendada quando pretende especificar o tamanho 
de uma fonte, para que esta seja automaticamente ajustada conforme a 
resolução da tela do usuário. A notação sp é semelhante a notação dp. 
 
Tabela 7.4 – Notações com dimensões dos componentes de layout 
Fonte: o autor 
Descrição da imagem: a descrição das seis notações com dimensões dos componentes de layout representadas por px 
(pixels), in (inches), mm (milímetros), pt (pontos), dp(Density-independent Pixels) e Sp (Scale-independent Pixels). 
 
 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
• A classe View 
• A classe ViewGroup 
• O layout LinearLayout 
• O layout ConstraintLayout 
• O layout RelativeLayout 
• As dimensões dos componentes do layout 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
 
147 
 
 Agora, o próximo passo é mergulhar na competência 8, que trata sobre conceitos da 
classe Widget gerada pela classe View e sobre os componentes TextView, EditText e ImageView. 
Vamos juntos? 
 
 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a vídeo aula sobre a competência. 
 
 
148 
8. Competência 08 | Conhecer os conceitos de interface gráfica – view 
Caro estudante, vamos iniciar a oitava competência! Nesta competência você vai 
aprender os conceitos de interface gráfica utilizando a classe widget que herda diretamente da classe 
view. A classe widget possui os elementos TextView e EditText relacionados para texto. Além disso, 
será mostrado o componente ImageView relacionado a imagem. 
Vamos entender sobre view! 
 
8.1 Criando um novo projeto com a classe Widget 
A competência 1 introduziu os conceitos básicos de um sistema operacional móvel, e 
ensinou a criar e a configurar o ambiente de desenvolvimento, o Android Studio. Você lembra? Na 
criação desse novo projeto é gerado o arquivo activity_main.xml responsável por modificar a classe 
Widget. A declaração da classe Widget utiliza alguns componentes nas paletas Common, Text e 
Buttons. Os principais componentes mostrado nessa paleta são textView, editText, imageView, 
button, imageButton, checkBox e radioButton. A declaração do identificador desses componentes 
ocorre na paleta atributos com a modificação do nome do atributo id (identificador). Por exemplo: o 
identificador do textView declarado na Figura 8.1, abaixo, possui o id representado pelo nome 
“identificador” e a sua declaração no arquivo XML é representado por 
android:id="@+id/identificador". A tela com a execução do arquivo activity_main.xml da classe 
Widgets pode ser visualizada na Figura 8.1 abaixo: 
 
 
149 
 
Figura 8.1 - Arquivo activity_main.xml gerado pelo novo projeto da classe Widgets 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml 
possuindo do lado esquerdo a opção clicada na paleta Common do tipo TextView e o componente campo com o nome 
Hello World, e no lado direito duas telas da aplicação nas cores branco e verde com o nome centralizado Hello World. 
 
Até aqui você aprendeu como criar um novo projeto com a classe Widgets. Na seção a 
seguir, você vai aprender sobre os conceitos da classe Widgets com a descrição dos seus principais 
métodos. 
 
8.2 Conceito da classe Widget 
A classe widgets é responsável por herdar da classe View e são utilizados para estruturar 
o layout das telas de uma aplicação Android. Essa subclasse de View implementa o método onDraw 
(Canvas) que é responsável por desenhar o componente na tela. Essa classe Canvas utilizada no 
onDraw define os métodos para desenhar texto, linhas, bitmaps e outras primitivas gráficas. 
Geralmente utilizamos alguns componentes prontos do próprio Android, como TextViews, EditText e 
Buttons, mas você pode criar o seu próprio componente, por meio da sua própria View, com a classe 
que herde de View e implementar o método onDraw (Canvas). Os métodos mais importantes da 
classe View pode ser visualizado na Tabela 8.1 abaixo: 
 
 
 
150 
Método Descrição 
onDraw(Canvas) O método onDraw é responsável por desenhar algum 
componente de layout na tela do Android. 
setPadding(direita, 
abaixo, esquerda, acima) 
O método setPadding é responsável por informar o 
espaçamento à direita, abaixo, à esquerda e acima em pixels 
que devem ser colocados na tela do Android antes de inserir 
algum componente. No XML esse método equivale a função 
android:padding que define um único valor e esse mesmo 
valor ser aplicado a todos os parâmetros.Caso necessite 
informar um valor diferente para cada espaçamento, deve 
utilizar os seguintes atributos android:paddingLeft, 
android:paddingTop, android:paddingRight e 
android:paddingBottom, respectivamente. 
setVisibility(visibility) O método setVisibility pode receber três valores definidos 
pelas constantes View.VISIBLE, View.INVISIBLE e 
View.GONE. A constante View.VISIBLE é responsável pela 
exibição do componente na tela, já as constantes 
View.INVISIBLE e View.GONE são responsáveis pela não 
exibição do componente na tela. A diferença entre essas 
duas constantes é que a constante View.INVISIBLE não exibe 
o elemento, porém deixa o espaço que ele usaria reservado 
na tela (em branco), enquanto a constante View.GONE faz 
com que se remova tanto o elemento quanto o espaço 
utilizado na tela. No XML esse método é equivalente ao 
android:visibility que recebe os seguintes valores: visible, 
invisible e gone. 
 
 
Tabela 8.1 – Métodos da classe View 
Fonte: o autor 
Descrição da imagem: a descrição dos três métodos da classe View. 
 
 
151 
 
Nas seções a seguir, você vai aprender sobre os componentes TextView, EditText e 
ImageView. Além disso, os componentes button, ImageButton, CheckBox e RadioButton serão 
mostrados na próxima competência. 
 
8.2.1 TextView 
A classe TextView é considerada uma subclasse da classe View responsável por desenhar 
um determinado texto na tela das aplicações. A classe TextView no arquivo XML é representado pela 
seguinte sintaxe <TextView/>. Para escrever um texto normal na tela é utilizada a seguinte 
declaração android:text="Hello World". Assim como a declaração do endereço de site é utilizada a 
seguinte declaração android:text=" https://ead.educacao.pe.gov.br/". A seguir será mostrado alguns 
exemplos para utilizar a classe TextView com descrição de nome, descrição de site e utilizando nomes 
com diversas cores. 
Por exemplo, imagine que existe um determinado layout de aplicativo possuindo textos 
com a descrição de nome, descrição de site e os nomes com diversas cores. Diante desse exemplo, 
você vai aprender como utilizar a classe TextView para editar formato de texto. O arquivo 
activity_main.xml mostrado na Figura 5.2, abaixo, possui o layout LinearLayout e classe TextView. 
Esse código do activity_main.xml representando o layout LinearLayout e a classe TextView com 
descrição de nome, descrição de site e utilizando nomes com diversas cores pode ser visualizado na 
Figura 8.2 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 <TextView 
 android:id="@+id/text01" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="Hello World!" 
 /> 
 <TextView 
 
 
152 
 android:id="@+id/text02" 
 android:layout_width="wrap_content" 
 android:layout_height="match_parent" 
 android:autoLink="web" 
 android:text="https://ead.educacao.pe.gov.br/" 
 /> 
 <TextView 
 android:id="@+id/text03" 
 android:layout_width="wrap_content" 
 android:layout_width="wrap_content" 
 android:background="#0000ff" 
 android:textColor="#ffffff" 
 android:text="Texto branco (text_color) e fundo azul (background)" 
 /> 
 
</LinearLayout> 
 
Figura 8.2 – Arquivo activity_main.xml do TextView 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do TextView possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e as três tags de TextView representadas pelas propriedades de texto normal com o nome Hello 
World!, texto com o site https://ead.educacao.pe.gov.br/" e com o texto personalizado por cores com o nome Texto 
branco (text_color) e fundo azul (background). 
 
 
Depois da execução do arquivo activity_main.xml com TextView com descrição de nome, 
descrição de site da Figura 8.2, acima, e gerado o designer da tela no Android Studio visualizado na 
Figura 8.3 abaixo: 
 
 
153 
 
Figura 8.3 – Tela do TextView 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o TextView. A tela do lado 
esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três botões do 
celular e na parte do meio possui uma tela branca com a descrição do nome hello world com de texto preta, a descrição 
do site https://ead.educacao.pe.gov.br/ com cor vermelha e o texto Texto branco (text_color) e a descrição “Texto 
branco (text_color) e fundo azul (background)” com cor de texto branca e negrito azul, a tela do lado direito possui um 
quadrado com fundo verde representado a tela e três retângulos representando as três descrições. 
 
 
O TextView configura no arquivo MainActivity.java da Figura 8.4, abaixo, esse TextView 
possui um ID (identificador) definido pelo arquivo XML para recuperar um determinado componente 
no código Java, dessa maneira é possível executar o identificador R.id.text01 utilizando o método 
findViewById(), em seguida é utilizado o método setText() para mostrar o texto Hello World!. O código 
do arquivo MainActivity.java do Android Studio representando o TextView pode ser visualizado na 
Figura 8.4 abaixo: 
 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.TextView 
 
 
 
154 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 TextView textView = (TextView)findViewById((R.id.text01)); 
 textView.setText("Hello World!"); 
 } 
} 
 
 
 
Figura 8.4 – Arquivo da classe MainActivity.java do TextView 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do TextView no arquivo activity_main.xml. 
 
 
8.2.2 EditText 
A classe EditText é utilizada quando se pretende criar um campo, onde um determinado 
usuário deve digitar uma informação do texto. A classe EditText no arquivo XML é representada pela 
seguinte sintaxe <EditText/>. A propriedade android:inputType é responsável por indicar o tipo de 
entrada mais adequado para a digitação dos campos. Para escrever um texto normal é utilizada a 
seguinte declaração android:inputType ="text". Os principais valores utilizando o EditText pode ser 
visualizado na Tabela 8.2 abaixo: 
 
Propriedade Descrição 
text Responsável pela descrição de texto normal 
textEmailAddress Responsável pela descrição do endereço de e-mail 
textUri Responsável pela descrição de endereços com recursos com 
URL. 
textPassword Responsável pela descrição de campo com senha. 
number Responsável pela descrição de apenas números sem sinal. 
NumberSigned Responsável pela descrição de apenas números com sinal. 
phone Responsável pela descrição de número de telefone. 
 
 
 
155 
Tabela 8.2 – Representação das propriedades do EditText 
Fonte: o autor 
Descrição da imagem: a descrição das seis propriedades do EditText. 
 
Essa classe EditText é utilizada também no processo de criação de formulários. A seguir 
será mostrado alguns exemplos para utilizar a classe EditText com os componentes text, 
textEmailAddress, textUri, textPassword, number, NumberSigned e phone. 
Por exemplo, imagine que existe um determinado layout com campos de descrição do 
jogo, e-mail do jogo, site do jogo,senha do jogo, número de acesso do jogo e telefone de contato do 
jogo. Diante desse exemplo, você vai aprender como utilizar a classe EditText na visualização de 
campos de edição utilizado nesse jogo. O arquivo activity_main.xml mostrado na Figura 8.5, abaixo, 
possui o layout LinearLayout e as classes TextView e EditText. Esse código do activity_main.xml 
representando o layout LinearLayout e as classes TextView e EditText pode ser visualizado na Figura 
8.5 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:id="@+id/text01" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:textSize="20dp" 
 android:text="Descrição do jogo:" 
 /> 
 
 <EditText 
 android:id="@+id/edit01" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content"" 
 android:textSize="20dp" 
 android:inputType="text" 
 /> 
</LinearLayout> 
 
Figura 8.5 – Arquivo activity_main.xml do EditText 
Fonte: O autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do EditText possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e a tag TextView representando por texto a mensagem “descrição do jogo” e a tag EditText 
 
 
156 
representando como tipo de entrado um texto. 
 
Depois da execução do arquivo activity_main.xml com EditText da Figura 8.5, acima, e 
gerado o designer da tela no Android Studio visualizado na Figura 8.6 abaixo: 
 
 
Figura 8.6 – Tela do EditText 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o EditText. A tela do lado 
esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três botões do 
celular e na parte do meio possui uma tela branca com a descrição do texto com a mensagem “descrição do jogo” e 
uma linha representando o tipo de entrada com texto, a tela do lado direito possui um quadrado com fundo verde 
representado a tela e dois retângulos representando a descrição do texto e o campo de entrada de texto representada 
por EditText. 
 
O EditText configura no arquivo MainActivity.java da Figura 8.7, abaixo, esse EditText 
possui um ID (identificador) definido pelo arquivo XML para recuperar um determinado componente 
no código Java, dessa maneira é possível executar o identificador R.id.edit01 utilizando o método 
findViewById(), em seguida é utilizado o método setText() para mostrar o texto o jogo possui três 
telas com acesso ao jogo do mario, Lol e barkbringe!"!. O código do arquivo MainActivity.java do 
Android Studio representando o EditText pode ser visualizado na Figura 8.7 abaixo: 
 
 
157 
 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.EditText 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 EditText editText = (EditText) findViewById((R.id.edit01)) ; 
 editText.setText("O jogo possui três telas com acesso ao jogo do 
mario, Lol e barkbringe!"); 
 
 } 
} 
 
 
Figura 8.7 – Arquivo da classe MainActivity.java do EditText 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do EditText no arquivo activity_main.xml. 
 
O código XML do Android Studio representando o layout LinearLayout e a classe TextView 
com inputType textEmailAddress pode ser visualizado na Figura 8.8 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:textSize="20dp" 
 android:text="Email do jogo:" 
 /> 
 
 <EditText 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:textSize="20dp" 
 android:inputType="textEmailAddress" 
 /> 
 
 
158 
 
</LinearLayout> 
 
Figura 8.8 - Arquivo activity_main.xml do EditText com textEmailAddress 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do EditText com endereço de e-mail possuindo a representação da tag LinearLayout com os 
componentes altura, largura e orientação vertical, e a tag TextView representando por texto a mensagem “Email do 
jogo” e a tag EditText representando como tipo de entrado uma endereço de e-mail. 
 
O código XML do Android Studio representando o layout LinearLayout e a classe TextView 
com inputType textUri pode ser visualizado na Figura 8.9 abaixo: 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:textSize="20dp" 
 android:text="site do jogo:" 
 /> 
 
 <EditText 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:textSize="20dp" 
 android:inputType="textUri" 
 /> 
 
</LinearLayout> 
 
Figura 8.9 - Arquivo activity_main.xml do EditText com textUri 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do EditText com endereço de site possuindo a representação da tag LinearLayout com os componentes 
altura, largura e orientação vertical, e a tag TextView representando por texto a mensagem “site do jogo” e a tag 
EditText representando como tipo de entrado uma endereço de site. 
 
O código XML do Android Studio representando o layout LinearLayout e a classe TextView 
com inputType textPassword pode ser visualizado na Figura 8.10 abaixo: 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 
 
159 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:textSize="20dp" 
 android:text="Senha do jogo:" 
 /> 
 
 <EditText 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:inputType="textPassword" 
 /> 
 
</LinearLayout> 
 
Figura 8.10 – Arquivo activity_main.xml do EditText com textPassword 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação da senha de acesso possuindo a representação da tag LinearLayout com os componentes altura, largura 
e orientação vertical,e a tag TextView representando por texto a mensagem “senha do jogo” e a tag EditText 
representando como tipo de entrado uma senha de acesso. 
 
O código XML do Android Studio representando o layout LinearLayout e a classe TextView 
com inputType number pode ser visualizado na Figura 8.11 abaixo: 
 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:textSize="20dp" 
 android:text="Número de acesso do jogo:" 
 /> 
 
 <EditText 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:inputType="number" 
 /> 
</LinearLayout> 
 
Figura 8.11 - Arquivo activity_main.xml do EditText com number 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
 
 
160 
representação do número possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e a tag TextView representando por texto a mensagem “Número de acesso do jogo” e a tag EditText 
representando como tipo de entrado uma senha de acesso. 
 
O código XML do Android Studio representando o layout LinearLayout e a classe TextView 
com inputType NumberSigned pode ser visualizado na Figura 8.12 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:textSize="20dp" 
 android:text="Pontuação do jogo:" 
 /> 
 <EditText 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:inputType="numberSigned" 
 /> 
</LinearLayout> 
 
Figura 8.12- Arquivo activity main.xml do EditText com NumberSigned 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do número com ponto possuindo a representação da tag LinearLayout com os componentes altura, 
largura e orientação vertical, e a tag TextView representando por texto a mensagem “Pontuação do jogo” e a tag 
EditText representando como tipo de entrado uma pontuação do jogo. 
 
O código XML do Android Studio representando o layout LinearLayout e a classe TextView 
com inputType phone pode ser visualizado na Figura 8.13 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:layout_width="match_parent" 
 
 
161 
 android:layout_height="wrap_content" 
 android:textSize="20dp" 
 android:text="telefone de contato do jogo:" 
 /> 
 <EditText 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:inputType="phone" 
 /> 
</LinearLayout> 
 
Figura 8.13 - Arquivo activity main.xml do EditText com phone 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do telefone possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e a tag TextView representando por texto a mensagem “Telefone de contato do jogo” e a tag 
EditText representando como tipo de entrado um numeração com telefone. 
 
 
8.2.3 Imageview 
 A classe ImageView é utilizada quando se pretende visualizar uma determinada imagem. 
A classe ImageView é representada pela seguinte sintaxe <ImageView/>. Para declarar um 
identificador com o nome da imagem é utilizada a seguinte declaração 
android:id="@+id/imageView" para a declaração da altura da imagem é utilizada a seguinte 
declaração android: layout_width="match_parent" e da largura da imagem a seguinte declaração 
android: layout_height="wrap_content". Cada imagem possui uma respectiva pasta com o caminho 
da imagem representada pela seguinte declaração android:src="@drawable/ic_launcher". Essa 
imagem pode ser representada por imagem normal (com apenas a figura), imagem da internet 
através de URL e imagem por representação de catálogo. 
Por exemplo, imagine que existe um determinado layout com a visualização das imagens 
dos jogos Mario e Lol. Diante desse exemplo, você vai aprender como utilizar a classe ImageView na 
visualização de imagens de jogos. O arquivo activity_main.xml mostrado na Figura 8.14, abaixo, 
possui o layout LinearLayout e a classe ImageView. Esse código do activity_main.xml representando 
o layout LinearLayout e a classe ImageView pode ser visualizado na Figura 8.14 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 
 
162 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <ImageView 
 android:id="@+id/imgBtn01" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:src="@mipmap/ic_launcher_mario" 
 /> 
 <ImageView 
 android:id="@+id/imgBtn02" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:src="@mipmap/ic_launcher_lol" 
 /> 
</LinearLayout> 
 
Figura 8.14 – Arquivo activity main.xml do ImageView 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação da ImageView possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e as duas tags ImageView representada pelas imagens do jogo do Mario e o jogo do Lol. 
 
Depois da execução do arquivo activity_main.xml com ImageView da Figura 8.14, acima, 
e gerado o designer da tela no Android Studio visualizado na Figura 8.15 abaixo: 
 
 
 
163 
 
Figura 8.15 – Tela da Imageview 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando a Imageview. A tela do 
lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três 
botões do celular e na parte do meio possui uma tela branca com as imagens dos jogos Mario e Lol, a tela do lado 
direito possui um quadrado com fundo verde representado a tela e dois retângulos com o nome ImageView 
representando as duas imagens. 
 
A ImageView configura no arquivo MainActivity.java da Figura 8.16, abaixo, essa 
ImageView possui um ID (identificador) definido pelo arquivo XML para recuperar um determinado 
componente no código Java, dessa maneira é possível executar os identificadores R.idimgBtn01 e 
R.id.imgBtn02 utilizando o método findViewById(), em seguida é utilizado o método 
setImageResource() para acessar as imagens do mario e lol na pasta do Android Studio. O código do 
arquivo MainActivity.java do Android Studio representando a ImageView pode ser visualizado na 
Figura 8.16 abaixo: 
 
 
 
164 
 
package com.example.eadpernambuco;import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget. ImageView 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 ImageView imageView1 = (ImageView) findViewById(R.id.imgBtn01); 
 imageView1.setImageResource(R.mipmap.mario); 
 ImageView imageView2 = (ImageView) findViewById(R.id.imgBtn02); 
 imageView2.setImageResource(R.mipmap.lol); 
 
 } 
} 
 
 
Figura 8.16 – Arquivo da classe MainActivity.java do ImageView 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do ImageView no arquivo activity_main.xml. 
 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
• A classe Widgets 
• O componente TextView 
• O componente EditText 
• O componente ImageView 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
 
165 
 
 
Agora, o próximo passo é mergulhar na competência 9, que trata sobre conceitos 
avançados da classe Widget gerada pela classe View e sobre os componentes Button, ImageButton, 
CheckBox, RadioButton e Spinner. Vamos juntos? 
 
 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a vídeo aula sobre a competência. 
 
 
166 
9. Competência 09 | Utilizar recursos avançados de view 
Caro estudante, vamos iniciar a nona competência! Nesta competência você vai aprender 
os conceitos avançados da classe widget que herda diretamente da classe view. A classe widget possui 
outros elementos avançados utilizando botão, como ImageButton e o Button. Em seguida você vai 
aprender sobre os componentes Checkbox e RadioButton. Por fim sobre o componente Spinner. 
Vamos aprofundar mais sobre os avanços da classe widget! 
 
9.1 Avanços da Widget 
A classe widget possui diversos outros componentes que herdam diretamente da classe 
view. Os componentes que utilizam botões como o Button e o ImageButton, além dos componentes 
com CheckBox, RadioButtone e Spinner. O CheckBox é responsável por desenhar uma caixa de 
seleção ou caixa de verificação utilizando elemento da interface gráfica, RadioButton responsável por 
selecionar uma única opção de uma determinada lista e o Spinner é responsável por desenhar na tela 
um combobox, ou seja, um conjunto de opções. Nas seções a seguir você vai aprender sobre os 
componentes Button, ImageButton, CheckBox, RadioButton e Spinner. 
 
9.1.1 Button 
A classe Button é responsável pela criação de novos botões na tela das aplicações. A classe 
Button no arquivo XML é representado pela seguinte sintaxe <Button />. Para declarar um botão é 
necessário a identificação do botão com a seguinte sintaxe android:id="@+id/bt01". A declaração de 
altura e largura são representadas pelas seguintes sintaxes android:layout_width ="match_parent" e 
android: layout_height="wrap_content" e para declarar o nome do texto do botão é utilizada a 
seguinte sintaxe android:text="Botão 01". 
Por exemplo, imagine que existe um determinado layout de aplicativo possuindo botão 
de acesso dos jogos de Mario e Lol. Diante desse exemplo, você vai aprender como utilizar a classe 
Button para criar um novo botão. O arquivo activity_main.xml mostrado na Figura 9.1, abaixo, possui 
o layout LinearLayout e duas classes Button com os botões “botão de acesso do Mario” e “botão de 
acesso do Lol”. Esse código do activity_main.xml representando a classe Button pode ser visualizado 
na Figura 9.1 abaixo: 
 
 
167 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <Button 
 android:id="@+id/btn01" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:text="Botão de acesso do Mario"/> 
 
 <Button 
 android:id="@+id/btn02" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:text="Botão de acesso do Lol"/> 
 
</LinearLayout> 
 
Figura 9.1 – Arquivo activity main.xml do Button 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do Button possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e as duas tags Button representada pelos botões com o nome “Botão de acesso do Mario” e “Botão 
de acesso do Lol”. 
 
Depois da execução do arquivo activity_main.xml com Button da Figura 9.1, acima, e 
gerado o designer da tela no Android Studio visualizado na Figura 9.2 abaixo: 
 
 
 
168 
Figura 9.2 – Tela do Button 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o componente button. A tela do 
lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três botões 
do celular e na parte do meio possui uma tela branca com dois botões na cor cinza com os nomes “BOTÃO DE ACESSO 
DO MARIO” e “BOTÃO DE ACESSO DE LOL”, a tela do lado direito possui um quadrado com fundo verde representado a 
tela e dois retângulos representando os botões com os nomes “BOTÃO DE ACESSO DO MARIO” e “BOTÃO DE ACESSO 
DE LOL”. 
 
 
O Button é executado no arquivo MainActivity.java da Figura 9.3, abaixo, possuindo um 
ID (identificador) definido pelo arquivo XML para recuperar um determinado componente no código 
Java, dessa maneira é possível executar os identificadores R.id.btn01 e R.id.btn02 utilizando o método 
findViewById(), em seguida é utilizado o método setText() para mostrar o texto do botão 01 “Botão 
de acesso do Mario e do botão 02 “Botão de acesso do Lol”. O código do arquivo MainActivity.java 
do Android Studio representando o Button pode ser visualizado na Figura 9.3 abaixo: 
 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Button 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 Button botao1 = (Button) findViewById((R.id.btn01)); 
 botao1.setText("Botão de acesso do Mario"); 
 Button botao2 = (Button) findViewById((R.id.btn02)); 
 botao2.setText("Botão de acesso do Lol"); 
 
 } 
} 
 
 
Figura 9.3 – Arquivo da classe MainActivity.java do Button 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do Button no arquivo activity_main.xml. 
 
 
 
 
 
169 
9.1.2 ImageButton 
A classe ImageButton é responsável pela criação de novos botões representada por 
imagem na tela das aplicações. A classe Button no arquivo XML é representado pela seguinte 
sintaxe <ImageButton/>. Para declarar um botão com imagem é necessário a identificação do 
botão com a seguinte sintaxe android:id="@+id/btImg01". A declaração de altura e largura são 
representadas pelas seguintes sintaxes android:layout_width="match_parent" e 
android:layout_height="wrap_content" e para declarar o caminho da imagem do botão é utilizado 
a seguinte sintaxe android:scr="@drawable/android_mini2". 
Por exemplo, imagine que existe um determinado layout de aplicativo possuindo botão 
com imagemdos jogos de Mario e Lol. Diante desse exemplo, você vai aprender como utilizar a classe 
ImageButton para criar o botão com imagem. O arquivo activity_main.xml mostrado na Figura 9.4, 
abaixo, possui o layout LinearLayout e duas classes ImageButton com os botões com imagens dos 
jogos de Mario e Lol. Esse código do activity_main.xml representando a classe ImageButton pode ser 
visualizado na Figura 9.4 abaixo: 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <ImageButton 
 android:id="@+id/imgBtn01" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:src="@mipmap/mario" 
 android:contentDescription="todo" /> 
 <ImageButton 
 android:id="@+id/imgBtn02" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:src="@mipmap/lol" 
 android:contentDescription="todo" /> 
</LinearLayout> 
 
Figura 9.4 - Arquivo activity_main.xml do ImageButton 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do ImageButton possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e as duas tags ImageButton representada pelos botões com imagens dos jogos Mario e Lol. 
 
 
 
170 
Depois da execução do arquivo activity_main.xml com ImageButton da Figura 9.4, acima, 
e gerado o designer da tela no Android Studio visualizado na Figura 9.5 abaixo: 
 
Figura 9.5– Tela do ImageButton 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o componente ImageButton. A 
tela do lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três 
botões do celular e na parte do meio possui uma tela branca com dois botões de imagens dos jogos Mario e Lol”, a tela 
do lado direito possui um quadrado com fundo verde representado a tela e dois retângulos representando os botões de 
imagem com o nome das imagens dos jogos Mario e Lol. 
 
A ImageButton é executado no arquivo MainActivity.java da Figura 9.6, abaixo, possuindo 
um ID (identificador) definido pelo arquivo XML para recuperar um determinado componente no 
código Java, dessa maneira é possível executar os identificadores R. imgBtn01 e R.id.imgBtn02 
utilizando o método findViewById(), em seguida é utilizado o método setImageResource() para 
acessar as imagens do mario e lol na pasta do Android Studio. O código do arquivo MainActivity.java 
do Android Studio representando a ImageButton pode ser visualizado na Figura 9.6 abaixo: 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
 
 
171 
import android.widget.ImageButton 
 
public class MainActivity extends AppCompatActivity { 
 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 ImageButton imageButton1 = (ImageButton) 
findViewById(R.id.imgBtn01); 
 imageButton1.setImageResource(R.mipmap.mario); 
ImageView imageView1 = (ImageView) findViewById(R.id.imgBtn01); 
 ImageButton imageButton2 = (ImageButton) 
findViewById(R.id.imgBtn02); 
 imageButton2.setImageResource(R.mipmap.lol); 
 
 } 
} 
 
Figura 9.6 – Arquivo da classe MainActivity.java do ImageButton 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do ImageButton no arquivo activity_main.xml. 
 
9.1.3 CheckBox 
O Checkbox é um componente do Android responsável pelo estado de marcado e 
desmarcado. Geralmente, esse componente é utilizado quando se pretende fazer uma escolha 
mútua, no qual não seja mutuamente exclusiva. O componente Checkbox no arquivo XML é 
representado pela seguinte sintaxe <CheckBox />. Para declarar um componente Checkbox é 
necessário a declaração de altura e largura representadas pelas seguintes sintaxes 
android:layout_width ="match_parent" e android:layout_height="wrap_content" e texto com a 
opção do Checkbox é utilizado a seguinte sintaxe android:text="opcaodocheckbox". 
Por exemplo, imagine que existe um determinado formulário que pergunta quais tipos 
de jogos você domina ou conhece e existem várias opções: mortal kombat, kung fu for, MMA Fighter 
e Gangsters, caso você conheça mais de um jogo de luta é ideal utilizar o componente Checkbox para 
representar essas várias opções. Diante desse exemplo, você vai aprender como utilizar o 
componente Checkbox para escolher uma opção desse jogo. 
O arquivo activity_main.xml mostrado na Figura 9.7, abaixo, possui o layout LinearLayout, 
a classe TextView com a descrição "Assinale os jogos que você domina ou conhece:" e quatro 
 
 
172 
componentes Checkbox com as opções dos jogos mortal kombat, kung fu for, MMA e Gangsters. Esse 
código do activity_main.xml representando o Checkbox pode ser visualizado na Figura 9.7 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 
 <TextView 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:text="Assinale os jogos que você domina ou conhece:"/> 
 
 <LinearLayout 
 android:layout_width="match_parent" 
 android:layout_height="match_parent"> 
 
 <CheckBox 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:text="mortal kombat" 
 /> 
 <CheckBox 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="kung fu for" 
 /> 
 <CheckBox 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:text="MMA Fighter " 
 /> 
 <CheckBox 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="Gangsters" 
 /> 
 
 </LinearLayout> 
</LinearLayout> 
 
Figura 9.7 - Arquivo activity_main.xml do Checkbox 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do Checkbox possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e a tag TextView com a descrição “Assinale os jogos que você domina ou conhece:” e quatro tags 
Checkbox com as opções Mortal Kombat, kunf fu for, MMA Fighter e Gangsters. 
 
 
 
173 
O Checkbox é executado no arquivo MainActivity.java da Figura 9.8, abaixo, possuindo 
um ID (identificador) definido pelo arquivo XML para recuperar um determinado componente no 
código Java, dessa maneira é possível verificar caso o checkbox está marcado ou não está marcado. 
Isso é realizado através do método isChecked(). O código do arquivo MainActivity.java do Android 
Studio representando o Checkbox pode ser visualizado na Figura 9.8 abaixo: 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.CheckBox; 
 
public class MainActivity extends AppCompatActivity { 
 
 @Override 
 protectedvoid onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 CheckBox chkBox = (CheckBox) findViewById(R.id.checkboxJava); 
 boolean checkboxSelecionado = chkBox.isChecked(); 
 } 
} 
 
Figura 9.8 – Arquivo da classe MainActivity.java do Checkbox 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java possuindo a 
execução da tela do CheckBox no arquivo activity_main.xml. 
 
Caso o Checkbox esteja marcado com a seleção dos jogos Mortal kombat e MMA indica 
que os valores de Mortal kombat e MMA estão selecionados. A tela do Android Studio representando 
o componente de Checkbox para identificar mais de um jogo de luta pode ser visualizado na Figura 
9.9 abaixo: 
 
 
174 
 
Figura 9.9 – Tela do checkbox 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o componente 
ImageButton. A tela do lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na 
barra inferior três botões do celular e na parte do meio possui uma tela branca com a descrição do nome na cor preta 
“Assinale os jogos que você domina ou conhece:", e quatro checkbox com nos nomes Mortal Kombat, kunf fu for, MMA 
Fighter e Gangsters, a tela do lado direito possui um quadrado com fundo verde representado a tela e cinco quadrados 
retângulos representando a descrição do nome e quatro checkbox. 
 
 
9.1.4 RadioButton 
O RadioButton é um componente do Android responsável por selecionar uma única opção 
de uma determinada lista. Geralmente, esse componente é utilizado quando o usuário pretende fazer 
uma única escolha, ou seja, as opções são mutuamente exclusivas, não sendo assim possível ter mais 
de uma resposta para a mesma pergunta. O componente RadioButton no arquivo XML é 
representado pelas seguintes classes <RadioGroup /> e <RadioButton />. A classe RadioGroup é 
responsável por definir um grupo que contém uma lista de opções, no qual cada opção é 
representada por um respectivo RadioButton. 
Para declarar um componente RadioGroup é necessário realizar a declaração de altura e 
largura com as seguintes sintaxes android:layout_width="match_parent" e 
android:layout_height="wrap_content", assim como a orientação do layout com a seguinte sintaxe 
android:orientation=" horizontal". Com relação ao componente RadioButton é necessário realizar a 
 
 
175 
declaração do ID (identificador) do componente com a seguinte sintaxe android:id="@+id/radioM". 
Já a declaração de altura e largura devem ser realizadas com as seguintes sintaxes 
android:layout_width="match_parent" e android:layout_height="wrap_content" e o texto com a 
opção de sexo com a seguinte sintaxe android:text ="Feminino ". 
Por exemplo, imagine que existe um determinado formulário de jogo que pergunta o sexo 
dos seus jogadores, este pode ser masculino ou feminino, ou quando se pretende fazer uma pergunta 
de execução do jogo e a resposta é sim ou não. Diante desse exemplo, você vai aprender como utilizar 
o componente RadioButton para escolher o sexo dos jogadores desse jogo. 
O arquivo activity_main.xml mostrado na Figura 9.10, abaixo, possui o layout 
LinearLayout, a classe TextView com a descrição "Sexo:", o componente RadioGroup e dois 
componentes RadioButton com as opções Masculino e Feminina. Esse código do activity_main.xml 
representando o layout LinearLayout e os componentes RadioGroup e RadioButton pode ser 
visualizado na Figura 9.10 abaixo: 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:id="@+id/lblSexo" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:text="Sexo:" 
 /> 
 
 <RadioGroup 
 android:id="@+id/radioGroup" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="horizontal"> 
 
 <RadioButton 
 android:id="@+id/radioM" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="Masculino"/> 
 
 <RadioButton 
 android:id="@+id/radioF" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="Feminina" 
 
 
176 
 /> 
 </RadioGroup> 
</LinearLayout> 
 
 
Figura 9.10 - Arquivo activity_main.xml do RadioButton 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do RadioButton possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, e a tag RadioGroup com os componentes altura, largura e orientação vertical e duas tags do 
RadioButton representando as opções masculino e feminina. 
 
O RadioGroup é executado no arquivo MainActivity.java da Figura 9.11, abaixo, possuindo 
ID (identificador) definido pelo arquivo activity_main.xml para identificar um componente no código 
Java, dessa maneira quando se escolhe um RadioButton o outro vai ser automaticamente 
desmarcado. Isso é verificado através do método do RadioGroup chamado 
getCheckedRadioButtonId(). O código do arquivo MainActivity.java do Android Studio representando 
o RadioButton pode ser visualizado na Figura 9.11 abaixo: 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.RadioGroup; 
 
public class MainActivity extends AppCompatActivity 
{ 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup); 
 boolean radioM_Checked = R.id.radioM == 
radioGroup.getCheckedRadioButtonId(); 
 } 
} 
 
Figura 9.11 - Arquivo da classe MainActivity.java do RadioButton 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java do RadioButton 
possuindo a execução da tela do RadioButton no arquivo activity_main.xml. 
 
Caso o valor de RadioButton masculino seja considerado verdadeiro indica que o 
RadioButton com o valor Masculino está selecionado, da mesma maneira pode-se fazer para o 
 
 
177 
RadioButton Feminino. A tela do Android Studio representando o componente RadioButton com o 
sexo dos jogadores pode ser visualizado na Figura 9.12 abaixo: 
 
Figura 9.12 – Tela do RadioButton 
Fonte: o autor. 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o componente RadioButton. A 
tela do lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três 
botões do celular e na parte do meio possui uma tela branca com a descrição do nome na cor preta “Sexo dos 
jogadores:", e dois RadioButton representando as opções Masculino e Feminino, a tela do lado direito possui um 
quadrado com fundo verde representado a tela, uma linha representando o texto “Sexo dos jogadores:" e dois 
quadrado representando os dois RadioButton. 
 
 
9.1.5 Spinner 
 O Spinner é um componente do Android responsável por selecionar um valor a partir de 
um conjunto de dados de um combobox. No estado padrão, esse Spinner mostra o seu valor 
atualmente selecionado nesse combobox. A seleção do Spinner exibe um menu com todos os outros 
valores disponíveis, a partir do qual o usuário pode selecionarum novo. 
 O componente Spinner no arquivo XML é representado pela seguinte classe <Spinner/>. 
No Spinner é necessário declarar a altura e largura utilizando as seguintes sintaxes 
android:layout_width ="match_parent" e android:layout_height="wrap_content". Além disso, o 
identificador do combobox possui a seguinte declaração android:id=" +@id/combobox ". 
 
 
178 
Por exemplo, imagine que existe uma determinada lista de jogos e ao selecionar o jogo a 
aplicação irá exibir a imagem do jogo. Diante desse exemplo, você vai aprender como utilizar o 
componente Spinner para selecionar um jogo e mostrar a imagem desse jogo. 
O arquivo activity_main.xml mostrado na Figura 9.13, abaixo, possui o layout 
LinearLayout, a classe TextView com a descrição "Selecione um jogo:", o componente Spinner com a 
opção de combobox dos jogos Barkbridge, Lol e Mario e o componente ImageView com a imagem do 
jogo selecionado. Esse código do activity_main.xml representando o layout LinearLayout e os 
componentes TextView, ImageView e Spinner pode ser visualizado na Figura 9.13 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context=".MainActivity"> 
 
 <TextView 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:text="Selecione um jogo:" 
 /> 
 
 <Spinner 
 android:id="@+id/combobox" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 /> 
 
 <ImageView 
 android:id="@+id/imgJogo" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 /> 
 
</LinearLayout> 
 
Figura 9.13 - Arquivo activity_main.xml do Spinner 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo activity_main.xml com a 
representação do RadioButton possuindo a representação da tag LinearLayout com os componentes altura, largura e 
orientação vertical, a tag TextView representando o texto “Selecione um jogo:”, Spinner representando o combobox e a 
tag ImageVew representando a imagem do Mario. 
 
 
O Spinner é executado com imagens para preencher o seu combobox, para utilizar essas 
imagens você precisa baixá-las e colocá-las na pasta drawable. Sempre que você quiser exibir uma 
 
 
179 
imagem no seu aplicativo, você pode colocá-la nessa pasta e, para ter acesso a essa imagem, basta 
digitar R.drawable.NOME_DA_IMAGEM sem a extensão do arquivo (.jpg, .png, etc.). O Spinner 
configura no arquivo MainActivity.java da Figura 9.14, abaixo, as imagens dos jogos barkbridge, lol e 
mario na pasta do drawable, além disso, utiliza o método onCreate() para configurar os itens do 
combobox do jogo, o onItemSelected() para executar um item da seleção quando tiver sido 
selecionado e o método onNothingSelected() para executar um item da seleção quando não tiver 
sido selecionado na exibição do seu combobox. O código do arquivo MainActivity.java do Android 
Studio representando o Spinner pode ser visualizado na Figura 9.14 abaixo: 
 
package com.example.eadpernambuco; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.Spinner; 
 
public class MainActivity extends AppCompatActivity { 
 
 private int[] imagens = {R.drawable.ic_launcher_barkbridge_background, 
R.drawable.ic_launcher_lol_background, 
 R.drawable.ic_launcher_mario_background}; 
 private String[] jogos = new String[]{"barkbridge", "lol", "mario"}; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 final ImageView imgJogo = (ImageView) findViewById(R.id.imgJogo); 
 Spinner combobox = (Spinner) findViewById(R.id.combobox); 
 ArrayAdapter adaptador = new ArrayAdapter<String> 
 (this, android.R.layout.simple_spinner_item, jogos); 
 
adaptador.setDropDownViewResource(android.R.layout.simple_spinner_item); 
 combobox.setAdapter(adaptador); 
 
 combobox.setOnItemSelectedListener(new 
AdapterView.OnItemSelectedListener() { 
 
 @Override 
 public void onItemSelected(AdapterView<?> parent, View view, int 
position, long id) { 
 
 imgJogo.setImageResource(imagens[position]); 
 } 
 
 @Override 
 
 
180 
 public void onNothingSelected(AdapterView<?> parent) { 
 
 } 
 }); 
 } 
} 
 
Figura 9.14 – Arquivo da classe MainActivity.java do Spinner 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo MainActivity.java do Spinner 
possuindo a execução do Spinner com as três opções do jogo barkbridge", "lol", "mario". 
 
 
Caso a opção selecionada no jogo seja Mario indica a visualização do arquivo do Mario 
executado na pasta drawable do Android Studio. A tela do Android Studio representando o 
componente de Spinner com as opções de jogos barkbridge, Lol e Mario pode ser visualizado na Figura 
9.15 abaixo: 
 
 
Figura 9.15 – Tela do Spinner 
 
 
181 
Fonte: o autor 
Descrição da imagem: a imagem apresenta duas telas do Android Studio representando o componente ImageButton. A 
tela do lado esquerdo possui na parte superior uma barra azul com o nome EADPernambucoPDM, na barra inferior três 
botões do celular e na parte do meio possui uma tela branca com a descrição do nome na cor preta “Selecione um 
jogo:", a tag Spinner com a opção Mario selecionada e uma imagem representando o jogo Mario , a tela do lado direito 
possui um quadrado com fundo verde representado a tela, duas linhas representando o texto “Selecione um jogo:", e a 
opção do Spinner, e uma quadrado representando a imagem pela tag ImageView. 
 
E aí, estudante, foi legal o caminho até aqui! O bom é que até aqui você aprendeu sobre: 
 
• A classe Widgets 
• O componente Button 
• O componente ImageButton 
• O componente CheckBox 
• O componente RadioButton 
• O componente Spinner 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
 
Agora, o próximo passo é mergulhar na competência 10, que trata sobre como planejar e 
executar o compartilhamento da sua aplicação no Google Play. Vamos juntos? 
 
 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a vídeo aula sobre a competência. 
 
 
182 
10. Competência 10 | Planejar e executar o compartilhamento do APK 
Caro estudante, vamos iniciar a décima competência! Nesta competência você vai 
aprender sobre o versionamento da aplicação e a compatibilidade para instalação da APK (Android 
Package) que representa um pacote destinado a uma nova aplicação gerada no Android Studio. Em 
seguida, você vai aprender sobre a assinatura da aplicação com certificado digital e assinatura da 
aplicação para publicá-la no Google Play. Por fim, sobre com publicar a sua aplicação no Google Play. 
Vamos entender como realizar a publicação de APK no Google Play! 
 
10.1 Versionamento da aplicação 
O versionamento da aplicação em Android possui como extensão de arquivo a sigla APK 
(Android Package). APK é considerado um pacote destinado a uma nova aplicação gerada pelo 
Android. A primeira modificação para realizar a publicação do seu aplicativo é definir ou atualizar a 
sua versão no arquivo AndroidManifest.xml. O códigodo arquivo AndroidManifest.xml do Android 
Studio com versionamento da aplicação pode ser visualizado na Figura 10.1 abaixo: 
 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambuco" 
 android:versionCode="1" 
 android:versionName="0.0.1-beta"> 
 
 <application 
 android:allowBackup="true" 
 android:icon="@mipmap/ic_launcher" 
 android:label="@string/app_name" 
 android:roundIcon="@mipmap/ic_launcher_round" 
 android:supportsRtl="true" 
 android:theme="@style/AppTheme"> 
 <activity android:name=".MainActivity"> 
 <intent-filter> 
 <action android:name="android.intent.action.MAIN" /> 
 <category android:name="android.intent.category.LAUNCHER" /> 
 </intent-filter> 
 </activity> 
 </application> 
</manifest> 
 
Figura 10.1 - Arquivo AndroidManifest.xml com versionamento da aplicação 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o código do arquivo AndroidManifest.xml com a 
declaração do versionamento da aplicação na tag manifest possuindo as configurações das propriedades versionCode e 
versionName. 
 
 
183 
 
 
As propriedades modificadas no arquivo AndroidManifest.xml são android:versionCode e 
android:versionName. A propriedade versionCode é utilizada para modificar a versão da aplicação no 
Google Play. Por exemplo, imagine que você lançou um aplicativo com versão "2.0" e uma semana 
depois precisou fazer uma correção de bug (erro no código) e lançará uma nova versão. Nesse caso, 
você pode nomeá-la como "2.1" e lançar a atualização. Já a propriedade versionName indica ao 
usuário o versionamento da aplicação que está instalada. Dessa maneira, o usuário pode apresentar 
uma versão anterior à versão da loja e ele pode identificar essa desatualização pelo nome da versão 
apresentado através da propriedade versionName. 
Caso você esteja executando o Android Studio, existe um arquivo chamado build.gradle 
que fica em Gradle Scripts que contém as configurações de build da sua APK. Nesse arquivo, assim 
como no AndroidManifest.xml você também pode definir o versionCode e o versionName da sua 
aplicação. Esse arquivo build.gradle possui prioridade sobre as configurações de build do projeto, ou 
seja, caso você defina o versionName e versionCode no AndroidManifest.xml, mas o seu projeto 
também possui o arquivo build.gradle localizado no Gradle Scripts, as informações usadas serão as 
informações contidas no build.grade, como visualizado na Figura 10.2 abaixo. O código do arquivo 
build.gradle do Android Studio com a descrição da versão pode ser visualizado na Figura 10.3 abaixo: 
 
Figura 10.2 - Estrutura de um projeto do Android Studio com a configuração do arquivo build.gradle 
Fonte: o autor 
 
 
184 
Descrição da imagem: a imagem apresenta um fundo preto com a estrutura de pastas de um projeto criado no Android 
Studio e mostra onde o arquivo build.gradle está localizado. 
 
apply plugin: 'com.android.application' 
 
android { 
 compileSdkVersion 29 
 buildToolsVersion "29.0.2" 
 defaultConfig { 
 applicationId "com.example.eadpernambuco" 
 minSdkVersion 26 
 targetSdkVersion 29 
 versionCode 1 
 versionName "1.0" 
 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 
 } 
 buildTypes { 
 release { 
 minifyEnabled false 
 proguardFiles getDefaultProguardFile('proguard-android-
optimize.txt'), 'proguard-rules.pro' 
 } 
 } 
} 
dependencies { 
 implementation fileTree(dir: 'libs', include: ['*.jar']) 
 implementation 'androidx.appcompat:appcompat:1.0.2' 
 implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 
 testImplementation 'junit:junit:4.12' 
 androidTestImplementation 'androidx.test.ext:junit:1.1.0' 
 androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' 
} 
 
Figura 10.3- arquivo build.gradle com a descrição da versão 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o arquivo build.gradle.possuindo destacando o valor 
dos atributos versionCode na versão 1 e o valor do atributo versionName na versão“1.0”. 
 
10.2 Compatibilidade para instalação 
A compatibilidade da versão é uma configuração importante no momento da geração do 
build.gradle ou versão da sua aplicação. Dessa maneira, esse arquivo build possui uma propriedade 
chamada minSdkVersion que especifica a menor versão que a aplicação deve suportar, ou seja, 
especifica a versão pela qual sua aplicação pode ser instalada. Caso a versão do Android seja inferior 
a ela, a Google Play não vai permitir que o usuário instale a aplicação. Existe também a propriedade 
targetSdkVersion que especifica a última versão que a sua aplicação pode ser instalada. Os códigos a 
seguir mostram como especificar o minSdkVersion e targetSdkVersion no arquivo 
 
 
185 
AndroidManisfest.xml visualizado na Figura 10.4, abaixo, e o arquivo build.gradle.java visualizado na 
Figura 10.5 abaixo: 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="com.example.eadpernambuco" > 
 
 ...> ... 
 <uses-sdk 
 android:minSdkVersion="10" 
 android:targetSdkVersion="21" /> 
 
</manifest> 
 
Figura 10.4 - arquivo AndroidManisfest.xml com a descrição do minSdkVersion e targetSdkVersion 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o arquivo AndroidManifest.xml possuindo a descrição 
do minSdkVersion na versão 10 e do targetSdkVersion na versão 21. 
 
apply plugin: 'com.android.application' 
 
android { 
 compileSdkVersion 29 
 buildToolsVersion "29.0.2" 
 defaultConfig { 
 applicationId "com.example.eadpernambuco" 
 minSdkVersion 26 
 targetSdkVersion 29 
 versionCode 1 
 versionName "1.0" 
 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 
 } 
 buildTypes { 
 release { 
 minifyEnabled false 
 proguardFiles getDefaultProguardFile('proguard-android-
optimize.txt'), 'proguard-rules.pro' 
 } 
 } 
} 
dependencies { 
 implementation fileTree(dir: 'libs', include: ['*.jar']) 
 implementation 'androidx.appcompat:appcompat:1.0.2' 
 implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 
 testImplementation 'junit:junit:4.12' 
 androidTestImplementation 'androidx.test.ext:junit:1.1.0' 
 androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' 
} 
 
Figura 10.5- arquivo build.gradle 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com o arquivo build.gradle possuindo as configurações 
identificador do aplicativo com o nome "com.example.eadpernambuco", com a descrição do versionCode com a versão 
1, versionName com a versão. "1.0" 
 
 
186 
10.3 Assinatura da aplicação com certificado digital 
O processo de instalação de uma aplicação em um celular ou emulador necessita da 
assinatura digital. Quando você compila usando o modo Debug esse processo é realizado de maneira 
automática no Android Studio. Contudo para realizar a assinatura de uma APK no Google Play é 
necessário gerar o seu próprio certificado através do JDK (Java Development Kit), dessa maneira você 
deve possuir uma chave privada e com essa chave deve assinar APK durante o build. 
No Android Studio você deve clicar no menu Build e depois em Generate Signed APK como 
visualizado na Figura 10.6 abaixo. Em seguida, a nova janela será aberta Generate signed Bundle or 
APK, como visualizado na figura 10.7 abaixo: 
 
Figura 10.6 – Tela geração de certificado do Android Studio 
Fonte: o autor 
Descrição da imagem: a imagem apresentaum fundo preto com a tela do Android Studio de geração de certificado 
possuindo a opção Build na cor azul e executando a opção Generate Signed Bundle / APK. 
 
 
187 
 
Figura 10.7 - Tela geração de certificado do Android Studio 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com a tela do Android Studio de geração de certificado 
possuindo a seleção da opção APK, em seguida na parte de baixo da tela a opção next para prosseguir. 
 
Em seguida, você deve clicar em next como mostrado na figura 10.7, acima, para iniciar o 
processo de criação da assinatura digital. A tela para gerar o certificado digital pode ser visualizada 
na Figura 10.8 abaixo: 
 
Figura 10.8 – Tela geração de certificado do Android Studio 
 
 
188 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com a tela do Android Studio de geração de certificado 
possuindo a seleção do campo módulo com a opção app e a opção do botão create new, em seguida na parte de baixo 
da tela a opção next para prosseguir. 
 
Na Figura 10.8, acima, você pode escolher uma assinatura existente ou criar um novo 
arquivo de assinatura no formato jks (Keystore Java) que serve como repositório de certificados e 
chaves privadas. Caso seja um aplicativo novo, crie um novo arquivo através do botão Create new... 
para assiná-lo; se for um arquivo que já foi assinado utilize o botão Choose existing... . para selecionar 
o arquivo anterior. Vamos seguir os passos de criação de um novo arquivo clicando no botão Create 
new... A tela com o novo arquivo chave pode ser visualizada na Figura 10.9 abaixo: 
 
Figura 10.9 – Tela do novo armazenamento de chave preenchido 
Fonte: o autor 
Descrição da imagem: a imagem apresenta um fundo preto com a tela do Android Studio com seguintes campos chave 
alias, password, validaty, first and last name, organization unit, organization, city or locality, state or province, em 
seguida na parte debaixo da tela clica na opção de botão com a seleção OK. 
 
 
 
 
189 
Na Figura 10.9, acima, você deve preencher alguns campos e clicar no botão OK. 
• Key store path : caminho para salvar o arquivo no formato jks. 
• Password : senha para o arquivo. 
 
Key (Chave): 
• Alias : um "apelido" para essa chave; esse nome é de escolha do desenvolvedor. Eu 
geralmente deixo o Alias com o mesmo nome do App. 
• Password : senha para a chave que está sendo criada. Essa senha pode ser diferente 
da senha anterior, do arquivo, ou você pode manter a mesma senha para não 
confundir, no entanto, para melhor segurança é bom ter senhas diferentes. 
• Validity : validade desse certificado em anos. 
• First and Last Name : primeiro e último nome, pode ser o seu nome. 
• Organizational Unit : nome da sua unidade organizacional (campo opcional). 
• Organization : nome da sua organização (campo opcional). 
• City or Locality : cidade ou localização (campo opcional). 
• State or Province : Estado ou província (campo opcional). 
• Country Code(XX) : código do país (campo opcional). 
 
10.4 Assinatura da aplicação para publicá-la no Google Play 
Com o certificado criado existe a possibilidade de utilizar essa assinatura na sua APK. Mas 
como realizar isso? Para assinar a sua respectiva APK utilizando o certificado que você criou, basta 
importá-lo no Android Studio clicando no botão Choose existing..., digitar a sua senha e gerar a sua 
APK assinada clicando no botão Next. A tela utilizando o botão Choose existing pode ser visualizada 
na Figura 10.10 abaixo: 
 
 
190 
 
Figura 10.10 – Tela do Assinando APK com as configurações preenchidas 
Fonte: o autor. 
Descrição da imagem : a imagem apresenta um fundo preto com a tela assinando uma APK do Android Studio com os 
configurações preenchidas possuindo os campos Module com a opção app, key store path com a opção preenchida 
chave_teste_as.jks, key store password com a senha preenchida, key alias com a opção alias e key password com a 
senha preenchida , em seguida na parte de baixo da tela a opção next para prosseguir. 
 
Na figura 10.10, acima, você deve clicar no botão next para aparecer uma janela pedindo 
para informar o local onde você deseja que a sua APK assinada seja gerada e ao final do processo 
basta clicar em Finish. A tela com o processo final da sua APK assinada pode ser visualizada na Figura 
10.11 abaixo. 
 
 
191 
 
Figura 10.11 – Tela da assinando APK com a finalização da assinatura 
Fonte: o autor 
Descrição da imagem a imagem apresenta um fundo preto com a tela assinando uma APK do Android Studio no final da 
assinatura com os campos Destination folder com a descrição preenchida, a opção release selecionad com a cor azul, em 
seguida na parte de baixo da tela a opção finish para finalizar a assinatura. 
 
Na Figura 10.11, acima, você deve escolher o Build type (tipo de compilação) entre release 
(lançamento) ou debug (desenvolvimento). Como vamos enviar à loja, este é um build de release. Em 
Signature Versions (versões de assinatura) selecione as duas opções V1 e V2. O tipo de assinatura V2 
é relativamente novo no Android, antes o padrão era a V1; a V2 veio junto com a versão 7.0 do 
Android, e de acordo com a documentação do Android devemos escolher esses dois tipos. Por fim, 
clique em Finish (finalizar). 
 
10.5 Publicando a sua aplicação no Google Play 
O processo para publicar uma aplicação na Google Play é considerado um processo bem 
trivial, basta entrar no site do Google Play console https://play.google.com/apps/publish/. Caso você 
 
 
192 
esteja logado na conta do Google já abrirá a página da Figura 10.12, abaixo, caso contrário você 
precisará logar a sua conta no Google, na qual a sua aplicação será associada na sua conta. 
 
Figura 10.12 - Tela de aceitação do contrato como desenvolvedor da Google Play 
Fonte: o autor 
Descrição da imagem: a imagem apresenta a tela do site com informações da conta da Google do usuário que está 
logado, com o valor a ser cobrado pela licença de desenvolvedor, com os termos de uso e um botão para continuar o 
pagamento. 
 
O processo para aceitar o contrato do desenvolvedor necessita de quatro passos. O 
primeiro é necessário fazer o login com uma conta Google, depois aceitar os termos de uso do 
contrato disponível em: https://play.google.com/about/developer-distribution-agreement.html, 
pagar a taxa de 25 dólares pelo aplicativo e, por fim, fornecer os detalhes da conta como é exibido na 
Figura 10.13 abaixo. 
 
 
 
193 
 
Figura 10.13 - Tela de pagamento, basta inserir o cartão de crédito e pagar 25 dólares. 
Fonte: o autor 
Descrição da imagem: a imagem apresenta a tela do site com as informações do cartão de crédito juntamente com o 
valor da licença para o pagamento. 
 
Após o pagamento do aplicativo confirmado e de realizar o cadastro das suas informações 
você pode realizar a publicação da sua aplicação. Em seguida, deve preencher um formulário com 
uma breve descrição da sua aplicação e enviar algumas telas dessa aplicação. Depois disso, deve 
preencher algumas informações do aplicativo e fazer o upload da APK assinada, escolher a categoria 
da sua aplicação e informar se essa aplicação é paga ou gratuita. 
Por fim, depois de publicar essa aplicação no Google Play, essa será disponibilizada 
imediatamente para qualquer outro usuário instalar. A cada nova versão dessa aplicação que você 
atualizar é preciso modificar os parâmetros versionCode e versionName, como mostrado na seção 
versionamento de aplicação. Assim, os usuários dessas aplicações serão notificados sobre a existência 
de uma nova versão, e assim podem realizar a atualização quando desejarem. 
 
 
194 
 
 
E aí, estudante, foi legal o caminho até aqui. O bom é que até aqui você aprendeu sobre: 
• Versionamento da aplicação 
• Compatibilidade para instalação 
• Assinatura da aplicação com certificado digital 
• Assinatura da aplicação para publicá-la no Google Play• Publicando a sua aplicação no Google Play 
 
Há! E antes de seguir a diante pergunte-se: 
Será que você captou as lições corretamente? 
caso não, é melhor revisar o conteúdo abordado antes de seguir para os próximos passos. 
 
 
Agora, o último passo é focar na avaliação do curso programador de dispositivos móveis. 
Vamos lá? 
 
 
Saiba mais sobre como publicar um Aplicativo Android na Play Store 2020 
https://www.youtube.com/watch?v=yY9hQhE18K4 
 
 
Pronto para inserir mais informações em seu banco de dados? 
Acesse o AVA e assista a vídeo aula sobre a competência 10. 
https://www.youtube.com/watch?v=yY9hQhE18K4
 
 
195 
Conclusão 
Olá novamente, desenvolvedor! Chegamos ao final de nossa jornada! Espero que os 
conhecimentos acumulados em nosso passeio tenham lhe ajudado a alcançar a compreensão das 
noções iniciais e essenciais do desenvolvimento de aplicativos para a plataforma Android e sejam a 
base para eventuais experiências. 
Não se acanhe em retornar para este e-book caso você tenha dúvidas em relação às 
noções iniciais do desenvolvimento de aplicativos para Android, pois o conhecimento necessário em 
lições futuras é cumulativo, ou seja, o que foi visto aqui não pode ser tratado de forma isolada: servirá 
como base em outras aplicações que você talvez queira experimentar fora das lições abarcadas neste 
material didático. 
Falando em experimentação, lhe incentivo a tentar de forma criativa utilizar os 
conhecimentos deste caderno para criar aplicações com propostas diferentes dos exemplos 
construídos aqui neste conteúdo. Desafie-se ir além! 
 
Cordialmente, Rebecca Linhares e Danilo de Sousa. 
 
 
 
 
 
 
 
 
 
 
196 
Referências 
LECHETA, Ricardo. Google Android. Aprenda A Criar Aplicações Para Dispositivos Móveis Com O 
Android SDK. São Paulo: Novatec, 2010. 
GLAUBER, Nelson. Dominado o Android. São Paulo: Novatec, 2015. 
LECHETA, Ricardo. Android Essencial com Kotlin. São Paulo: Novatec, 2018. 
GLAUBER, Nelson. Dominado o Android com Kotlin. São Paulo: Novatec, 2019. 
QUEIRÓS, Ricardo. Android Profissional. Desenvolvimento Moderno de Aplicações. Lisboa: FCA, 
2018. 
SCHILDT, Herbert. Java para iniciantes: crie, compile e execute programas Java rapidamente. Porto 
Alegre: Bookman, 2015. 
Site oficial de desenvolvedores Android: https://developer.android.com/?hl=pt-br 
 
 
 
 
197 
Minicurrículo do Professor 
 
Rebecca Linhares 
Mestre em Ciências da Computação no Centro de Informática (CIn) na universidade 
Federal de Pernambuco (UFPE). Possui graduação em Bacharelado em Sistemas de Informação pelas 
Faculdades Integradas Barros Melo (2009). Atualmente é professora do curso técnico de 
Desenvolvimento de Sistemas, na modalidade EAD, na Secretaria de Educação do estado de 
Pernambuco, professora formadora das disciplinas: Edição e Processamento de Imagens e 
Programação para Dispositivos Móveis, e conteudista da disciplina de Introdução a Programação para 
Dispositivos Móveis. 
 
Danilo de Sousa Barbosa 
Mestre em Engenharia da Computação na universidade Federal de Pernambuco (UPE), 
Especialização em Gestão e Qualidade em Tecnologia da Informação e Comunicação no Instituto 
Federal de Pernambuco (IFPE). Possui graduação em Bacharelado em Sistemas de Informação pela 
Universidade de Pernambuco (UPE). Atualmente possui doutorado em andamento em Ciência da 
Computação no Centro de Informática (CIn) da Universidade Federal de Pernambuco (UFPE) e 
professor de ensino a distância do curso técnico de Desenvolvimento de Sistemas da Escola Técnica 
Estadual Professor Antônio Carlos Gomes da Costa (ETEPAC) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	Introdução
	1. Competência 01 | Introduzir os conceitos básicos de um sistema operacional móvel, configurar e conhecer o ambiente de desenvolvimento
	1
	1.1 O que é o Android
	1.1.1 Sistema operacional Linux
	1.1.2 Código aberto e livre
	1.2 Arquitetura da plataforma
	1.3 Os diversos sabores do Android
	1.4 Google Play
	1.5 O ambiente de desenvolvimento
	1.5.1 Instalação do JDK
	1.5.2 Instalação e configuração do Android Studio
	1.6 Configuração do AVD no Android Studio
	2. Competência 02 | Formatar uma Activity para o Desenvolvimento, Utilizando Operadores Matemáticos
	2
	2.1 Conceitos Básicos
	2.1.1 Iniciando um novo projeto com Android Studio
	2.1.2 Estrutura de um projeto Android
	2.1.2.1 Arquivo AndroidManifest.xml
	2.1.2.2 Classe MainActivity
	2.1.2.3 Arquivo de Layout activity_main.xml
	2.1.3 Processo de compilação e execução de um projeto Android
	2.2 Variáveis
	2.3 Tipo de dados
	2.3.1 Tipo de dado primitivo
	2.3.2 Tipo de dado lógico
	2.3.3 Tipo de dado numérico Inteiros
	2.3.4 Tipo de dado numérico de ponto flutuante
	2.3.5 Tipo de dado de caractere
	2.3.6 Tipo de dado complexo: String
	2.4 Separadores
	2.5 Operadores
	2.5.1 Operadores Aritméticos
	2.5.1.1 Incremento e decremento
	2.5.2 Operadores Relacionais e Lógicos
	2.5.3 Operadores de atribuição
	2.5.3.1 Operadores de atribuições abreviadas
	3. Competência 03 | Formatar uma Activity para o desenvolvimento de instruções de controle de programa
	3
	3.1 Estruturas de controle condicional
	3.1.1 Estrutura if
	3.1.1.1 Estrutura if-else
	3.1.1.2 Estrutura if-else aninhada
	3.1.2 Estrutura Switch
	3.2 Estruturas de repetição
	3.2.1 Estrutura For
	3.2.2 Estrutura While
	3.2.3 Estrutura Do-While
	4.Competência 04 | Formatar uma Activity para utilização de Arrays
	4
	4.1 Arrays
	4.1.1 Arrays Unidimensionais
	4.1.2 Arrays Multidimensionais
	4.1.2.1 Arrays Bidimensionais
	5. Competência 05 | Conhecer o Activity em detalhes
	5
	5.1 Criando um novo projeto com Activity
	5.2 Conceito de Activity
	5.3 Ciclo de vida de uma Activity
	5.4 Navegabilidade entre Activity
	5.5 Navegabilidade Simples de uma Activity para outra
	5.6 Navegação entre telas com passagem de parâmetros
	6. Competência 06 | Manipular Action bar e temas
	6
	6.1 Criando um novo projeto com Action Bar
	6.2 Conceito de Action Bar
	6.3 Conceito de temas
	6.4 Customização de Action Bar com botão
	6.5 Modificando Action Bar com temas
	7. Competência 07 | Conhecer os conceitos de interface gráfica - gerenciadores de layout
	7
	7.1 Criando um novo projeto com a classe ViewGroup
	7.2 Conceito da classe View
	7.3 Conceito da classe ViewGroup
	7.3.1 LinearLayout
	7.3.2 ConstraintLayout
	7.3.3 RelativeLayout
	7.4 Dimensões dos componentes do layout
	8. Competência 08 | Conhecer os conceitos de interface gráfica – view
	8
	8.1 Criando um novo projeto com a classe Widget
	8.2 Conceito da classe Widget
	8.2.1 TextView
	8.2.2 EditText
	8.2.3 Imageview
	9. Competência 09 | Utilizar recursos avançados de view
	9
	9.1 Avanços da Widget
	9.1.1 Button
	9.1.2 ImageButton
	9.1.3 CheckBox
	9.1.4 RadioButton
	9.1.5 Spinner
	10. Competência 10 | Planejar e executar o compartilhamento do APK
	10
	10.1 Versionamento da aplicação
	10.2 Compatibilidade para instalação
	10.3 Assinatura da aplicação com certificado digital
	10.4 Assinatura da aplicação para publicá-la no Google Play
	10.5 Publicando a sua aplicação no Google Play
	Conclusão
	Referências
	Minicurrículo do Professor

Mais conteúdos dessa disciplina