Escolar Documentos
Profissional Documentos
Cultura Documentos
Créditos Institucionais
Presidente do Conselho de Administração:
Janguiê Diniz
Diretor-presidente:
Jânio Diniz
Diretoria Executiva de Ensino:
Adriano Azevedo
Diretoria Executiva de Serviços Corporativos:
Joaldo Diniz
Diretoria de Ensino a Distância:
Enzo Moreira
2018 by Telesapiens
Todos os direitos reservados
O AUTOR
Luiz Fernando Corcini
OBJETIVO OBSERVAÇÃO
Breve descrição do Breve descrição do
objetivo; + objetivo;
CITAÇÃO RESUMINDO
Parte retirada de um Resumo
texto; acumulativo das
últimas abordagens;
TESTANDO DEFINIÇÃO
Foco em um objeto Apresentação de
de estudo; um novo conceito;
IMPORTANTE ACESSE
As observações escritas Links úteis
têm que ser priorizadas; para fixação da
++
informação;
DICA SAIBA MAIS
Destaque para Informações
sugestões e novas adicionais sobre
informações; o conteúdo;
2018 by Telesapiens
Todos os direitos reservados
SUMÁRIO
UNIDADE 01
Android – Visão Geral......................................................15
Dispositivos Móveis...........................................................15
Android – Um pouco de História........................................16
Android – Características...................................................17
Arquitetura da Plataforma........................................21
Requisitos para o desenvolvimento de Apps...............22
Ambiente de Desenvolvimento Java para Mobile...........22
Instalar o JDK....................................................................23
Configurando as Variáveis de Ambiente...................25
Instalar e Configurar o Android Studio...............................28
Instando o Android Studio.......................................28
Configurar o Android SDK Manager..................................33
Testando o Ambiente de Desenvolvimento.........................35
Fechando a aplicação Android............................................41
Estrutura do Projeto Java-Android.................................42
Conhecendo a Interface Android Studio..............................43
Tela de Boas Vindas.................................................43
Tela Principal..........................................................44
Demais Janelas de Ferramentas...............................47
Estrutura do projeto Java-Android......................................49
Pasta Manifests........................................................50
Pasta Java...............................................................55
Pasta “res”..............................................................57
Java - Um pouco de história............................................58
A Tecnologia Java..............................................................59
Esquema de execução de um programa em Java......60
A Plataforma Java...................................................61
Entendendo, Instalando e Configurando o Ambiente Java..61
Instalando o JDK....................................................62
Instalando o IDE.....................................................62
Testando o Eclipse...................................................63
UNIDADE 02
Java Básico........................................................................70
O Primeiro Projeto Java.....................................................70
A Primeira Classe Java............................................73
Estrutura Básica da Linguagem Java..................................77
Introdução................................................................77
Estrutura de um Programa Java...............................77
Identificadores.........................................................78
Variáveis..................................................................80
Tipos de Dados Simples............................................81
Tipos de Dados Compostos......................................84
Conversão de Tipos.........................................84
Escopo de Variável..................................................86
Modificadores de Acesso.........................................87
Atributos Públicos..........................................88
Atributos Privados..........................................88
Operadores...............................................................90
Operadores Aritméticos...................................91
Operadores de Atribuição................................91
Operadores de Incremento e Decremento.............92
Operadores Relacionais................................93
Operadores Booleanos..................................94
Operador Ternário..................................................94
Estrutura de Controle de Seleção e de Repetição...........95
Introdução.........................................................................95
Estrutura de Controle de Seleção........................................95
Comando if.............................................................95
Comando if – else...................................................96
Condições mais elaboradas....................................97
O comando swicth...................................................98
Estrutura de Controle de Repetição..................................100
while......................................................................100
Controlando Loops................................................102
O comando break...................................................102
for.........................................................................102
O comando continue............................................103
Classes em Java..............................................................104
Introdução.. .....................................................................104
Métodos...........................................................................105
Classes.............................................................................108
Polimormismo, Interface e Classes Abstratas................114
Polimorfismo...................................................................114
Interface...........................................................................118
Declarando uma Interface.......................................118
Classes Abstratas..............................................................120
UNIDADE 03
Ciclo de vida do aplicativo Android e a Classe Activity..127
Introdução........................................................................127
Gerenciando aplicativos...................................................128
Ciclo de vida do aplicativo Android.................................129
A Classe Activity..............................................................131
Navegabilidade................................................................138
Introdução........................................................................138
Chamando a segunda Activity...........................................141
Intenção de chamada...............................................141
Evento de chamada................................................142
Passagem de parâmetros entre telas..............................145
Inserindo componentes na tela.......................................150
Entendendo o Editor de Layout........................................151
TextView..........................................................................156
Pain Text..........................................................................159
Button..............................................................................160
Radio button.....................................................................161
Check box e Combo box..................................................163
UNIDADE 04
Tratamento de Eventos...................................................172
Definindo o Protótipo da Aplicação..................................172
Implementando a Aplicação..............................................173
Preparando a Tela Principal...................................174
Layout da Tela......................................................174
Classe Activity da tela Principal...........................175
Preparando a Tela2................................................176
Layout da Tela2.....................................................176
ClasseActivitydaTela2.........................................177
Preparando a Tela3................................................179
Layout da Tela3....................................................179
Classe Acticity da Tela3.......................................180
Capturando Resultados de uma Atividade....................181
Preparando as Telas da Aplicação.....................................184
Capturando a Seleção do Usuário.....................................186
Retornando o Item Selecionado........................................187
Chamando ações do sistema Android............................189
ACTION_VIEW..............................................................189
ACTION_PICK...............................................................192
ACTION_CALL..............................................................194
Layout de Tela................................................................196
Introdução........................................................................196
FrameLayout....................................................................196
LinearLayout ..................................................................199
Relevância dos componentes.................................201
TableLayout.....................................................................203
Atributo StretchColluns.........................................204
Atributo ShrinkColluns.........................................207
Combinando Layouts.............................................208
12 Introdução ao coding mobile
01
UNIDADE
INTRODUÇÃO
Seja bem-vindo(a) à Unidade 1 – Estrutura de um
Projeto Android - da disciplina de Introdução ao Coding
(Mobile). O conteúdo desta Unidade está dividido em
quatro módulos. O primeiro módulo faz uma introdução
a dispositivos móveis e ao sistema operacional Android,
tratando um pouco sobre a história desse sistema, suas
características e requisitos. No segundo Módulo explica
passo a passo como instalar e configurar os componentes que
formam o ambiente básico para iniciar seu aprendizado em
programação móvel utilizando o Android Studio. Então temos
o Módulo três, que apresenta as principais características
da estrutura de projetos na plataforma Android, detalhando
e explicando a funcionalidade de seus principais arquivos
e classes, preparando o aluno para o desenvolvimento de
aplicativos E, por fim, no último módulo desta Unidade 1,
vamos apresentar a Plataformas Java de Desenvolvimento,
um pouco de sua história, características, bem como o
passo a passo para instalar o Ambiente de Desenvolvimento
Integrado Java. É claro que existe muito mais a aprender, mas
o aprofundamento de cada um destes conhecimentos pode ser
feito acessando os links indicados durante o texto, no tópico
[Saiba Mais]. Vamos começar? Excelente estudo para você!
14 Introdução ao coding mobile
OBJETIVOS
Olá! Se bem-vindo a nossa Unidade 1, e o nosso objetivo é
auxiliar você no desenvolvimento das seguintes competências
profissionais até o término desta etapa de estudos:
4
Conhecer a Plataforma Java de Desenvolvimento, um
pouco de sua história, características, bem como o passo
a passo para instalar o Ambiente de Desenvolvimento
Integrado Java;
Introdução ao coding mobile 15
Figura 1 – Quota de
Marcado Mundial de
S.O. para Smartphones.
1
Sistema Operacional: É o conjunto de programas que gerenciam recursos,
processadores, armazenamento, dispositivos de entrada e saída e dados da
máquina e seus periféricos. Exemplos: Dos, Unix, Linux, Mac OS, OS-2,
Windows, etc. Fonte: Site Professor João Barreto (UFSC). Disponível em
:http://www.inf.ufsc.br/~j.barreto/cca/sisop/sisoperac.html) – Acessado
em: 05-09-2018.
2
Ecrã: Superfície fluorescente sobre a qual se forma a imagem nos tubos
catódicos (televisão, informática, etc.) = Tela. Fonte: Dicionário Priberam
da Língua Portuguesa. Disponível em: https://www.priberam.pt/dlpo/ecrã
- Acessado em 05-09-2018.
Introdução ao coding mobile 17
++
Java. O Android estava sendo lançado!
SAIBA MAIS
Android – Características
Android não é uma linguagem de programação, mas sim
um sistema operacional Linux multiusuário. Para programar
aplicativos para os dispositivos móveis que utilizam o SO
3
IDC – International Data Corporation. Disponível em: https://www.idc.
com/promo/smartphone-market-share/os - Acessado em: 05-09-2018.
4
Sistemas Embarcados: O sistema embarcado, também chamado de
sistema embutido, é um sistema microprocessado em que um computador
está anexado ao sistema que ele controla. Um sistema embarcado pode
realizar um conjunto de tarefas que foram predefinidas. O sistema é
usado para tarefas específicas, e assim, através de engenharia é possível
otimizar um determinado produto e diminuir o tamanho, bem como os
recursos computacionais e o seu valor final. Fonte: Site Oficina da Net –
Disponível em: https://www.oficinadanet.com.br/post/13538-o-que-sao-
sistemas-embarcados. Acessado em: 15/09/2018.
5
Código aberto (open-source): É um software de utilização livre, para quem
quiser. Todos podem contribuir com ele, seja no seu desenvolvimento,
seja na correção de erros, seja na documentação, desde que a condição
de liberdade seja mantida. Exemplos: Linux, Android, Apache, gcc,
18 Introdução ao coding mobile
++
dispositivos para instalar a aplicação Android.
SAIBA MAIS
SAIBA MAIS
“
Conforme destacado por Ogliari e Brito,
”
apenas uma Activity pode ser executada de cada
vez, existe a Activity Stack, ou pilha de Activity.
(OGLIARI e BRITO, 2014).
++
Introdução ao coding mobile 21
SAIBA MAIS
++
sistemas de arquivos e processamento.
SAIBA MAIS
6
JDK – Java Development Kit – Kit de desenvolvimento Java.
7
SDK – O Android SDK ou Kit de Desenvolvimento de Software para
Android é um pacote com diversas ferramentas utilizadas pelo Android
Studio e pelos desenvolvedores.
Introdução ao coding mobile 23
Instalar o JDK
Como os aplicativos desenvolvidos para funcionar no
MOS Android são desenvolvidos em linguagem Java, faz-se
necessário instalar o kit de desenvolvimento Java, o qual pode
ser encontrado para download em vários sites. Um deles é o
que segue: http://www.oracle.com/technetwork/java/javase/
downloads/index.html
Ao copiar e colar esta URL, seu navegador abrirá um
site da ORACLE, como mostrado na figura abaixo:
Figura 3 – Baixando o JDK – Parte
I
OBSERVAÇÃO
+
IMPORTANTE
Aguarde a Instalação....
Figura 8 - Instalando o JDK
IMPORTANTE
IMPORTANTE
IMPORTANTE
Figura 35 – Tela
que apresenta a
abrangência das API
disponíveis
8
DE – Integrated Development Environment - Ambiente de desenvolvimento
Intregrado - que permite ao programador o acesso a uma interface amigável
de desenvolvimento que facilita, organiza e otimiza o desenvolvimento, teste e
40 Introdução ao coding mobile
++
de aplicativos para dispositivos móveis.
SAIBA MAIS
IMPORTANTE
Isto só não vai acontecer caso você tenha fechado a IDE sem antes
fechar o projeto. Para este caso, a IDE abrirá e carregará diretamente
o projeto que estava aberto.
Caso isso tenha acontecido com você, feche
corretamente o projeto, como indicado no item 2.5 e terá
acesso a tela de Boas-Vindas, conforme apresentado na figura
acima.
Não está errado fechar diretamente a IDE sem fechar
antes o projeto. Estamos a proceder assim desta vez para ter
acesso a todas as telas e funcionalidades relevantes para o
escopo deste material.
Repare que a tela de Boas-Vindas está dividida em
duas colunas, a saber:
A coluna da esquerda apresenta a lista dos últimos
projetos trabalhados recentemente;
A coluna da direita fornece uma lista de possibilidades,
das quais destacamos os dois primeiros: (1) Iniciar um novo
projeto Android Studio e (2) Abrir um projeto Android Studio
existente.
Clique no projeto teste, na coluna da esquerda para ter acesso
a tela principal do projeto.
Tela Principal
É de se referir que o layout e a configuração dos painéis
da tela principal variam conforme o gosto de desenvolvedor
e também de acordo com as ferramentas utilizadas da última
vez que o projeto foi aberto.
Introdução ao coding mobile 45
Figura 47 – Tela
Principal do IDE
Android Studio
Pasta Manifests
Dentro da pasta Manifests existe um arquivo chamado
AndroidManifests.xml. Todo aplicativo java-android deve ter um
arquivo com exatamente este mesmo nome. Pode ser um projeto
que você mesmo desenvolveu (ou está a desenvolver) ou pode ser
um projeto de outrem. Ele é o “manifesto do aplicativo”, o qual
contém informações essenciais sobre o aplicativo cujo código
estamos a analisar. Para você talvez esteja a estranhar o nome
“manifesto”, saiba que, segundo o dicionário priberam , manifesto
é um substantivo masculino cujo significado é: “Exposição
(geralmente escrita) em que se manifesta o que é preciso ou o que
se deseja que se saiba a respeito de algo”. Muito bem. Usando a
definição supracitada, podemos inferir que o arquivo “manifesto
do aplicativo” tem função de conter informações necessárias (que
devem ser passadas para o MOS Android) para que o aplicativo
seja corretamente executado. De maneira geral, segundo o
próprio a própria documentação fornecida pelo site da Android
(ANDROID, 2018), o arquivo do manifesto serve para:
Nomear (identificar unicamente) o pacote Java para o
aplicativo;
Descrever os componentes do aplicativo;
Declarar as permissões que o aplicativo deve ter para
acessar partes protegidas da API;
Declarar as permissões que o aplicativo deve ter para
interagir com outros aplicativos;
Declarar qual a API mínima necessária para a correta
execução do aplicativo;
Listar as bibliotecas às quais o aplicativo necessita estar vinculado
para funcionar adequadamente;
Pois bem. Agora que você sabe o que é e para que serve
Introdução ao coding mobile 51
++
18.
SAIBA MAIS
IMPORTANTE
Não se preocupe se tudo isso ainda parece meio confuso pra você.
Estamos na fase inicial. Trabalharemos em detalhes cada um destes
elementos e outros mais para que você possa se sentir confiante ao
desenvolver uma aplicação para dispositivo móvel.
Introdução ao coding mobile 55
Pasta Java
A pasta Java possui, normalmente, três subpastas.
A primeira contém as classes (arquivos .java) referentes às
activities (telas) da sua aplicação e demais classes que você
por ventura precise desenvolver em uma aplicação mais
sofisticada. As outras duas pastas são pastas de testes e não
trataremos delas neste material. Vamos, então para a classe
Principal.java, que deve conter a estrutura da nossa activity.
A figura 51 mostra o conteúdo desta classe.
Eu sei que ainda não estudamos a linguagem Java,
inclusive, esse será o tema que inicia no próximo tópico desta
unidade 1 e será aprofundado no decorrer da unidade 2 desta
disciplina.
Figura 51 – Classe
Principal.java
“public” define que esta classe pode ser instanciada por qualquer
outra que a utilize, sem precisar ser um classe filha. (Exatamente
como vimos quando estudamos PHP). A palavra reservada “extends”
declara que a classe Principal (nossa classe) deve estender (herdar)
as características (atributos) e os comportamentos (métodos) da classe
AppCompatActivity.
Na linha 8, a palavra reservada @Override informa que o
método que está na linha abaixo (onCreate) é um método que está
a fazer sobreposição10 de um método já existente na classe mãe
(AppCompatActivity).
Na linha 9, o método onCreate é definido. Ele é responsável
por carregar os layouts e outras operações de inicialização. Veremos
com mais detalhes este método quando estudarmos o ciclo de vida
completo da Activity.
A palavra reservada “void” declara que este método não
retorna qualquer valor e a palavra reservada “protected” define
que este método não pode ser acessado por qualquer classe, mas
sim apenas pelas classes filhas desta que estamos a criar.
Note também que o método onCreate possui um parâmetro. Não
se preocupe com ele agora. Estudaremos com detalhes quando
tratarmos do ciclo de vida de uma activity.
Na linha 10, a palavra reservada “super” indica que
o método onCreate original (definido na classe mãe) deve
ser chamado e executado. Veremos mais sobre estas palavras
reservadas a partir da próxima unidade.
Na linha 11, o método setContentView será chamado. Ele
tem a função de apresentar um conteúdo na tela. Este conteúdo
é definido por um layout que está declarado no argumento ou
parâmetro deste método (R.layout.activity_principal).
o R indica a pasta “res” (abreviatura para resource);
o layout é o nome da subpasta da pasta “res”;
o activity_principal é o nome do arquivo (activity_principal.
xml);
A pasta “res” será analisada agora e você terá, então,
uma visão da estrutura completa.
Introdução ao coding mobile 57
Pasta “res”
É a pasta de recursos (resources) da sua aplicação Android.
Pasta Drawable: Onde serão armazenados todos os recursos
de imagens para o seu aplicativo;
Pasta Layout: onde ficararão armazenados todos os layouts
que você for utilizar em cada uma das activities (telas) de sua
aplicação. Dentro desta pasta existe um arquivo chamado activity_
principal.xml, do qual comentamos a pouco. Este arquivo define
o layout da única activity que você tem, por enquanto, em sua
aplicação. A figura abaixo mostra o conteúdo do referido arquivo.
Trataremos em detalhes desse arquivo na unidade 3 deste material.
Figura 52 – Arquivo de Layout – activity-principal.xml
aplicação. Uma vez que você queira alterar a cor que você utilizou
em 10 layouts por exemplo é só trocar aqui e os layouts que fazem
referência a esta cor serão alterados automaticamente;
o strings.xml: tem o mesmo funcionamento que o arquivo
de cores explicado acima. É onde devem ser registrados todos os
textos estáticos da sua aplicação. Antes de definir um texto para um
botão ou um texto para um label, defina-o aqui e use a referência
aqui definida nos layouts. Uma vez que você mude aqui o texto do
botão que era “Alterar” para “Editar” todos os botões das telas que
fazem referência a este texto serão alterados automaticamente;
styles.xml: Define o estilo de sua aplicação. Aqui serão
definidos características como tamanho, margem, cor de fundo,
etc. e da mesma forma que acontece com o arquivo de strings ou
de cores, usa apenas a referência a este estilo dentro dos layouts.
Quando você alterar um parâmetro de margem ou cor
de fundo aqui neste arquivo estará automaticamente alterando
em todas as telas (activities) da sua aplicação que a eles fazem
referência.
Agora que você entendeu um pouco como funciona
a estrutura de uma aplicação Java-Android, vamos aos
fundamentos da programação Java para dispositivos móveis.
A Tecnologia Java
Quando se fala em Tecnologia Java está a fazer
referência à Linguagem Java e a Plataforma Java.
A Linguagem Java
A Linguagem Java é uma linguagem de alto nível.
Abaixo estão relacionadas algumas de suas características:
Orientada a Objetos;
Para ambientes distribuídos: Um sistema distribuído
é um conjunto de computadores independentes que aparenta
ao usuário ser um único computador. Exemplo: Sistema de
reserva de passagens aéreas, Serviços da internet.
60 Introdução ao coding mobile
IMPORTANTE
Vale destacar aqui a diferença entre linguagens de programação
Interpretadas e Compiladas:
Linguagem Interpretada: é uma linguagem de programação
onde o programa (código-fonte) é lido (executado) por um
interpretador que o interpreta diretamente, durante a execução, isto
é, não existe o executável do programa. Exemplos: Java, C#, ASP.
Linguagem Compilada: é uma linguagem de programação
cujo código fonte é traduzido pelo compilador, gerando um arquivo
executável do programa (linguagem de máquina) que é executado
diretamente pelo processador ou pelo sistema operacional.
Exemplos:C, C++, Delphi.
Tabela 1 – Conceitos
importantes
Instalando o JDK
O processo de instalação do kit de Desenvolvimento
Java já foi explicado no item 2.1 desta unidade, caso você
tenha realizado todas as atividades desta unidade até aqui,
não precisará reinstalá-la. Pode passar para o próximo passo.
Mas é importante lembrar que se você quiser apenas trabalhar
com a Linguagem Java em outro computador em que não
instalou os itens relacionados no módulo 2, deverá executar o
item 2.1 antes de continuar por aqui.
Instalando o IDE
Iremos trabalhar com o IDE Eclipse Photon, que pode
ser encontrado no seguinte endereço da internet: http://www.
eclipse.org/downloads/
Figura 55 – Baixando a IDE
IMPORTANTE
UNIDADE
02
FUNDAMENTOS DA LINGUAGEM JAVA
PARA ANDROID
68 Introdução ao coding mobile
INTRODUÇÃO
Seja bem-vindo (a) à Unidade 2 – Fundamentos da
Linguagem Java para Android - da disciplina de Introdução
ao Coding (Mobile). Nesta unidade trataremos os conceitos
fundamentais de programação Java necessários para que
você possa desenvolver aplicativos nesta linguagem. É de
se referir que, apesar do foco da disciplina ser programação
para dispositivos móveis, os conceitos apresentados nesta
unidade serão úteis mesmo para programação Java em
qualquer ambiente. O conteúdo desta Unidade está dividido
em quatro módulos. No primeiro módulo apresentamos a
sintaxe das instruções básicas do Java para manipulação de
variáveis e outros recursos elementares da linguagem. No
módulo 2 estudaremos as estruturas de controle e repetição
de fluxo. No módulo 3 aprenderemos como trabalhar com
classes em Java e, finalmente, no módulo 4, trabalharemos
conceitos fundamentais da programação orientada à objeto,
como polimorfismo, classes abstratas e interfaces. É claro
que existe muito mais a aprender, mas o aprofundamento
de cada um destes conhecimentos pode ser feito acessando
os links indicados durante o texto, no tópico [Saiba Mais].
Vamos começar? Excelente estudo para você!
Introdução ao coding mobile 69
OBJETIVOS
Olá! Se bem-vindo a nossa Unidade 2, e o nosso objetivo é
auxiliar você no desenvolvimento das seguintes competências
profissionais até o término desta etapa de estudos:
Java Básico
Neste primeiro módulo aprenderemos a sintaxe básica
da linguagem de programação Java.
RESUMINDO
Fonte: Autor
Introdução ao coding mobile 71
RESUMINDO
Fonte: Autor
Clique no menu File -> New -> Project e o assistente
irá criar um novo projeto e será apresentado, como mostra a
figura 3:
Figura 3 – Criando novo Projeto Java
Fonte: Autor
72 Introdução ao coding mobile
Fonte: Autor
Fonte: Autor
Note que o seu projeto Exe1 foi criado e possui duas subpastas:
A pasta “src” é onde serão incluídas as classes desenvolvidas
para o seu projeto. O termo “src” é a abreviação da palavra “source”,
que significa “fonte”, isto é, dentro desta pasta serão gravadas as classes
(código fonte) do seu projeto;
Dentro da pasta “JRE System Library” estão as bibliotecas de
classes que, como descrito anteriormente, permitem que a sua máquina
rode código Java, no sistema operacional escolhido.
Como você pode reparar, a pasta “src” está vazia, ou seja, seu projeto
está vazio. Nosso próximo passo é criar a primeira classe deste projeto.
Introdução ao coding mobile 73
Fonte: Autor
Clique FINISH e seu projeto deve ficar como o
mostrado na figura abaixo (Figura 7):
Figura 7 – Novo pacote criado.
Fonte: Autor
Dentro do pacote “exercicio1”, ficarão as classes
que iremos criar. Então, vamos criar nossa primeira classe,
finalmente !!!
Clique no menu File -> New -> Class, para criar a
primeira classe do nosso projeto, como mostra a figura abaixo
(Figura 8):
Figura 8 – Criando a primeira classe
Fonte: Autor
74 Introdução ao coding mobile
Fonte: Autor
Fonte: Autor
Introdução ao coding mobile 75
IMPORTANTE
Uma classe deve sempre iniciar com abre chaves “{“ e finalizar
com fecha chaves “}”. Mais detalhes sobre as classes em Java serão
vistos nas próximas páginas neste material;
Fonte: Autor
Na figura acima (Figura 11), o comando: “System.
out.println(...); ” é responsável por mostrar o texto que está
entre parênteses. Neste caso: “Meu primeiro código Java”, no
console do IDE;
Para executar o programa Java clique no botão “Run”,
mostrado na “Figura 11”.
O programa Java deve ser compilado, gerando
“bytecodes” e interpretado pela JVM, gerando o resultado no
Console, como mostrado na figura abaixo (Figura 12):
Figura 12 – Resultado da
execução do primeiro projeto
F o n t e :
Se você conseguiu o mesmo resultado que foi
apresentado na figura acima, parabéns! O primeiro passo está
dado!
Até o momento não estamos trabalhando com um
projeto Java-Android, mas sim com um projeto Java simples
(desktop), pois o objetivo desta Unidade 2 é apresentar a
linguagem Java, para que você possa implementar projetos
em dispositivos móveis na próxima unidade.
Introdução ao coding mobile 77
IMPORTANTE
“
Introdução
”
A linguagem de programação Java é concorrente,
baseada em classes, orientada a objetos e de
propósito geral. (MATTOS, 2007, p. 30).
Fonte: Autor
Identificadores
Dentro de um programa existem variáveis, constantes,
classes, objetos entre outros elementos. Para cada um desses
elementos é necessário definir um nome. Este é chamado de
identificador.
Introdução ao coding mobile 79
EXEMPLO
int x;
x = 0;
No código acima foi definida uma variável de nome
“x”, que recebe o valor 0 (zero). Então, para este caso, “x” é
o identificador de uma variável do tipo int (inteiro).
Para definir o nome de identificadores é necessário
seguir algumas regras:
Evite utilizar acentuação;
Letras maiúsculas são diferenciadas de letras
minúsculas;
Não pode conter espaços em branco;
Deve iniciar com uma letra ou caractere “_”;
Pode conter número a partir do segundo caractere;
Não pode conter caracteres de pontuação ou especiais,
tais como: “#”, “@”, “&”, “?”, “!”, “:”, etc;
Não pode ser uma palavra reservada (Veja no item
1.2.4);
Palavras Reservadas
As palavras Reservadas são utilizadas pelo sistema
como palavras chave e não podem ser utilizadas como
identificadores. São elas:
80 Introdução ao coding mobile
Variáveis
Quando um programa é desenvolvido, normalmente
ele deve atender a uma ou mais necessidades do mundo real e
para tanto ele precisa modelar esta realidade o mais próximo da
exatidão possível. Para que o programa modele apropriadamente
a realidade, seus elementos (variáveis, métodos, classes, objetos,
etc.) devem estar definidos com o tipo adequado de dado.
EXEMPLO
Imagine que existe a necessidade de montar um programa
para somar dois números. Uma análise rápida permite perceber que
é necessário definir três variáveis: uma para o primeiro número,
outra para o segundo número e uma terceira variável para armazenar
a soma dos dois primeiros números. Então, no programa Java,
devem ser definidas três variáveis, mas, elas precisam ter seus tipos
também definidos, para que o programa se assemelhe o máximo da
realidade em questão. Estas variáveis não podem ser do tipo texto,
pois não se pode somar textos.
Também não podem ser do tipo inteiro, pois, com certeza,
Introdução ao coding mobile 81
Fonte: Autor
Como mostra o exemplo acima, cada variável definida
num programa Java será armazenada num local da memória e
deverá estar associada a um tipo de dado, para seu correto uso.
A linguagem Java permite a definição de dois tipos básicos de
dados para as variáveis, quais sejam: Simples e Composto.
Vamos a eles.
Tipos de Dados Simples
São dados que não podem ser divididos em tipos
primitivos. São eles:
INTEIROS
PONTO FLUTUANTE
82 Introdução ao coding mobile
BOOLEANO
CARACTERE
EXEMPLO
Figura 15 – Declaração de valoração de variáveis de
tipos de dados simples.
Fonte: Autor
Fonte: Autor
Fonte: Autor
EXEMPLO
Imagine que precisamos desenvolver um programa
que faça a soma de dois números inteiros e apresente o
resultado no console. Para resolver esta questão, devemos
seguir os seguintes passos:
Para o projeto Exe1, no pacote exercicio2;
Dentro do método main, defina três variáveis do tipo
inteiro, com os seguintes nomes: Num1, Num2 e Result.
Atribua valores inteiros as variáveis Num1 e Num2 e
realize a operação de soma das duas, armazenando o resultado
na variável “Result”;
Mostre o seguinte resultado no console: “O resultado
da soma é: ...”. No lugar dos três pontos deve estar o valor
armazenado em Result.
Figura 18 – Exemplo de
código para somar dois
números inteiros.
Fonte: Autor
Fonte: Autor
84 Introdução ao coding mobile
Conversão de Tipos
Durante o desenvolvimento do programa pode haver
necessidade de trocar (mudar) o tipo de dado de uma variável
para outro tipo. Esta troca é chamada de “conversão de tipos”
ou “casting”, em inglês, e tem a seguinte sintaxe:
Introdução ao coding mobile 85
EXEMPLO
Neste exemplo, a variável “x” é do tipo inteiro e possui
como conteúdo o valor 10. Declara-se então uma variável
“b”, do tipo byte e faz-se uma conversão de tipo (casting)
para atribuir o conteúdo da variável “x” para a variável “b”.
int x = 10;
byte b;
b = (byte) x;
EXEMPLO
Exemplo utilizando expressão:
int x, y;
x = 10; y = 6;
byte b;
b = (byte) x + y;
Algumas conversões podem causar perda de
informação. Isto acontece quando se quer, por exemplo,
converter uma variável do tipo “double” para “int”, como
mostrado abaixo:
double PI = 3.141642;
int i;
i = (int) PI;
86 Introdução ao coding mobile
EXEMPLO
Imagine este cenário: Precisamos montar um bloco
de código que declare uma variável do tipo “double” com
valor igual a 12,34 e outra variável do tipo int. Por um motivo
qualquer, é necessário fazer a atribuição do valor da variável
do tipo “double” para a variável do tipo “int”, usando
conversão de tipos e é necessário apresentar o resultado no
console. Para resolver este problema, crie um novo pacote
no projeto Exe1, chamado de exercicio3 e, dentro deste
pacote, crie uma nova classe chamada Conversao_de_tipos.
Não esqueça que a classe precisa conter o método “main”. O
código seria mais ou menos assim:
Figura 21 – Exemplo de conversão
de tipos
Fonte: Autor
Repare que o valor 12,34 poderia ser definido como
“float” e não como “double”, porem o java não aceita a
atribuição de valores do tipo “float” em variáveis. Pesquise
por que isso acontece.
Salve a classe e execute-a. O resultado apresentado
deve ser o número “12”.
Perceba que a conversão de tipo “double” para “int”
teve como consequência a perda de informação!
Escopo de Variável
Segundo o dicionário Priberiam1, “escopo” significa o “limite
ou abrangência de uma operação”. Sendo assim, quando se
trata de escopo de variáveis em um código Java, é necessário
perceber que uma variável pode não ser válida em todo o
Introdução ao coding mobile 87
EXEMPLO
O código abaixo mostra a declaração de variáveis nas
categorias apresentadas na tabela 4.
Figura 22 – Exemplo
de declaração de
categorias de variáveis.
Fonte: Autor
Modificadores de Acesso
Relativamente às variáveis que são declaradas como
(categoria) Atributo:
De maneira geral, podem ser definidas como atributos
públicos (public), atributos privados (private) ou atributos
protegidos (protected). Um atributo declarado como
público pode ser acessado diretamente por outras classes
que instanciarem a classe que possui este tipo de atributo.
Isto não ocorre para o caso de atributos privados, que não
88 Introdução ao coding mobile
Fonte: Autor
Crie no mesmo pacote uma outra classe, chamada
“Principal” ( que deve conter o método “main”). O código
deve ser o mostrado na figura abaixo:
Figura 24 - Exemplo de
acesso à atributo do tipo
público
Fonte: Autor
Atributos Privados
Atributos do tipo “private” não pode ser acessado diretamente
por todas as classes.
Introdução ao coding mobile 89
EXEMPLO
Para verificar esta afirmação, siga os seguintes passos:
(1) dentro do pacote exercicio4, crie uma classe chamada
Mod_Privado (que não deve conter o método “main”). O
código deve ser como o apresentado na figura abaixo:
Figura 25 – Exemplo de Classe com
atributo do tipo privado.
Fonte: Autor
(2) Na classe “Principal”, criada no exemplo anterior,
modifique o código para que fique como mostrado na figura a seguir:
Figura 26 - Exemplo de acesso
à atributo do tipo público e
outro privado.
Fonte: Autor
IMPORTANTE
Fonte: Autor
Modifique o conteúdo da classe principal, para ficar
como mostrado na figura abaixo (Figura28):
Figura 28 - Exemplo de acesso
à atributo do tipo privado com
métodos getters e setters
Fonte: Autor
Operadores
A linguagem Java disponibiliza seis tipos de
operadores. Neste tópico iremos apresentar, descrever e
verificar como utilizar cada um deles.
Introdução ao coding mobile 91
Operadores Aritméticos
Operadores de Atribuição
Para a tabela abaixo, considere que a variável x tenha
sido declarada com valor inicial igual a 12.
Figura 29 – Exemplo
de código com
uso de operadores
aritméticos
F o n t e :
O valor apresentado no console deve ser: 42.
Crie uma nova classe, chamada Operadores2 que
realize os mesmos passos que o exemplo anterior, só que
desta vez, a utilizar apenas operadores de atribuição. Seu
código deve ficar assim:
Figura 30 – Exemplo de código
com uso de operadores de
atribuição.
Fonte: Autor
EXEMPLO
Crie uma nova classe, chamada Operadores3, e siga
os seguintes passos: (1) Declare duas variáveis (a e b) do tipo
inteiro; (2) Atribua o valor 10 para a variável a e 0 para a
variável b; (3) Mostre o valor das duas variáveis no console;
(4) Faça um pré-incremento na variável b e atribua o valor de
b em a; (5) Mostre o valor das duas variáveis no console; (6)
Faça um pós-decremento na variável b e atribua o valor de b
em a; (7) Mostre o valor das duas variáveis no console. Seu
código deve ficar assim:
Figura 31 – Exemplo
de uso de operadores de
incremento e decremento.
Fonte: Autor
Operadores Relacionais
Para a tabela abaixo considere que as variáveis “x”
e “y” foram declaradas com valores iniciais iguais a 13 e 5,
respectivamente.
94 Introdução ao coding mobile
Operadores Booleanos
Para a tabela abaixo considere que as variáveis “x”
e “y” foram declaradas com valores iniciais iguais a 13 e 5,
respectivamente.
Operador Ternário
O operador ternário tem as mesmas características do
comando if-else (que veremos mais adiante). Sua sintaxe é a
seguinte:
<variável> = <condição>?<caso true>:<caso false>;
EXEMPLO
Imagine o seguinte bloco de código:
int num1 = 11;
int num2 = 12;
int num3;
num1 = (num1 >
num2)?num1:num2;
EXEMPLO
int idade = 15;
if (idade <18)
{
System.out.println(“Não pode entrar”);
}
96 Introdução ao coding mobile
Comando if – else
Como foi visto no item anterior, o comando “if”
permite que um bloco de código seja executado se a condição
apresentada no teste for verdadeira. Porém, algumas vezes é
necessário definir o que o programa deve fazer caso o resultado
da condição apresentada no teste for falsa. Para estes casos,
utiliza-se o comando “else” (que significa SENÃO).
O comando “else” nunca pode ser utilizado sozinho,
mas sempre como complemento do comando “if”. A sintaxe
para o comando “if-else” é a seguinte:
Imagem Ilustrativa
if (condição)
{
Bloco de código – deve ser executado se a condição
for verdadeira.
}
else
{
Bloco de código – deve ser executado se a
condição for falsa.
}
EXEMPLO
int idade = 15;
if (idade <18)
{
System.out.println(“Não pode entrar”);
}
else
{
System.out.println(“Pode entrar”);
}
EXEMPLO
int idade = 15;
boolean amigoDoDono = true;
if ((idade <18) && (amigoDoDono) == false)
{ System.out.println(“Não pode entrar”); }
else
{ System.out.println(“Pode entrar”); }
IMPORTANTE
O comando swicth
O comando “switch” pode substituir o comando “if-
else” para os casos em que existem muitas escolhas (seleções)
a serem feitas, isto é, utilize “if-else” quando precisar testar
diferentes variáveis e utilize “swicth” quando precisar
comparar uma variável com diversos valores. A sintaxe do
comando “swicth” é a seguinte:
Introdução ao coding mobile 99
swicth (<variável>)
{
case valor1:
bloco de código que deve ser executado se a variável
tiver valor = valor1;
break;
case valor2:
bloco de código que deve ser executado se a variável
tiver valor = valor1;
break;
case valorN:
bloco de código que deve ser executado se a variável
tiver valor = valorN;
break;
default:
bloco de código que deve se a variável não encontrar
nenhuma correspondência nos cases acima;
break;
}
IMPORTANTE
EXEMPLO
int i = 3;
swicth (i)
{
case 1:
System.out.println(“i é igual a 1”);
break;
case 2:
System.out.println(“i é igual a 2”);
break;
default:
System.out.println(“i é diferente de 1 e diferente de 2”);
break;
}
While (condição)
{
Bloco de código que deve ser executado enquanto a
condição for verdadeira.
}
Introdução ao coding mobile 101
EXEMPLO
int idade = 15;
while (idade <18)
{
System.out.println(idade);
idade = idade + 1;
}
for
O comando “for” e outro comando de repetição (loop)
que permite repetir um determinado bloco de código enquanto
a condição for verdadeira. Porém, o “for” trata a condição de
maneira um pouco diferente do comando “while”, apresentado
acima. A sintaxe do comando “for” é a seguinte:
for (inicialização; condição; incremento)
{
Bloco de código que deve ser executado enquanto a condição
for verdadeira.
}
EXEMPLO
for (int i = 0; i < 10 ; i++)
{
S y s t e m . o u t .
println(i);
}
No exemplo acima, o programa irá apresentar no
console os números de 0 (zero) a 9 (nove).
Controlando Loops
O comando break
Introdução ao coding mobile 103
EXEMPLO
int x, y;
x = 0; y = 50;
for (int i = x; i < y; i ++)
{
if (i%19 == 0)
{
System.out.println(“Achei um
número divisível por 19 entre x e y”);
break;
}
}
O comando continue
Em outros casos, faz-se necessário permitir que o
laço de repetição não execute o loop para uma determinada
condição. Nestes casos, utiliza-se o comando continue.
104 Introdução ao coding mobile
EXEMPLO
for (int i = 0; i < 100 ; i ++)
{
if ( i > 50 && i < 60)
{
continue;
}
System.out.println(i);
}
IMPORTANTE
Classes em Java
Introdução
Como foi estudado na disciplina de Introdução ao Coding
Introdução ao coding mobile 105
Métodos
Um Método de uma Classe define o comportamento
que a classe deve ter quando este Método for chamado numa
mensagem.
Quando uma Classe recebe uma mensagem, esta
mensagem normalmente informa qual método ela deve
executar. A Classe, então, redireciona a execução do programa
para o código que está contido dentro do método chamado.
Quando o bloco de código daquele método acaba, o programa
retorna à execução do programa para a linha de código seguinte
a que chamou o método.
O termo “chamar um método” é utilizado neste material
para dizer que o código que está contido dentro daquele método
deve ser executado.
Para declarar um método público em Java utilizamos a
seguinte sintaxe:
public <tipo de retorno> <nome do método>
{
Bloco de código que deve ser executado quando este
método foi chamado.
}
Onde:(1) O termo “public” define que o método pode
ser acessado por outras classes que instanciarem a classe
que contem este método. Caso se queira tornar este método
inacessível para outras classes, é necessário substituir o termo
“public” por “private”; (2) O <tipo de retorno> informa ao
programa se qual o tipo de dado que o método irá retornar
quando for executado. Para o <tipo de retorno> pode-se
utilizar qualquer um dos tipos primitivos ou compostos
106 Introdução ao coding mobile
F o n t e :
Explicando o exemplo acima:
1 - Quando o programa acima é executado, o primeiro método a
ser chamado quando é o método “main” (linha 12) conforme já
foi dito anteriormente, neste material.
2 - Dentro do método “main”, três variáveis são declaras (linhas
13 a 15) e têm seus tipos e valores definido. São elas: a, b e c.
3 - Na linha 16 existe uma chamada ao método soma, passando
como parâmetros as variáveis a e b.
4 - A execução do programa passa para a linha 5, onde o método
soma (que foi chamado na linha 16) recebe os dois parâmetros,
Introdução ao coding mobile 107
como sendo “X” e “Y”. Isto quer dizer que apenas dentro do
método soma() a variável “a” será chamada de “X” e a variável
“b” será chamada de “Y”.
5 - O método soma() executa a operação de adição das suas duas
variáveis e armazena o resultado na variável “resultado”. (linhas
8). A última linha do método soma (linha 9) faz o retorno da
soma das variáveis (return resultado).
6 - A execução do programa retorna para a linha 16, onde o
resultado da soma é atribuído à variável c, dentro do método
“main”.
7 - Na linha seguinte (linha 17) o programa executa um comando
para mostrar no console o resultado calculado pelo método soma.
EXEMPLO
Como segundo exemplo de chamada de método,
implemente na os métodos subtração, multiplicação e divisão
para as mesmas variáveis a e b e teste o resultado do programa.
Seu código deve ficar assim:
Figura 33 – Exemplo 2 de
chamada de métodos.
Fonte: Autor
108 Introdução ao coding mobile
Classes
Como foi verificado anteriormente, neste material, a
Programação Java é baseada em Classes. Isto quer dizer que
toda a estrutura da programação Java está baseada no envio e
recebimento de mensagens entre as classes, isto é, uma classe
a chamar a outra através de métodos.
Para melhor entendimento do que seja uma classe e de
como podemos cria-las utilizando a linguagem Java, imagine
a classe CALCULADORA especificada na figura abaixo
(Figura 34).
Fonte: Autor
Fonte: Autor
Fonte: Autor
Fonte: Autor
Repare que a classe “Calc” não deve ter o método
“main”. Este método só deve estar presente na classe principal
do pacote.
Para implementar o exemplo, o nosso trabalho consiste
em traduzir o “desenho” representado na figura 34 (da classe
calculadora) para dentro do código Java – classe “Calc”.
110 Introdução ao coding mobile
Figura 39 – Exemplo da
tarefa a ser realizada
Fonte: Autor
EXEMPLO
Vamos demonstrar passo a passo a implementação da
classe calculadora:
1 - Acrescente um bloco de comentário padrão e declare o
atributo na classe “calc”.
Figura 40 – Exemplo – parte I
Fonte: Autor
2 - Acrescente os métodos descritos na figura 39 na classe “calc”.
Figura 41 – Exemplo – Parte II
Fonte: Autor
Introdução ao coding mobile 111
Fonte: Autor
Note que o problema está no fato de que nós escrevemos
um método que deveria retornar uma variável do tipo “double” e
não escrevemos a linha de código para que este retorno seja feito.
Dessa forma, a própria “IDE” apresenta opções para corrigir o
problema: Podemos adicionar o comando return ou mudar o tipo
de retorno do método para ‘void’, como se pode ver na figura 42.
Para o nosso caso, a solução mais adequada é inserir o
comando “return”. O nosso código fica, então, como mostrado
na figura abaixo:
Figura 43 – Código corrigido
Fonte: Autor
A partir de agora, o que falta é apenas inserir as
funcionalidades para cada método.
112 Introdução ao coding mobile
IMPORTANTE
Fonte: Autor
Fonte: Autor
Note que para se instanciar uma classe, isto é, criar um
objeto, deve-se usar a seguinte notação:
<tipo da classe> <nome do objeto> = new <nome da
Onde:
<tipo da classe> tem a mesma função que o <tipo da
variável> utilizado nos tópicos anteriores, neste material;
<nome do objeto> é o nome que o programador dará
para o objeto que está sendo criado;
<new> é uma palavra reservada que informa ao
programa que o programador está criando uma nova instância
de uma classe;
<nome da classe> é o nome que o programador deu
para a classe que ele está querendo instanciar. Sempre deve
ser seguindo de abre e fecha parênteses “()”;
Para o caso em estudo, a linha de código que instancia
a classe “calc” é a seguinte:
Calc C = new Calc();
A partir desta linha o programa entende que existe um
objeto chamado “C” e que o mesmo foi instanciado a partir
da classe “Calc”. Em seguida, utilizamos o objeto “C” para
chamar os métodos da classe à qual ele faz referência.
Muito bem. Execute o programa e verá que o resultado
da soma será apresentado no console.
Agora siga os mesmos procedimentos apresentados
para o processo de soma de duas variáveis e implemente
os códigos para que o método “MAIN” da classe Principal
execute a subtração, multiplicação e divisão.
114 Introdução ao coding mobile
Fonte: Autor
Fonte: Autor
”
parâmetros), mas comportamentos diferentes,
redefinidos em cada uma das classes filhas. -
(DALL’OGLIO, 2016)
EXEMPLO
Imagine o cenário representado pelo diagrama abaixo:
Figura 48 – representação gráfica da herança entre duas
classes.
Fonte: Autor
Primeiro vamos implementar a classe Conta.
Para implementar esta classe, crie um novo pacote
no projeto Exe01, chamado exercicio7. Dentro deste pacote,
crie uma classe Conta, sem o método “MAIN”, declare os
atributos e implemente os métodos, de acordo com a figura
48, acima. O seu código deve ficar mais ou menos assim:
116 Introdução ao coding mobile
Fonte: Autor
Agora que temos a classe Conta, crie uma nova classe,
no mesmo pacote ‘exercicio7’, chamado Conta_Poupanca.
Esta classe deve ser uma subclasse da classe Conta
(figura 49). Ser uma subclasse significa herdar as características
e comportamentos da classe mãe (ou super classe).
IMPORTANTE
Fonte: Autor
Para o conteúdo do método sacar da classe ContaPoupança
podemos imaginar que o Valor não pode ser maior que o Saldo da
conta, verificação que não acontece na classe Conta (figura 49).
Então, nosso código fica mais ou menos assim:
Figura 51 – Classe Conta Poupança.
Fonte: Autor
Fonte: Autor
118 Introdução ao coding mobile
Fonte: Autor
Interface
Uma interface é um tipo composto (ou referência) em
Java. Pode ser considerada como uma classe com métodos
abstratos. Alguns tutoriais java, como por exemplo o site
TutorialPoint , consideram que escrever uma interface é similar
a escrever uma classe, porém, uma classe deve descrever os
atributos e comportamentos de um objeto e a interface, por sua
vez, contém a descrição dos comportamentos que uma classe
deve implementar.
A lista a seguir apresenta algumas características de
uma interface que não podem ser esquecidas quando queremos
utilizá-las adequadamente:
Uma interface não pode ser instanciada;
Uma classe não pode herdar (extends) as características
ou comportamentos de uma interface, mas pode implementá-las
(implement);
Todos os métodos de uma interface devem ser abstratos;
Uma interface não pode conter atributos instanciáveis;
Uma interface pode herdar (extends) de outra interface;
Declarando uma Interface
Para declarar uma interface devemos utilizar a palavra-
chave: “interface”.
Imagine que, no exemplo que utilizamos para a classe
Conta, quiséssemos fazer algumas modificações, como por
exemplo: fazer com que a Classe Conta não mais contivesse
qualquer código, mas apenas a declaração dos métodos
Introdução ao coding mobile 119
Fonte: Autor
Fonte: Autor
Figura 56 – Classe
ContaCorrente
Fonte: Autor
Classes Abstratas
Como você deve lembrar, já apresentamos este
conceito quando estudamos a linguagem PHP, na disciplina
de Introdução ao Coding Web – Unidade 4. Assim como o
PHP, a linguagem Java também permite o recurso de utilizar
classes estruturais para servir de base para a criação de outras
classes mais especializadas.
IMPORTANTE
Fonte: Autor
Dentro da classe Conta, insira o seguinte conteúdo:
Figura 58 –
Classe abstrata
Fonte: Autor
03
UNIDADE
INTRODUÇÃO
Seja bem-vindo(a) à Unidade 3 – Gerenciando app
Android, da disciplina de Introdução ao Coding (Mobile).
Nesta unidade usaremos os conhecimentos adquiridos nas
duas primeiras unidades e aprenderemos a criar e gerenciar
uma aplicação básica em Java-Android. O conteúdo desta
Unidade está dividido em quatro módulos. No primeiro
módulo, você entenderá como funciona o ciclo de vida da
aplicação mobile android e como implementar uma classe
Activity. No módulo 2, estudaremos sobre navegabilidade,
isto é, como implementar uma aplicação android com várias
telas e como fazer uma tela chamar a outra. No terceiro,
aprenderemos a passar parâmetros entre uma tela e outra da
aplicação, permitindo assim uma aplicação mais complexa
e robusta. Finalmente, no módulo 4, veremos como inserir
alguns dos componentes básicos em uma aplicação Android,
para que a mesma fique mais interativa. É claro que existe
muito mais para aprender, mas o aprofundamento de cada
um destes conhecimentos pode ser feito acessando os links
indicados durante o texto, no tópico [Saiba Mais]. Vamos
começar? Excelente estudo para você!
126 Introdução ao coding mobile
OBJETIVOS
Olá! Se bem-vindo a nossa Unidade 3, e o nosso objetivo é
auxiliar você no desenvolvimento das seguintes competências
profissionais até o término desta etapa de estudos:
Introdução
A maioria das aplicações Android necessita de uma
interface que permita a interação com o usuário. Conhecida
também como UI (user interface), ela pode ser formada por
uma ou mais telas, onde devem ser apresentados os elementos
(botões, caixas de texto, figuras, animações, caixas de seleção
etc.). É importante destacar que cada atividade (classe activity)
representa uma única tela (UI) do aplicativo e é responsável por
gerenciar (tratar) os eventos que o usuário pode gerar em cada
um dos elementos apresentados nela, como por exemplo, o ato
de clicar em um botão, digitar um texto ou selecionar um item.
Para o caso de aplicações que precisem ter mais de
uma tela, será necessário ter mais de uma atividade, ou seja,
é necessário implementar uma atividade para cada tela. Por
exemplo, um aplicativo de e-mail deve ter uma atividade que
mostre a lista de e-mails, outra responsável por permitir que o
usuário digite um novo e-mail e ainda outra com a função de
mostrar o conteúdo do e-mail para que o usuário possa lê-lo.
Apesar das atividades de uma mesma aplicação trabalharem
juntas para compor as funcionalidades de um aplicativo, elas são
independentes umas das outras e podem, caso a configuração do
aplicativo permita, serem iniciadas individualmente.
Uma característica especial dos aplicativos do Android é
que uma aplicação pode iniciar qualquer componente instalado no
aplicativo e utilizar seus recursos, se assim estiver configurado.
++
128 Introdução ao coding mobile
SAIBA MAIS
Gerenciando aplicativos
É importante entender que os dispositivos móveis
precisam gerenciar cuidadosamente a utilização de seus
recursos, principalmente a memória, pois normalmente, tais
recursos são bem limitados. O sistema operacional gerencia
as aplicações na forma de uma pilha – stack applications ou,
em português, pilha de aplicações. A aplicação que está no
topo da pilha é a que está sendo executada e visualizada. As
outras permanecem com status de "paradas temporariamente"
(pause) ou "paradas definitivamente" (stop) e não podem
ser visualizadas até que voltem a estar no primeiro lugar, no
Introdução ao coding mobile 129
Figura 1
– Ciclo de
Vida dos
Aplicativos
Android
Fonte:
Autor
Introdução ao coding mobile 131
A Classe Activity
A classe activity define as atividades do projeto. É a
classe mãe ou a superclasse que define as características e os
comportamentos básicos para qualquer atividade criada para
o projeto. Cada atividade é responsável por fornecer uma tela
onde o usuário pode interagir para realizar alguma ação, como
digitar um número de telefone, tirar uma foto, ler um e-mail,
incluir, alterar ou excluir os dados de um contato. A interface
criada na atividade pode preencher a tela inteira do dispositivo,
132 Introdução ao coding mobile
Fonte: Autor
Naturalmente, como não se tratou dos atributos, a lista
de atributos da classe Activity ainda é desconhecida, por isso
foi colocada como sendo “...”. Da mesma forma, pode ser que
a classe activity tenha mais métodos que os mencionados; por
isso, após o método onDestroy, também foi colocado “...”.
EXEMPLO
Abra o Android Studio e crie um novo projeto, clicando
no item “Start a new Android Studio Project”, destacado em
vermelho na figura abaixo:
Figura 3 – Criando um novo projeto
Android
Figura 4 – Definindo o
nome da aplicação
IMPORTANTE
Caso você não se recorde o motivo pelo qual está a fazer estas
seleções, reveja o material da Unidade 1 desta disciplina.
A tela a seguir deve aparecer:
134 Introdução ao coding mobile
Figura 6 – Adicionando a
Activity para o projeto
Fonte: app
Android
(2018)
Introdução ao coding mobile 135
IMPORTANTE
Navegabilidade
Introdução
Aplicativos mais complexos normalmente possuem
mais de uma tela ou precisam chamar outros aplicativos para
executarem uma função especializada. Este tópico mostra
como criar novas telas (activity) para um mesmo aplicativo,
como navegar entre elas e também como permitir que a tela
de um aplicativo (activity) chame outro aplicativo (activity).
Os métodos utilizados para iniciar uma nova (tela)
activity são os seguintes: startActivity e startActivityForResult.
Lembre-se de que cada tela de um aplicativo é uma classe
Activity e que a linguagem Java diferencia letras maiúsculas
de letras minúsculas. Dessa forma, o método “startActivity”
não pode ser escrito como: “startactivity”.
A decisão da utilização de um desses dois métodos
deve recair sobre a seguinte questão: a tela (activity1) que
está chamando a outra (activity2) precisa de algum retorno
ou vínculo para poder continuar suas atividades, depois que
a tela chamada (activity2) for fechada? Em caso de resposta
positiva, deve-se utilizar o método startActivityForResult.
Mas se esse não for o caso e a tela (Activity1) que está
chamando a outra (activity2) não precisar de nenhum vínculo
ou retorno, deve-se utilizar o método startActivity. As figuras
abaixo representam graficamente esses dois casos:
Figura 21 – Resultado do
exemplo acima
…
{
//declara a intenção “i” para chamar outra tela (activity)
Intent i = new Intent(this, tela2.class);
//declara um pacote de dados que deve ser enviado para a
tela a ser chamada
Bundle pacote_de_dados = new Bundle();
//determina que o conteúdo do pacote de dados é um dados
chamado “msg” //cujo conteúdo é “Olá”.
pacote_de_dados.putString(“msg”, “Olá”);
//insere o pacote de dados na intenção de chamada “i”
i.putExtras(pacote_de_dados);
//chama a nova atividade, definida pela intenção “i”.
startActivity(i);
}
Muito legal, não é? Agora você já sabe como passar
parâmetros para uma nova tela. Mas isso é só o começo!
Acompanhe o exemplo abaixo para esclarecer melhor como
funciona todo o processo.
EXEMPLO
Crie um novo projeto de app, chamado App3_U3. A
Activity principal deve ser do tipo "Empty Activity", com o
nome de Principal. Depois de aberto, o código da tela principal
(classe Principal.java) do seu projeto deve se parecer com o
mostrado na figura abaixo:
Figura 22 – App3_U3 – Código da
classe Principal.java
Fonte: app
Android
(2018)
IMPORTANTE
Button
Agora precisamos inserir um botão com o texto “OK”.
Para isso, selecione o item Button -> Button, na janela Palette,
como mostrado na figura abaixo.
Figura 45 – Inserindo um Botão
Figura 47 –
Arquivo xml
correspondente
ao AVD da figura
44
Fonte: app
Android (2018)
Fonte: app
Android (2018)
166 Introdução ao coding mobile
UNIDADE
04
DESENVOLVENDO APP PARA ANDROID
170 Introdução ao coding mobile
INTRODUÇÃO
Seja bem-vindo(a) à Unidade 4 – Desenvolvimento de
App para Android - da disciplina de Introdução ao Coding
(Mobile). O conteúdo desta Unidade está dividido em
quatro módulos. No primeiro módulo vimos como codificar
e tratar eventos acionados pelo usuário e pela máquina em
aplicativos Android, por meio da linguagem Java Mobile. No
segundo Módulo como tratar dados provenientes das mais
diversas atividades em um aplicativo Android. No módulo
três, aprendemos a invocar ações dos recursos residentes no
sistema operacional Android. E, por fim, no último módulo
desta Unidade 4, vamos desenhar projetar e desenhar
telas para aplicativos móveis, aplicando-lhes técnicas de
usabilidade e recursos disponíveis no sistema Android, por
meio da linguagem Java Mobile.
É claro que existe muito mais a aprender, mas o aprofundamento
de cada um destes conhecimentos pode ser feito acessando
os links indicados durante o texto, no tópico [Saiba Mais].
Vamos começar? Excelente estudo para você!
Introdução ao coding mobile 171
OBJETIVOS
Olá! Se bem-vindo a nossa Unidade 4, e o nosso objetivo é
auxiliar você no desenvolvimento das seguintes competências
profissionais até o término desta etapa de estudos:
2
Obter e tratar dados provenientes das mais diversas
atividades em um aplicativo Android, por meio da
linguagem Java Mobile;
4
Projetar e desenhar telas para aplicativos móveis,
aplicando-lhes técnicas de usabilidade e recursos
disponíveis no sistema Android, por meio da linguagem
Java Mobile;
172 Introdução ao coding mobile
Tratamento de Eventos
O termo “evento”, no contexto desta disciplina, pode
ser definido como a ação do usuário sobre algum componente
apresentado na tela, isto é, podemos considerar que a cada
interação do usuário com o aplicativo em geral um evento
que pode ser identificado e tratado.
++ SAIBA MAIS
Figura 1 – Protótipo
da Aplicação Android
Fonte: Autor
Percebe-se, pela Figura 1, que nossa aplicação será
composta por três telas (activity). Na primeira tela (Principal)
vamos precisar utilizar três tipos de componentes: (1) Dois
TextView; (2) Um Plain Text; (3) Um Button.
Na segunda tela vamos precisar de 4 tipos de componentes:
(1) Seis do tipo TextView; (2) Dois do tipo Plain Text; (3) Dois do
tipo Option Buton; (4) Um do tipo Button.
E, por fim, na terceira tela, precisaremos destes tipos de
componentes: (1) Dois do tipo TextView; (2) Dos do tipo Button;
(3) Um do tipo Plain Text.
Implementando a Aplicação
Para implementar a aplicação, abra o Android Studio e crie
uma nova aplicação, chamada App_Evento_U4, com uma ‘Empty
Activity’, chamada Principal. Depois do projeto estar carregado
na IDE Android Studio, insira mais duas telas (Empty Activity)
em seu projeto, com os nomes de Tela2 e Tela3, respectivamente.
Seu projeto deve ficar assim (Figura 2):
Figura 2 – Telas da aplicação
Fonte: Autor
174 Introdução ao coding mobile
Fonte: Autor
Salve e execute o aplicativo. O AVD deve ser
apresentado com o que mostra a Figura 4:
Figura 4 – Resultado do AVD para tela Principal
Fonte: Autor
Introdução ao coding mobile 175
IMPORTANTE
Fonte: Autor
Neste ponto, precisamos destacar dois casos:
1 - Repare que, na linha 25, para que possamos capturar
o nome que o usuário escreveu, precisamos saber o nome
do componente em que ele escreveu o nome: “txt_nome”.
Demos este nome por que é uma caixa de texto (txt) que
supostamente terá como conteúdo o nome do usuário
(nome). Por isso “txt_nome”. O nome do componente foi
176 Introdução ao coding mobile
Fonte: Autor
Preparando a Tela2
Layout da Tela2
Conforme mostrado na (Figura 1), a tela2 possui
vários componentes, e um deles deve receber o nome do
usuário. Podemos imaginar que seja possivelmente o primeiro
componente “TextView”, o qual contém o texto ‘Olá’.
Primeiramente, vamos montar o arquivo xml que
define o layout da tela2. O código deve ser como mostrado na
Figura 7:
Introdução ao coding mobile 177
Figura 7
– Código
xml do
layout da
tela2
F o n t e :
Autor
Salve e execute o aplicativo. O AVD deve ser
apresentado com o que mostra a Figura 8:
Figura 8 – Resultado do AVD para tela2
Fonte: Autor
Note que o nome do usuário ainda não está aparecendo.
Precisamos tratar isso na classe java correspondente à tela2.
Classe Activity da Tela2
Agora que temos o layout da tela2 implementado,
precisamos implementar o código java para que a mesma receba
o parâmetro relativo ao nome do usuário. Também apresente logo
após a palavra ‘Olá’, e capture os dados digitados nos campos
178 Introdução ao coding mobile
Fonte: Autor
Salve e execute o aplicativo. O AVD deve ser
apresentado com o que mostra a Figura 10:
Figura 10 – Tela2
capturando o dado
enviado pela tela
Principal
Fonte: Autor
Repare, no código java (Figura 9) que para inserir o conteúdo
enviado por parâmetro para a tela2, na caixa de texto que contém
a palavra “olá”, precisamos saber o nome deste componente, que,
neste caso, é “TextView5”. Ficaria muito mais fácil de se programar
Introdução ao coding mobile 179
Fonte: Autor
Repare que na Figura 11, nas linhas 48, 49 e 50, três
parâmetros são enviados para a tela3, quais sejam: nome,
altura e peso do usuário.
Vamos tratar, enfim, da tela3.
Preparando a Tela3
Layout da Tela3
Dando os nomes corretos aos componentes que serão
utilizados, o arquivo xml da tela3, fica como mostrado na
Figura 12:
180 Introdução ao coding mobile
Fonte: Autor
Fonte: Autor
O Resultado deve ser como mostrado na Figura 14:
Introdução ao coding mobile 181
Figura 14 – Resultado
da aplicação
Fonte: Autor
Fonte: Autor
Introdução ao coding mobile 183
Fonte: Autor
Implementando o código java para as duas telas
teremos:
Para a tela principal (Figura 17):
Figura 17 –
Código java
para a tela
principal
Fonte: Autor
Para a Tela2 (Figura 18):
Figura 18 –
Código java
para a Tela2
Fonte: Autor
184 Introdução ao coding mobile
Fonte: Autor
Fonte: Autor
Observe que o atributo android: entries (linha 28)
do componente ListView é um array e deve ser definido
no arquivo strings.xml, na subpasta res/values, da mesma
maneira que foi feito quando inserimos o combobox para
selecionar o sexo do usuário. O arquivo strings.xml deve ficar
como mostra a Figura 21:
Figura 21 -Arquivo
strings.xml
Fonte: Autor
E, por fim, a segunda tela deve ficar, como mostra a
Figura 22:
186 Introdução ao coding mobile
Fonte: Autor
Fonte: Autor
Figura 24 -
Resultado da
captura da
escolha do
usuário
Fonte: Autor
Figura 25 – Classe
Principal.java
modificada para
reconhecer o retorno
Fonte: Autor
E, por fim, modifique o código da Segunda Tela para
que ela fique como mostra, Figura 26:
Figura 26 – Classe Tela2.java
modificada para enviar item
selecionado pelo usuário como
retorno para a classe Principal.
java
Fonte: Autor
Salvando e executando o aplicativo, temos o seguinte
resultado (Figura 27):
Figura 27 –
Resultado da
captura do item
selecionado pelo
usuário
Fonte: Autor
Introdução ao coding mobile 189
Explicando o código:
Na primeira Tela: No método onClick() em vez de
utilizar o comando starActivity(), foi utilizado o comando
startActivityForResult(), pois para este caso, queremos tratar o
resultado da escolha do usuário na Segunda Tela. Os parâmetros
desse comando sempre serão o objeto Intent e o número 0 (zero).
Para tratar o resultado escolhido pelo usuário, implementou-se
o método onActivityResult(), que sempre deve ser declarado
quando o comando startActivityForResult() for utilizado. Dentro
deste método (onActivityResult()), faz-se o teste para verificar
se o objeto Intent foi retornado. Caso não tenha sido retornado,
isto é, caso a Segunda Tela tenha sido fechada sem que o usuário
escolha algum item, a mensagem mostrada será: “Nenhum item
selecionado.”. Mas caso o usuário escolha algum item antes
de fechar a Segunda Tela, o valor escolhido é atribuído a um
variável texto e mostrada na tela.
Na classe Segunda Tela: A modificação acontece no
método onItemClick() que, em vez de mostrar o resultado
escolhido pelo usuário, declara um objeto Intent para o qual é
atribuído o valor escolhido pelo usuário. Este objeto é devolvido
à Tela Principal, pelo método setResut, que terá acesso ao mesmo
logo que esta tela for fechada, e isto acontece quando o método
finish() é executado.
ACTION_VIEW
A ação Intent.ACTION_VIEW é a ação mais comum
utilizada pelos programadores para mostrar dados para o usuário.
190 Introdução ao coding mobile
Fonte: Autor
O código java deve ficar como mostra, Figura 29:
Figura 29 – Código Java para o
exemplo
Fonte: Autor
Introdução ao coding mobile 191
F o n t e :
IMPORTANTE
Figura 31 –
Visualizando o
primeiro contato
da lista de contatos
Fonte: Autor
Executando o aplicativo, temos o seguinte resultado (Figura
32):
Figura 32 – Resultado
do exemplo
F o n t e :
ACTION_PICK
Diferente do “ACTION_VIEW” que apenas permite a
visualização dos contatos, como mostrado no tópico anterior, o
“ACTION_PICK”, além de permitir a visualização dos contatos,
permite também que o usuário selecione um deles e, ao fazer isso,
a atividade lista de contatos é fechada e o contato selecionado é
retornado para a atividade anterior.
Para o melhor entendimento de como o “ACTION_PICK”
funciona, verifique o exemplo abaixo.
Crie uma nova tela (Empty Activity) em seu projeto, e dê
a ela o nome de Tela2. Dentro dela, crie um botão (button1) e
Introdução ao coding mobile 193
atribua a ela a função “Listener”, para que, ao ser clicado, ele abra
a tela de contatos para que o usuário possa selecionar um deles.
O código xml fica desta forma (Figura 33):
Figura 33 – Código
xml do layout da tela2
Fonte: Autor
Fonte: Autor
Figura 35 – Resultado
da utilização do
ACTION_PICK
Fonte: Autor
ACTION_CALL
Outra ação importante é o “Intent.ACTION_CALL”,
responsável por fazer ligações telefônicas para um contato
especificado.
Sua utilização deve ser como mostra abaixo:
Uri telefone = Uri.parse(“tel:99999999”);
Intent i = new Intent(Intent.ACTION_CALL,
telefone);
startActivity(i);
Para o melhor entendimento de como o “ACTION_
EXEMPLO
Crie uma nova tela (Empty Activity) em seu projeto, e
dê a ela o nome de Tela3. Dentro dela, crie um botão (button1)
e atribua a ela a função “Listener”, para que, ao ser clicado,
ele possa iniciar a atividade de ‘fazer chamada telefônica’.O
código xml fica desta forma (Figura 36):
Figura 36 – Código
xml do layout da tela3
Fonte: Autor
O código java deve ser como mostrado na Figura 37:
Introdução ao coding mobile 195
Figura
37 –
Código
j a v a
para o
exemplo
Fonte:
Autor
Ao ser executado, o aplicativo deve se comportar da
maneira apresentada na Figura 38:
Figura 38 –
resultado para
a utilização
de ACTION_
CALL
++
Fonte: Autor
SAIBA MAIS
Para conhecer outras ações que podem ser executadas pelo objeto
intente, acesse: http://developer.android.com/reference/android/
content/Intent.html
196 Introdução ao coding mobile
Layout de Tela
Introdução
Como foi apresentado até o momento, sempre que uma
tela (classe atividade) é definida, é necessário também definir
o arquivo xml que corresponde ao seu layout. Durante todo o
material, foi utilizado o layout <LinearLayout> para facilitar
a compreensão e a disposição simples que ele permite.
Este módulo trata dos tipos de layout mais importantes
permitidos pelo sistema Android, para se configurar
uma aplicação. São eles: FrameLayout, LinearLayout e
TableLayout.
IMPORTANTE
FrameLayout
Este é o tipo mais comum de layout, onde o componente
sempre é posicionado no canto superior esquerdo da tela e,
caso exista mais de um componente, um sobrepõe o outro.
Dependendo do tamanho (propriedades altura e
largura) do componente, definidos pelo usuário, o mesmo
pode preencher toda a tela.
EXEMPLO
Crie uma nova app, chamada “AppLayout1_U4”, com
uma Empty Activity. Dentro do arquivo xml que define o
layout da activity, insira o seguinte código, como mostra na
Figura 39:
Introdução ao coding mobile 197
Figura 39 – Código
do Exemplo
Fonte: Autor
Fonte: Autor
Note que a componente imagem, sobrepôs o
componente texto e que a cor de fundo do layout foi definida
pelo atributo “android:background” (linha 6) que, para este
caso, recebeu o valor "@android:color/holo_orange_light”.
Outro item importante a ser notado está na linha 20:
A propriedade “src” define a imagem a ser usada. Esta
imagem deve estar definida na pasta res-> mipmap, como
destaca a Figura 41:
198 Introdução ao coding mobile
Fonte: Autor
À primeira vista, pode parecer que este tipo de layout
não tem muita utilidade, porém, se alterarmos um pouco o
tamanho e disposição dos componentes da tela, você vai
perceber que ele pode ser bastante útil. Veja só, neste exemplo:
EXEMPLO
Crie uma nova Empty Activity na sua aplicação e insira o código
abaixo (Figura 42) no arquivo xml que define o layout da tela.
Figura 42 – Exemplo
da utilização do
FrameLayout
Fonte: Autor
Depois de salvar e executar esta Activity, temos o
seguinte resultado, Figura 43:
Introdução ao coding mobile 199
Fonte: Autor
Antes de passar para o próximo tipo de layout, é
necessário dar destaque à ‘linha 14’ do código xml acima, o
qual determina a imagem a ser usada: “android_logo1”. Esta
imagem não vem com a IDE Android Studio, como acontece
com algumas outras e, para utilizá-la, é necessário inseri-la
na pasta “res->mipmap”, da seguinte forma:
1 - Grave a imagem que deseja inserir no seu aplicativo em
algum local na sua máquina (de preferência no formato png);
2 - Clique sobre a imagem, com o botão direito do mouse e
selecione a opção copiar;
3 - Clique sobre a pasta ‘mipmap’, com o botão direito do
mouse e selecione a opção colar;
Para inserir a imagem na tela use o código xml
“android:src:@mipmap/android_logo1” , a destacar que
“android_logo1” é o nome da imagem.
LinearLayout
Este tipo de layout é utilizado para organizar os
componentes na vertical ou na horizontal. A orientação dos
componentes é definida pelo atributo “android:orientation”,
o qual pode ter o valor “horizontal” ou “vertical”.
200 Introdução ao coding mobile
EXEMPLO
Crie uma nova Empty Activity em sua aplicação e
escreva o seguinte código no arquivo xml correspondente ao
layout desta tela (Figura 44):
Figura 44 – Exemplo
do uso de LinearLayout
(Vertical)
Fonte: Autor
Salve e execute a aplicação. O resultado deve ser como
apresentado na Figura 45:
Figura 45 – Resultado do exemplo do uso de
LinearLayout(vertical)
Fonte: Autor
Repare que a componente imagem foi posicionada
abaixo (orientação vertical) do componente texto, a cor
(imagem) de fundo do layout foi definida pelo atributo
“android:background” que, para este caso, recebeu o valor “@
drawable/ic_launcher_background” e a cor do texto foi definida
pelo “atributo android:textColor”, como sendo branca.
Alterando a orientação do LinearLayout para horizontal,
teremos o seguinte resultado (Figura 46):
Introdução ao coding mobile 201
Fonte: Autor
Fonte: Autor
202 Introdução ao coding mobile
Fonte: Autor
É importante destacar aqui algumas linhas de código da
Figura 48:
Na linha 5 e 6 foram definidas o espaçamento dos
componentes, para que os mesmos não fiquem ‘grudados’ às
margens esquerda e direita da tela do dispositivo;
Nas linhas 11, 15 e 21 foram definidos os ‘textos’ que
aparecem na caixa de texto, a informar o que o usuário deve digitar.
Na linha 19 é definido que a terceira caixa de texto deve
ocupar maior espaço que os demais componentes da tela;
Na linha 26 é definido que o componente botão deve ficar
alinhado à direita.
Salve e execute este código. O resultado deve ser o
apresentado, como na Figura 49:
Figura 49 – Resultado do exemplo
Fonte: Autor
Introdução ao coding mobile 203
TableLayout
Este tipo de layout é utilizado para organizar os
componentes em linhas e colunas, simulando uma tabela. É
o tipo ideal de layout para construir formulários. Cada linha
da tabela é definida pela tag “TableRow” e, dentro dela, cada
componente incluído é considerado como uma coluna.
EXEMPLO
Crie uma nova Empty Activity em seu projeto.
Queremos, neste caso que a tela tenha o seguinte layout:
Figura 50 – Protótipo
de tela para o uso de
TableLayout
Fonte: app
Android (2018)
Note que as linhas 9 e 10 declaram as células da
primeira linha da tabela e as linhas 13 e 14 as células da
segunda linha da tabela.
O resultado do código acima pode ser visualizado na
Figura 52:
204 Introdução ao coding mobile
Atributo StretchColluns
Muitas vezes é necessário expandir as colunas para
forçar o preenchimento de toda a tela do dispositivo. Nestes
casos utiliza-se o atributo “StrechColluns”. Crie uma nova
“Empty Activity” em seu projeto e para o seu código xml
relativo ao layout, copie o código da Figura 53:
Figura 53 - Exemplo do uso
do atributo StretchColluns
no TableLayout
IMPORTANTE
Fonte: app
Android (2018)
Combinando Layouts
Quando necessário, pode-se combinar os tipos de
layouts na mesma tela. Verifique o exemplo, onde são
combinados “TableLayout” e “LinearLayout”, na Figura 59:
Como você deve ter percebido, dá pra fazer muito mais com
os app Android. Mas, por esta unidade é só. Não deixe de
verificar as referências bibliográficas para aprender mais. Isto
é só o começo e a aprendizagem não podem parar!!
Muito obrigado por ter acompanhado todo o processo até
aqui. Estamos à disposição. Sucesso pra você!
REFÊRENCIAS
ANDROID. Documentation Guide. Android Developers, 2018.
Disponivel em: <https://developer.android.com/guide/topics/
manifest/manifest-intro>. Acesso em: 15 Set. 2018.