Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade III Gerenciando app Android Introdução ao Coding Mobile Diretor Executivo DAVID LIRA STEPHEN BARROS Gerente Editorial CRISTIANE SILVEIRA CESAR DE OLIVEIRA Projeto Gráfico TIAGO DA ROCHA Autoria LUIZ FERNANDO CORCINI AUTORIA Luiz Fernando Corcini Olá. Meu nome é Luiz Fernando Corcini. Sou formado em Engenharia Eletrônica, com especialização em Administração de TI, Mestre em Educação e Novas Tecnologias e Doutorando em Sistemas Tutores Inteligentes. Tenho experiência técnico-profissional na área de desenvolvimento e gestão da produção de softwares nas áreas de Gerenciamento de Processos Empresariais. Uso os recursos disponibilizados pela Web há mais de 20 anos. Sou professor universitário há mais de 15 anos e já publiquei vários livros técnicos sobre assuntos voltados a área de informática. Sou apaixonado pelo que faço e adoro transmitir minha experiência de vida àqueles que estão iniciando em suas profissões. Por isso fui convidado pela Editora Telesapiens a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! ICONOGRÁFICOS Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez que: OBJETIVO: para o início do desenvolvimento de uma nova competência; DEFINIÇÃO: houver necessidade de apresentar um novo conceito; NOTA: quando necessárias observações ou complementações para o seu conhecimento; IMPORTANTE: as observações escritas tiveram que ser priorizadas para você; EXPLICANDO MELHOR: algo precisa ser melhor explicado ou detalhado; VOCÊ SABIA? curiosidades e indagações lúdicas sobre o tema em estudo, se forem necessárias; SAIBA MAIS: textos, referências bibliográficas e links para aprofundamento do seu conhecimento; REFLITA: se houver a necessidade de chamar a atenção sobre algo a ser refletido ou discutido; ACESSE: se for preciso acessar um ou mais sites para fazer download, assistir vídeos, ler textos, ouvir podcast; RESUMINDO: quando for preciso fazer um resumo acumulativo das últimas abordagens; ATIVIDADES: quando alguma atividade de autoaprendizagem for aplicada; TESTANDO: quando uma competência for concluída e questões forem explicadas; SUMÁRIO Ciclo de vida do aplicativo Android e a Classe Activity ............. 10 Introdução ............................................................................................................................................. 10 Gerenciando aplicativos .............................................................................................................. 11 Ciclo de vida do aplicativo Android ................................................................................... 12 A Classe Activity ............................................................................................................................... 15 Navegabilidade ............................................................................................23 Introdução .............................................................................................................................................23 Chamando a segunda Activity ...............................................................................................27 Intenção de chamada ...............................................................................................27 Evento de chamada ..................................................................................................28 Passagem de parâmetros entre telas ................................................ 31 Inserindo componentes na tela ........................................................... 37 Entendendo o Editor de Layout ........................................................................................... 38 TextView .................................................................................................................................................43 Pain Text .................................................................................................................................................47 Button ..................................................................................................................................................... 49 Radio button ....................................................................................................................................... 50 Check box e Combo box ...........................................................................................................53 7 UNIDADE 03 Introdução ao Coding Mobile 8 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ê! Introdução ao Coding Mobile 9 OBJETIVOS Olá. Seja muito bem-vindo(a) a nossa Gerenciando app Android, o objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: 1. Entender o ciclo de vida de um aplicativo desenvolvido para Android e à classe Activity; 2. Aplicar os recursos da linguagem Java, para proporcionar a navegabilidade de aplicativos para dispositivos móveis, baseados no Android; 3. Compreender como transmitir parâmetros entre as telas de um aplicativo desenvolvido na linguagem Java para dispositivos móveis Android; 4. Formatar telas de aplicativos para dispositivos móveis baseados no sistema operacional Android. Vamos, então, rumo ao conhecimento. Bons estudos! Introdução ao Coding Mobile 10 Ciclo de vida do aplicativo Android e a Classe Activity Agora que você já está com os ambientes de desenvolvimentos Java-Android instalados e configurados em seu computador (visto na Unidade 1) e já tem certa familiaridade com a linguagem Java (visto na Unidade 2), podemos na Unidade 3 chegar ao entendimento de como funcionam as apps Android. 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-mailpara 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. Introdução ao Coding Mobile 11 SAIBA MAIS: Uma nova aplicação pode precisar capturar uma foto utilizando o dispositivo de câmera. Esta nova aplicação pode utilizar um aplicativo existente para realizar essa tarefa e capturar o resultado sem ter que implementá-la, isto é, utilizando os recursos de uma aplicação já existente. Para tanto, a nova aplicação precisa apenas ser capaz de iniciar a atividade de captura de foto da outra aplicação, sem a necessidade de incorporá-la ou de estar ligada a ela de alguma forma. Deste modo, quando a atividade de captura de foto for finalizada, a foto é retornada para a nova aplicação e pode ser tratada e utilizada como o programador determinar. Um detalhe importante a se considerar é que, pelo fato de cada aplicação rodar em processos separados, com restrição de acesso, uma aplicação não pode iniciar diretamente outra. Para fazer isto, ela manda uma mensagem para o sistema Android indicando a intenção de iniciar a outra atividade e este sim pode decidir se atende ou não a essa intenção. Cada mensagem de intenção passada para o sistema Android é chamada de “intent” e será tratada em detalhes mais adiante, neste material, bem como os processos de ativação de componentes. 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 topo da pilha. O aplicativo com status pause ou stop pode, a qualquer momento, ser descartado (encerrado) pelo sistema operacional Introdução ao Coding Mobile 12 para liberar mais memória, em casos em que a utilização desse recurso atinja um limite crítico. Cada aplicativo tem seu ciclo de vida bem definido e pode ter vários estados (status) desde o início de sua execução até ser descartado pelo usuário ou pelo próprio sistema operacional. O tópico a seguir apresenta como funciona o ciclo de vida de uma aplicação. Ciclo de vida do aplicativo Android Para os dispositivos móveis que utilizam a plataforma Android, o ciclo de vida dos aplicativos deve seguir as seguintes etapas: Quando o usuário clica sobre o ícone da aplicação, ela é criada e passa a utilizar recursos do sistema operacional do dispositivo. O termo “criar” (create), neste contexto, não tem o sentido de “implementar” ou “desenvolver”, mas sim de “instanciar”, isto é, ser executado e passar a ocupar um espaço de memória e utilizar recursos do sistema. • Quando um aplicativo é executado, ele chama o método onCreate, que é obrigatório e é executado uma única vez durante o ciclo de vida da aplicação. • Esse método define o que deve ser feito, qual a interface utilizada e quais os componentes dessa interface. Para entrar em operação e poder ser utilizado, o aplicativo, depois de criado, precisa ser iniciado. Quando isto acontece, o método onStart é chamado. Ele não é obrigatório, mas pode-se utilizá-lo para capturar o evento de inicialização da aplicação. O aplicativo deve, então, ser colocado no topo da pilha de aplicativos, para poder ser visualizado e controlado pelo usuário. Esse evento pode ser capturado pelo método onResume. Caso outro aplicativo seja iniciado, o aplicativo anterior é parado temporariamente (paused) e vai para o segundo lugar da pilha de aplicativos. Este evento é capturado pelo método onPause, que pode ser implementado para salvar o estado (atributos) do aplicativo, antes que ele passe para a situação de parado temporariamente. Esse é um método Introdução ao Coding Mobile 13 muito útil, pois, caso a aplicação volte ao topo da pilha, é necessário saber qual era a sua situação e quais eram seus dados antes de ser temporariamente parado. • Para voltar a utilizar o aplicativo que está parado temporariamente, este deve voltar ao topo da pilha. Mas isso só acontece se o outro aplicativo que tomou seu lugar no topo da pilha for descartado ou parado temporariamente. Quando isso acontece, o método onResume entra em ação novamente. O aplicativo que está parado temporariamente (paused) pode ser parado definitivamente (stop). O método que captura este evento é o onStop. • Uma vez parado, o usuário só conseguirá utilizar novamente o aplicativo se reiniciá-lo. Se isso acontecer, o método onRestart será chamado, capturando assim o evento e passando o controle para o método onStart. O aplicativo pode, depois de parado, ser retirado da pilha, isto é, ser descartado. Quando isso acontece, o método onDestroy é chamado e o ciclo de vida da aplicação termina. • Para ter acesso a esse aplicativo depois dele ter sido retirado da pilha, o usuário deve recriá-lo, fazendo com que outro ciclo de vida tenha início. O diagrama de transição de estado, abaixo, representa este ciclo: Figura 1 – Ciclo de Vida dos Aplicativos Android CRIADO DESTRUÍDO INICIADO EM EXECUÇÃO PARADO TEMPORARIAMENTE PARADO DEFINITIVAMENTE 1 2 3 4 6 9 8 10 5 Fonte: Autor Introdução ao Coding Mobile 14 Para o entendimento da figura acima, segue a legenda: 1. método onCreate – chamado quando o usuário clica sobre o ícone da aplicação; 2. método onStart – chamado quando a aplicação se torna visível para o usuário; 3. método onResume – chamado quando a aplicação está no topo da pilha; 4. método onPause – chamado quando a aplicação sai do topo da pilha e fica parada temporariamente, por causa da execução de outra aplicação; 5. método onResume – chamado quando a aplicação que foi parada temporariamente volta a ser requisitada; 6. método onStop – chamado quando a aplicação está sendo encerrada; 7. método onRestart – chamado quando a aplicação precisa ser iniciada outra vez; 8. método onDestroy – chamado para encerrar a execução da aplicação; 9. método onDestroy – neste caso, a aplicação está sendo encerrada não pelo usuário, mas sim pelo SO para liberar memória; 10. aplicação descartada. Todos esses métodos listados acima fazem parte da classe activity, que é utilizada pelo sistema operacional Android para ajudar a gerenciar esse ciclo de vida dos aplicativos. O tópico a seguir apresenta mais detalhes sobre esta classe. Introdução ao Coding Mobile 15 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, o que normalmente acontece, ou pode flutuar sobre outras telas. Com base no exposto nos itens anteriores, sobre os métodos do ciclo de vida de um app Android, a Classe Activity pode ser representada, segundo o padrão UML, da seguinte maneira: Figura 2 – Representação gráfica da Classe Activity CLASSE Activity ... onCreate() onStart()onResume() onPause() onRestart() onStop() onDestroy() ... Fonte: Autor Fonte: adaptado pelo autor, no app do android. 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: Introdução ao Coding Mobile 16 Figura 3 – Criando um novo projeto Android Fonte: app Android (2018) Defina o nome da aplicação como App1_U3, a dizer que esta é nossa primeira aplicação criada na Unidade 3 desta disciplina, conforme mostrado na figura abaixo: Figura 4 – Definindo o nome da aplicação Fonte: app Android (2018) Introdução ao Coding Mobile 17 Deixe os demais campos como estão e clique em “Next”. A tela a seguir deve ser apresentada: Figura 5 – Definindo o dispositivo Android para o projeto Fonte: app Android (2018) Marque a opção “Phone and Tablet” e selecione a “API15”, como mostrado na figura acima e clique em “Next”. 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: Introdução ao Coding Mobile 18 Figura 6 – Adicionando a Activity para o projeto Fonte: app Android (2018) Selecione a “Empty Actvity” e clique em “Next”. A tela a seguir deve ser apresentada; Figura 7 Configurando a Activity Fonte: app Android (2018) Introdução ao Coding Mobile 19 Deixe os nomes como estão e clique em “Finish”. O projeto será carregado. O Código da classe Activity do projeto deve ser como mostrado na figura abaixo: Figura 8 – Classe Activity do projeto Fonte: app Android (2018) Com os conhecimentos que você adquiriu na Unidade 2 sobre linguagem Java, você pode entender o código acima, senão vejamos: • A linha 1 define o pacote onde se encontra a classe Activity que estamos a visualizar; • A linha 6 declara a classe MainActivity (Atividade principal) que irá gerenciar a tela principal do nosso aplicativo, pois, conforme vimos anteriormente, neste material, cada tela é gerenciada por uma classe Activity. Importante também verificar que a classe MainActivity herda (extends) características e comportamentos da classe AppCompatActivity. • Na linha 8 existe uma expressão a informar que o método abaixo é uma sobrescrita. Usa-se @Override toda vez que você substituir um método. Seu uso, conforme Singh (2017), fornece dois benefício: (1) Para ter certeza que você realmente está a substituir o método que deseja, pois, caso você cometa um erro comum ao digitar incorretamente um nome de método ou não corresponder corretamente aos parâmetros, você será avisado de que o método não substitui como você pensa. (2) Torna o seu código mais fácil de entender, porque é mais óbvio quando os métodos são sobrescritos. Introdução ao Coding Mobile 20 • A linha 9 mostra o método onCreate sendo declarado. Este é o método que copia o método da classe mãe AppCompatActivity. • Na linha 10 ocorre a chamada ao método onCreate da classe mãe; • Na linha 11 é definido o layout para a activity que está a ser criada. Verificando o conteúdo da classe MainActivity, descrita acima, pode-se perceber que apenas o método onCreate está sendo utilizado, pois ele é o único obrigatório. Como vimos acima, existem outros seis métodos que completam o ciclo de vida de uma aplicação, que podem ser utilizados para permitir ao programador maior controle sobre a aplicação que está desenvolvendo. Se você executar a aplicação, o resultado deve ser o mostrado na figura abaixo: Figura 9 – AVD da execução do projeto Fonte: app Android (2018) Introdução ao Coding Mobile 21 Exemplo a seguir apresenta o código que deve ser implementado no seu projeto (na classe MainActivity) para dar uma noção do funcionamento da atividade quando a mesma possui todos os métodos para o controle do ciclo de vida da aplicação. Implemente o seguinte código na sua classe MainActivity: Figura 10 – Exemplo dos métodos de gerenciamento de aplicações de app Android Fonte: app Android (2018) O código acima não tem função prática alguma, a não ser permitir que você entenda o funcionamento do gerenciamento do ciclo de vida de aplicativos Android. Salve e execute a aplicação. Para verificar o resultado, abra a janela chamada “Run”, como mostrado na figura abaixo e verifique os itens destacados em vermelho. Introdução ao Coding Mobile 22 Figura 11 – Resultado da execução do código do exemplo. Fonte: app Android (2018) O AVD deve estar como mostra a figura abaixo: Figura 12 – AVD do exemplo Fonte: app Android (2018) Para verificar o resultado da execução dos métodos, clique em um dos botões destacados em vermelho (na figura acima). IMPORTANTE: Compare o resultado apresentado na janela “Run” com o diagrama de transição de estado (figura 1). Introdução ao Coding Mobile 23 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: • Uso do método startActivity Figura 13 – A Activity1 não precisa de retorno da Activity2, depois que a última for fechada e o foco retornar para a primeira. Fonte: app Android (2018) Introdução ao Coding Mobile 24 • Uso do método startActivityForResult: Figura 14 – A Activity1 precisa de retorno da Activity2, depois que a última for fechada e o foco retornar para a primeira. Fonte: app Android (2018) Para entender melhor algumas características necessárias para a correta navegabilidade entre telas de um aplicativo Android, verifique o exemplo a seguir: Crie um novo projeto Android, chamado App2_U3 nos mesmos moldes que o App1_U3. Para fazer isso você pode fechar o projeto App1_ U3, que está aberto ou, selecionar a opção do menu File->New -> New Project..., como mostra a figura abaixo: Figura 15 – Criando o projeto App2_U3 Fonte: app Android (2018) Note que este novo projeto, a exemplo do anterior, possui apenas uma activity (tela), chamada de MainActivity ou tela principal. ....... Crie mais duas telas (Empty Activity) dentro do novo projeto (pacote App2_U3) com as seguintes características: • Primeira tela: Nome da Atividade: Tela2; • Segunda Tela:Nome da Atividade: Tela3. Para fazer isso, clique com o botão direito do mouse sobre a app e selecione new->Activity->Empty Activity, conforme mostra a figura abaixo: Introdução ao Coding Mobile 25 Figura 16 – Inserindo nova activity no projeto Fonte: app Android (2018) O seu projeto deve ficar como mostraa figura abaixo: Figura 17 – Projeto com três activity ou telas Fonte: app Android (2018) Salve, execute o projeto e verifique se apenas a atividade principal fica visível e as duas outras atividades (tela2 e tela3) não estão acessíveis. Para verificar o por que disso acontecer, precisamos analisar o arquivo AndroidManifest.xml, que deve estar como o código mostrado a seguir: Introdução ao Coding Mobile 26 Figura 18 – Arquivo AndroidManifest.xml do projeto App2_U3. Fonte: app Android (2018) Repare que apenas a atividade principal (MainActivity), na linha 12, possui o <intent-filter>. Este fragmento de código tem dois atributos: (1) ação (action), cuja função é definir se a atividade pode ser uma atividade principal do aplicativo. (2) categoria (category), que define se o usuário pode iniciar a atividade diretamente, do menu de aplicativos. NOTA: Para ter acesso ao menu de aplicativos basta clicar sobre a região marcada em vermelho, na figura abaixo, e arrastar para cima. Os aplicativos implementados até o momento estão destacados em azul. Introdução ao Coding Mobile 27 Figura 19 – Abrir o menu de aplicativos Fonte: app Android (2018) Chamando a segunda Activity Intenção de chamada Para chamar a segunda tela (atividade) da aplicação, é necessário utilizar o objeto Intent. Esse objeto será descrito em detalhes no próximo módulo, portanto aqui será feita apenas uma breve introdução de sua sintaxe, para permitir o correto funcionamento da aplicação em questão. Para declarar uma chamada à outra atividade do mesmo aplicativo, usa-se o seguinte fragmento de código: Intent a = new Intent(this, Tela2.class); startActivity(a); Nesse fragmento, pode-se verificar, na primeira linha, a declaração de um objeto Intent “a”, que define uma intenção de iniciar uma nova atividade, chamada Tela2.class. e, na segunda linha, a utilização do comando startActivity indicando como parâmetro a intenção de chamada. Como foi visto no princípio deste tópico, o comando startActivity inicia uma atividade e não espera retorno algum dela. Introdução ao Coding Mobile 28 Evento de chamada Normalmente, a chamada a outra atividade ocorre como consequência de um evento realizado pelo usuário, como clicar em um botão ou qualquer outra interação do usuário com o layout, definida pelo programador. Desta forma, a simples implementação do código mostrado no item acima (Intent) não vai iniciar nenhuma nova atividade, pois não foi definido o evento que dispara esta ação. Apesar de o assunto layout ser tratado mais adiante neste material, segue abaixo o fragmento de código que mostra como inserir um botão e permitir que ele “escute” e reaja, executando a chamada desejada: Button b = new Button(this); b.setText = “ok”; As duas linhas de código acima declaram um objeto do tipo Button (botão) e definem “ok” como sendo o texto que deve aparecer no botão. Porém, a aplicação precisa saber que este botão deve ser “ouvido” quando for clicado, para executar alguma nova tarefa. Desta forma, insere-se a seguinte linha de código ao fragmento acima: b.setOnClickListener(this); Com essa linha adicionada ao código, quando o botão for clicado, o método onClick será chamado e dentro dele pode-se declarar a intenção (Intent) de chamar a nova tela. Toda vez que se permite que um botão reaja a um clique, deve-se implementar o método onClick para definir o que ele deve fazer quando for clicado. Desta forma, dentro da própria atividade, deve-se criar um método onClick, da seguinte forma: public void onClick(View v) { Intent i = new Intent(this, Tela2.class); startActivity(i); } Introdução ao Coding Mobile 29 Modificando o código do exemplo anterior (App2_U3) para incluir um botão na atividade principal (MainActivity) que chame a atividade 2 (tela2), conforme explicado acima. O botão deve ter como rótulo o texto: “Clique Aqui”. Neste exemplo modificaremos também o código da segunda atividade (Tela2) para que apresente a seguinte mensagem na caixa de texto: “Esta é a segunda tela da aplicação”. O código completo da atividade da Tela Principal do aplicativo deve ficar da seguinte maneira: Figura 20 - Código para o exemplo acima Fonte: app Android (2018) Veja que foi necessário inserir várias linhas e modificar algumas outras. Não se preocupe em entender tudo isso agora. Este exemplo foi apenas para você entender as bases da funcionalidade de apps Android. Perceba também que na linha 21, da figura acima, o método startActivity é utilizado para chamar a atividade 2 (tela2) da aplicação. Ela foi utilizada por que a tela principal não precisa, neste caso, de retorno. Se você salvar e executar, o AVD deve ser parecer com o mostrado na figura abaixo: Introdução ao Coding Mobile 30 Figura 21 – Resultado do exemplo acima Fonte: app Android (2018) Note que, ao abrir, a tela principal mostra o botão que preenche todo o espaço definido no layout. Clicando sobre o botão, a segunda tela é apresentada (toda em branco). Conforme já estudamos, logo que a segunda tela é aberta, primeira tela é parada temporariamente (pause) e fica em segundo plano. Neste momento, ambas as telas ocupam espaço na memória e recursos do dispositivo. Pressionando a tecla voltar, destacada com um quadrado vermelho, na figura acima, e a segunda tela é parada temporariamente (pause), parada definitivamente (stop) e, por fim, destruída (destroy), e a primeira tela volta para o primeiro plano (resume). Neste momento, apenas a tela principal ocupa espaço na memória e nos recursos do dispositivo. Pressionando mais uma vez a mesma tecla “Voltar”, a primeira tela é parada temporariamente (pause), parada definitivamente (stop) e, por fim, destruída (destroy), liberando toda a memória utilizada para a aplicação. Você pode estar a pensar: “Um botão que ocupa todo o espaço da tela não adianta muita coisa. Seria interessante colocar mais componentes numa mesma tela!” - Perfeito! Você tem toda a razão! Logo aprenderemos como fazer isso! Um passo de cada vez! No próximo tópico veremos como fazer uma tela “conversar” com a outra por meio de parâmetros e logo em breve, veremos como manipular layouts. Sigamos em frente! Introdução ao Coding Mobile 31 Passagem de parâmetros entre telas A passagem de parâmetros estudada neste tópico não cria vínculo entre as telas. O foco é passar um ou mais parâmetros para a próxima tela e não o retorno de parâmetros, por isso o método utilizado ainda será o startActivity, não o startActivityForResult. Para passar parâmetros entre telas, é necessário utilizar o objeto Bundle (android.os.Bundle). A palavra bundle pode ser traduzida como “pacote” ou “embrulho”, e essa é exatamente a sua função, isto é, servir um embrulho ou pacote que contém os dados que precisam ser passados de uma atividade para outra. Para definir um objeto do tipo Bundle, utiliza-se a seguinte sintaxe: Bundle <nome do pacote> = new Bundle; Um exemplo seria: Bundle pacote_de_dados = new Bundle; Porém, é necessário definir o conteúdo desse “pacote de dados” e, para tanto, precisa-se utilizar o comando putString, da seguinte forma: pacote_de_dados.putString(“msg”, “Olá”); Na linha de código anterior, um dado do tipo string chamado “msg” e de conteúdo “Olá” está sendo adicionado ao “pacote de dados”. Podem ser adicionados vários dados a um mesmo “pacote de dados”. Porém, uma vez que o seu conteúdo esteja definido, é necessário incorporá-lo em uma intenção de chamada, pois ele de nada vale se não for passado adiante. Dessa forma, utiliza-se o método putExtras para incorporar o “pacote de dados” a uma Intent, da seguinte forma: i.putExtras(pacote_de_dados); startActivity(i); Introdução ao Coding Mobile 32 O código completo fica assim: … { //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 enviadopara a tela a ser chamada Bundle pacote_de_dados = new Bundle(); //determina que o conteúdo do pacote de dados é um dados cha- mado “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. 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) Introdução ao Coding Mobile 33 A primeira coisa a fazer é alterar o código acima para que o mesmo fique idêntico ao apresentado na figura 20. Pode-se destacar que, na figura 22, foram destacados em vermelho os “imports” de bibliotecas e o método onCreate, para que você perceba claramente as alterações necessárias. A figura abaixo mostra o código da figura 22 com as alterações necessárias para ficar igual ao código da figura 20. Atenção para as modificações destacadas em vermelho. Figura 23 - App3_U3 – Código da classe Principal.java Fonte: app Android (2018) Muito bem. O próximo passo é inserir as modificações referentes à passagem de parâmetros entre telas. O nosso código fica assim: Figura 24 - App3_U3 – Código da classe Principal.java Fonte: app Android (2018) Introdução ao Coding Mobile 34 Em vermelho estão destacadas as linhas que foram alteradas ou incluídas. Explicando o código: Ao ser iniciado, o aplicativo deve executar a função onCreate, na linha 14, como já foi explicado no ciclo de vida das Apps Android. Dentro deste método onCreate um botão “b” é criado e para ele é definido o texto “Clique Aqui” (linha 15). Na linha 16 é definido que este botão deve “escutar” uma ação de click, isto é, a partir da execução desta linha de código, o botão “b” deve reagir, a chamar o método onClick, quando for clicado. Em sendo chamado, o método onclick executa as seguintes atividades: (repetimos o código para que você perceba e visualize todas as etapas). //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 dado cha- mado “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); Você deve ter percebido que, depois de toda esta explicação, ainda não existe a tela2, necessária para o correto funcionamento do código acima. Então, não seja por isso! Vamos inserir uma nova tela (activity) chamada de tela 2. Ela deve ter o seguinte código: Introdução ao Coding Mobile 35 Figura 25 - App3_U3 – Código da classe Tela2.java Fonte: app Android (2018) Explicando o Código da figura 25: Ao ser criada, a tela2 deve executar o código que está definido dentro do método onCreate, como você já sabe. Na linha 13 deste código é definido uma caixa de texto (TextView), de nome txt. Na linha 14 é definida uma variável, de nome “msg_recebida” e à ela é atribuído o conteúdo vazio. Na linha 15 é definido um objeto Intent que, neste caso, serve para capturar a intenção de chamada realizada pela tela principal. Na linha 16 faz-se a verificação se a intenção de chamada capturada não está vazia (nula). Caso não seja nula, é executada a linha 18, que captura um suposto pacote, enviado pela tela principal, nesta intenção de chamada. Perceba que o pacote pode estar vazio, isto é, a intenção de chamada pode existir, mas não necessita de possuir parâmetros. Esta verificação é feita na linha 19 e, caso exista algum pacote de dados embutido nesta intenção de chamada, o mesmo é capturado na linha 21. Introdução ao Coding Mobile 36 Por fim, a linha 24 define o conteúdo para a caixa de texto “txt” definida no início do código e, na linha 25, o layout, composto por esta caixa de texto, é apresentado na tela do dispositivo. Salve e execute o código. O resultado é apresentado na figura abaixo: Figura 26 – Resultado do exemplo – Passagem de parâmetros entre telas Fonte: app Android (2018) Que tal? Espero que esteja a perceber como tudo (conceitos e códigos) estudados nas unidades 1 e 2 desta disciplina estão a ser aplicados nesta unidade. Vamos em frente! Introdução ao Coding Mobile 37 Inserindo componentes na tela O Android Studio permite trabalhar com uma grande variedade de componentes. Neste material apresentaremos os mais comuns. Conforme visto anteriormente, a estrutura dos projetos Android separa o layout (interface com o usuário) do código responsável pela ação, reação e regras de negócio tratadas pela tela, sendo o primeiro definido em um arquivo xml e o último em uma classe Activity (em linguagem Java). Para melhor entendimento deste módulo, vamos criar um novo projeto no Android Studio. Isso você já sabe fazer, mas, para sedimentar o conhecimento, vamos apresentar todos os passos em detalhes, como mostrado a seguir: 1. Abra Android Studio e crie uma nova Aplicação Android; 2. Defina o nome da App como “App4_U3”; 3. Selecione o dispositivo Phone and Tablet e a API15: Android 4.0.3 IceCreamSandwich; 4. Escolha uma “Empty Activity”, exatamente como foi feito nos exemplos anteriores e dê o nome de Principal. 5. Depois do projeto estar carregado, clique em executar (Run), selecione o AVD para exibir a app e o resultado deve ser como mostrado na figura abaixo: Figura 27 – AVD do exemplo. Fonte: app Android (2018) Introdução ao Coding Mobile 38 Até aqui, imagino que você já saiba fazer. Vamos, então, aprofundar nosso conhecimento. Entendendo o Editor de Layout Neste ponto é necessário explicar como funciona o editor de layout disponibilizado pelo Android Studio, bem como verificar como cada alteração de layout numa Activity (tela da app) impacta no código xml correspondente. Sendo assim, selecione o arquivo xml referente ao layout da nossa aplicação, clicando em app -> res -> layout, e selecionando o arquivo activity_principal.xml, como mostrado na figura abaixo: Figura 28 – Selecionando o arquivo xml de layout da tela do dispositivo. Fonte: app Android (2018) Ao selecionar o arquivo de layout, conforme mostrado na figura acima, o Android Studio apresenta o Editor de Layout. Este editor permite que você crie o layout desejado cada uma das telas de sua aplicação, clicando e arrastando elementos para um “preview” de tela do AVD escolhido. O Editor de Layout deve do nosso app é mostrado na figura abaixo. Introdução ao Coding Mobile 39 Figura 29 – Editor de Layout do app Fonte: app Android (2018) Na parte superior, da figura acima, está destacado em vermelho o AVD, a API e o tema que estaremos a utilizar neste projeto. É bem possível que o tema do seu projeto ainda não esteja definido como na figura 29, por isso, clique sobre o tema e selecione para ficar igual ao apresentado na referida figura, pois assim, os resultados apresentados neste material serão os mesmos que você obterá no seu computador. Ao clicar no tema, uma tela de seleção será apresentada e, então, selecione o tema “Light”, como mostrado na figura abaixo. Figura 30 – Seleção de tema para a app Fonte: app Android (2018) Introdução ao Coding Mobile 40 No canto inferior esquerdo da figura 29, há duas abas em destaque. A primeira (Design), que está a ser exibida na referida figura, mostra o editorde layout, enquanto a segunda (Text), mostra o arquivo xml correspondente ao layout. Ao clicar na aba “Text”, você terá uma visão do arquivo xml, conforme mostrado na figura abaixo. Figura 31 – Arquivo xml correspondente ao layout da tela do app Fonte: app Android (2018) Como foi comentado anteriormente neste material, cada tela (activity) possui um arquivo xml de layout. Note que o elemento “TextView”, que visualizamos na figura 29, com o conteúdo “Hello World”, aparece no arquivo xml (da linha 9 até a linha 16) e que o conteúdo do mesmo está definido na linha 12. Experimente trocar o conteúdo deste elemento para “Tela Principal”, da seguinte maneira: Android:text = “Tela Principal” Depois de alterado, clique na aba Design e veja o que acontece. O resultado deve ser como mostrado na figura abaixo: Figura 32 – Apresentação do layout do app Fonte: app Android (2018) Introdução ao Coding Mobile 41 Perceba também que o conteúdo do atributo “text”, destacado em vermelho, do lado direito da figura acima também foi alterado. Agora faça outro teste: Altere o conteúdo da caixa de texto (destacada em vermelho) para “Tela Principal da App” e pressione a tecla ENTER. Este ato terá duas consequências: (1) o conteúdo do elemento “TextView”, destacado em vermelho, no lado esquerdo da figura 32, que está posicionado no meio da tela do AVD será alterado e, clicando na aba “Text” você perceberá que o arquivo xml também foi alterado na linha 12, conforme mostrado na figura abaixo: Figura 33 – Elemento TextView Fonte: app Android (2018) A conclusão é óbvia, mas precisa ser destacada aqui: Qualquer alteração no arquivo xml causa alterações no layout do app ou em algum atributo de um dos componentes da tela do app. E qualquer alteração no layout do app ou em qualquer atributo dos elementos que compõem a tela do app causa alterações no arquivo xml. Você deve ter percebido que o Editor de Layout do Android Studio pode fazer muito mais do que apresentamos até agora. Não se preocupe. Vamos passo a passo, aprofundando-nos no decorrer desta Unidade e da próxima. Uma vez que você já percebeu um pouco do Editor de Layout e sua relação com o arquivo xml, vamos em frente para entender como inserir componentes na tela do app. Primeiro, precisamos mudar o layout da tela. Se olharmos com atenção na figura 31 – linha 2 – perceberemos que o layout definido até o momento para o nosso app é o ConstraintLayout. Vamos mudar esta especificação para um tipo de layout mais simples e de mais fácil entendimento neste momento: LinearLayout. Para isso, clique na aba “Design” e verifique a janela chamada “Componente Tree” ou, em português: Árvore de Componentes”. Ela deve mostrar todos os componentes ou Introdução ao Coding Mobile 42 elementos que estão presentes na tela da sua app até o momento e deve estar como mostrado na figura abaixo. Figura 34 – Árvore de componentes do app Fonte: app Android (2018) Clique com o botão direito do mouse sobre o referido layout e selecione o item “Convert View...” e uma tela com os layouts disponíveis será apresentada. Nesta nova tela, selecione o “LinearLayout” e clique no botão “Apply”, como mostrado na figura a seguir: Figura 35 – Alterando o Layout da tela da app Fonte: app Android (2018) A janela que apresenta a “Árvore de Componentes” deve ser alterada para informar que o layout para a app passou a ser definido como LinearLayout (horizontal). Porém, queremos que a orientação dos componentes seja vertical, por isso, clique uma vez, com o botão esquerdo do mouse sobre o referido layout e altere o atributo orientação, como destacado em vermelho na figura abaixo: Figura 36 – Alterando a orientação do layout para “vertical” Fonte: app Android (2018) Introdução ao Coding Mobile 43 Se você clicar na aba “Text”, verá seguinte código xml: Figura 37 – Arquivo xml da tela da app depois de ter o layout definido para LinearLayout Fonte: app Android (2018) IMPORTANTE: Os tipos de layout e suas características serão vistos mais adiante neste material, então, por agora, estamos apenas a introduzir o assunto. Perceba a diferença deste arquivo (figura 37) para o arquivo xml da figura 31. Agora que o layout da tela está devidamente configurado, precisamos aprender a inserir componentes na nossa app. TextView O componente TextView é um rótulo ou uma etiqueta (label) onde podemos escrever um texto que pode ser lido, mas não pode ser alterado pelo usuário do app. Neste subtópico iremos, primeiramente, deletar o componente Textview que já existe (apenas para praticar) e adicionar um novo. Para deletar o componente TextView (ou qualquer outro que você deseje): (1) clique na aba “Design” para visualizar o Editor de Layout do Introdução ao Coding Mobile 44 AVD; (2) clique sobre o componente TextView, cujo texto é “Tela principal da App” e pressione a tecla “delete” em seu teclado. Para inserir o novo componente TextView: Selecione, na janela “Palette” (que fica acima da janela “Component Tree”) o componente Text -> TextView, conforme destacado em vermelho na figura abaixo: Figura 38 – Janela Palette Fonte: app Android (2018) Clique e arraste o componente para a tela do AVD. Note que, ao soltar o componente sobre a tela do AVD, ele se adequa ao tamanho da tela e fica posicionado na parte superior da mesma, como mostra a figura abaixo: Figura 39 – TextView inserido na tela do AVD Fonte: app Android (2018) Repare que, se você clicar sobre o componente TextView Inserido, aparecerá, do lado direito da tela, destacado com retângulo vermelho uma janela com as propriedades (atributos) deste componente. Introdução ao Coding Mobile 45 Podemos identificar claramente que o componente possui um identificador único, chamado ID, cujo valor é TextView2. Possui também duas propriedades parecidas, chamadas de layout_width e layout_height, as quais definem as propriedades de largura e altura do componente, respectivamente. Para cada uma destas duas propriedades, podemos ter 3 valores diferentes, a saber: (1) match_parent: que define que o objeto deve ter a mesma largura (width) e/ou altura (height) do componente no qual ele está contido. Para este caso em específico, sabemos que o componente TextView está contido no componente LinearLayout. Podemos provar isso ao analisar a janela “Component Tree” que destaca claramente esta característica. (2) outro valor possível é wrap_content. Se este valor for escolhido para esta propriedade, a largura (width) e/ ou altura (height) do componente TextView será ajustado ao tamanho do texto que ele possui. Importante destacar que se o componente não tiver valor para a propriedade texto, isto é, se a propriedade “text” estiver vazia, o componente ficará invisível. (3) podemos clicar nos três pontos “...” que estão à direita da ca caixa de combinação e selecionar um dos itens apresentados numa tela especial. Logo depois destas propriedades, existe uma propriedade chamada “text” que define o texto que o componente TextView irá apresentar na tela do AVD. Defina para esta propriedade o seguinte valor: “Bem vindo ao meu app. Digite seu nome e clique em OK para entrar.” e pressione ENTER. O texto que você acabou de digitar aparecerá em uma única linha no AVD, mas você pode clicar sobre o componente e alterar a largura ou altura do mesmo, para ficar parecido com a figura abaixo: Figura 40 – Componente TextView no Editor de Layout Fonte: app Android (2018) Introdução ao Coding Mobile 46 Salve e execute o aplicativo. O resultado deve ser como mostrado na figura abaixo: Figura 41 – Componente TextView com o aplicativo em execução Fonte: app Android (2018) Note que você pode alterar outras propriedades do componente TextView, tais como tipo, cor e tamanho da fonte, entre outras, como mostra a figura abaixo: Figura 42 – Propriedades do componente TextView Fonte: app Android (2018) Introduçãoao Coding Mobile 47 Muito bem. A frase que aparece no componente TextView nos dá uma deixa para aprendermos inserir dois novos componentes: o Plain Text e o Button. Então vamos lá! Pain Text O Plain Text é uma caixa de texto que permita ao usuário digitar algo. Ele tem os mesmos atributos que o componente TextView e mais um, chamado de Input Type, que define o tipo de dado que este componente vai receber. Podemos definir o conteúdo da propriedade “text” como vazio, afinal, o usuário vai digitar o seu nome ali. Para incluir este componente, siga o mesmo método que usou para inserir o componente TextView. Salve e execute o app. A tela do AVD deve ficar assim: Figura 43 – AVD com TextView e Plain Text Fonte: app Android (2018) Note que: (1) o atributo android:text (no arquivo xml correspondente) foi definido como “” (vazio). Isso faz sentido, pois o objetivo desse componente é receber um texto e não o apresentar. Mas você pode alterar esta propriedade para dar uma dica ao usuário, caso você queira. (2) Este componente, chamado android:inputtype, responsável por definir Introdução ao Coding Mobile 48 o tipo de dado que o componente irá receber. Pode conter valores como text, date, time, datetime, numberDecimal, number e textPassword, entre outros. (3) Você também pode alterar outras propriedades, conforme mostrado na figura abaixo: Figura 44 – Propriedades do componente PlainText Fonte: app Android (2018) Introdução ao Coding Mobile 49 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 Fonte: app Android (2018) Insira o botão na tela, altere seu tamanho e troque o valor de sua propriedade “text” de “Button” para “OK”. Ao salvar e executar, o app deve ficar mais ou menos assim: Figura 46 – AVD com TextView, Plain Text e Button Fonte: app Android (2018) Antes de passarmos para o próximo componente, clique na aba “Text” e verifique o arquivo xml correspondente a esta activity que acabamos de fazer. Ela deve estar parecida com a figura abaixo: Introdução ao Coding Mobile 50 Figura 47 – Arquivo xml correspondente ao AVD da figura 44 Fonte: app Android (2018) Repare como cada componente está descrito no código xml: o layout e cada um dos componentes. Radio button Existem muitas opções de componentes, como você pode reparar na janela Palette, apresentada na figura abaixo: Figura 48 – Janela Palette Fonte: app Android (2018) Introdução ao Coding Mobile 51 Mas, antes de inserir mais componentes, como o Radio Button, vamos criar outra Activity (tela) para a nossa app. Esta Activity deve ser chamada de “Tela2” e deve ser uma Empty Activity. Depois de criada a nova Activity, não esqueça de mudar o layout para LinearLayout (vertical), assim como fizemos com a Activity Principal. Isto posto e realizado, podemos inserir o radio button. Para tanto, selecione o item Buttons e perceba que existem dois componentes que inicial com o nome Radio: RadioGroup e RadioButton. Primeiro selecione o RadioGroup e arraste para a tela do AVD. Depois selecione 3 componentes RadioButton e arraste para o interior do RadioGroup que você acabou de inserir. Seu projeto deve ficar como mostrado na figura abaixo: Figura 49 – Inserindo Radio Buttons na Activity Fonte: app Android (2018) Para melhorar o layout desta activity, selecione o componente RadioGroup, defina ambos os valores das propriedades layout_width e layout_height para para “wrap_content”. Sua tela deve ficar assim: Introdução ao Coding Mobile 52 Figura 50 – Melhorando o layout da figura 46 Fonte: app Android (2018) Repare que todos os componentes RadioButtons tem o mesmo valor para a propriedade “text”. Clique no primeiro e defina esta propriedade para “Aluno”, defina para o segundo o valor “Professor” e para o terceiro o valor “Outro”. Sua tela deve ficar assim: Figura 51 – Projetando a Activity 2 da app. Fonte: app Android (2018) Vamos inserir agora um TextView com o seguinte texto: “Qual é sua posição nesta instituição?” Podemos imaginar que este app seja direcionado para uma determinada instituição de ensino. Clique e arraste o componente TextView de maneira que ele fique acima do RadioGroup. A tela deve ficar assim: Introdução ao Coding Mobile 53 Figura 52 – Projetando a Activity 2 da app. Fonte: app Android (2018) Não esqueça que você pode alterar outras propriedades, tais como espaçamento, cor, tipo e tamanho de fonte, entre outras, em todos os componentes. Check box e Combo box Para inserir estes componentes, use os mesmos recursos aprendidos até o momento. Sua tela deve ficar como mostrado na figura abaixo Figura 53 – Projetando a Activity 2 da app. Fonte: app Android (2018) Introdução ao Coding Mobile 54 Bom, você já deve ter percebido a quantidade de componentes que pode utilizar para montar uma app. Então, use sua imaginação, monte um aplicativo ao seu estilo! Alterando as propriedades de cada componente você pode criar um app mais amigável e legível. Use sua imaginação! Figura 54 – Alterando propriedades de cada elemento da tela. Fonte: app Android (2018) No caso do elemento ComboBox, ele está definido como Container ->”Spinner” na janela Palette, como mostrado na figura abaixo: Figura 55 – Componente ComboBox Fonte: app Android (2018) Introdução ao Coding Mobile 55 Outro aspecto importante: Para definir seu conteúdo é necessário criar um Array de opções no arquivo strings.xml, dentro da pasta values. Sua localização é mostrada na figura a seguir: Figura 56 – Localização do arquivo string.xml Fonte: app Android (2018) Neste caso, precisamos inserir um array com os valores “masculino” e “feminino” dentro deste arquivo. Para tanto clique sobre este arquivo digite o seguinte código: Figura 57 – Arquivo string.xml Fonte: app Android (2018) Note que o que você precisa digitar este destacado em vermelho. O que está em azul é outro exemplo para você perceber como o processo segue o mesmo padrão. Introdução ao Coding Mobile 56 Uma vez que você tenha digitado o código do arquivo xml, conforme apresentado na figura acima, volte para o Editor de Layout da tela 2 e clique no componente combobox (spinner) e verifique suas propriedades. Uma delas será a “entries”. Clique no botão ao lado desta propriedade, e você verá mais ou menos como mostra a figura abaixo: Figura 58 – Criando valores para o componente ComboBox Fonte: app Android (2018) Em destaque vermelho, na figura acima, podemos verificar que ao clicar no link da propriedade “entries”, a tela “Resources” é apresentada. Do lado esquerdo, selecione a opção “Array”, destacado em azul e você terá acesso a todos os arrays definidos no arquivo string.xml, dentre os quais aparece o array que trata sobre o “estado civil” e outro que trata sobre “sexo”. Clique duas vezes sobre o array que fornece as opções de “sexo” e a tela será fechada. Finalmente, para testar se tudo está a funcionar, salve o seu projeto e execute-o. Note que apenas a primeira tela (Principal) aparece e, aparentemente não temos como acessar a tela 2 para verificar os demais componentes. Existem duas soluções possíveis: (1) você fazer o mesmo processo que fizemos no módulo 2 desta unidade ou você pode fazer a seguinte alteração: a. Abra o arquivo AndroidManifest.xml. Ele deve se parecer como o mostrado abaixo: Introdução ao Coding Mobile 57 Figura 59 – Arquivo AndroidManifest.xml Fonte: app Android (2018) Note que, destacado em vermelho estão os comandos que permitem ao AndroidStudio saber qual das telas deve ser a primeira a ser aberta quando o aplicativo for executado. b. Faça uma alteração neste código para que o <intent-filter>, que estudamos na primeira Unidade desta disciplina, passe da tela Principal para a tela2, da seguinte maneira: Figura 60 – Alterando a tela inicialdo aplicativo Fonte: app Android (2018) Introdução ao Coding Mobile 58 Salve o arquivo e execute a aplicação. Você verá que a tela2 será apresentada e deve se parecer com a figura abaixo: Figura 61 – Tela 2 da aplicação Fonte: app Android (2018) Bem, decerto que já vimos muita coisa. Não esqueça de testar, criar, inventar, modificar as propriedades e verificar seus efeitos. Na próxima unidade veremos como tratar os eventos gerados por cada um dos componentes vistos nesta unidade. Não se esqueça de se aprofundar nos conhecimentos, acessando as referências apresentadas. Abraço e até a próxima Unidade desta disciplina. Introdução ao Coding Mobile 59 REFERÊNCIAS CLARO, D.; SOBRAL, J. Programação em JAVA. Florianópolis: Copyleft Pearson Education, 2008. 89 p. Disponivel em: <http://www. faeterj-rio.edu.br/downloads/bbv/0031.pdf>. Acesso em: 06 Set. 2018. CORDEIRO, F. Android Studio. 3. ed. [S.l.]: AndroidPro, 2016. CORDEIRO, F. Android Aprendiz. [S.l.]: AndroidPro, 2017. 37 p. Disponivel em: <https://www.androidpro.com.br/>. e-Book. DALL’OGLIO, P. PHP - Programando com Orientação a Objetos. 3. ed. SP: Novatec Editora, 2016. ISBN 978-85-7522-465-6. Acesso em: 30 Ago. 2018. DEITEL, H. M.; DEITEI, P. J. Java, como programar. 4. ed. Porto Alegre: Bookman, 2003. GOSLING, J.; MCGILTON, H. The Java Language Environment. Mountain View,: Sun Microsystems, Inc, 1995. MATTOS, E. Programação de softwares em Java. SP: Digerati Books, 2007. MEIRELLES, A. Smartphones, Guia Prático - Android. Hardware. com.br, 2009. Disponivel em: <https://www.hardware.com.br/livros/ smartphones/android.html>. Acesso em: 05 Set. 2018. ORACLE.COM. Java Documentation. Oracle, 2018. Disponivel em: <https://docs.oracle.com/javase/tutorial/getStarted/intro/definition. html>. Acesso em: 13 Set. 2018. SINGH, C. @Override annotation in Java. JAVA TUTORIAL, 2017. Disponivel em: <https://beginnersbook.com/2014/07/override- annotation-in-java/>. Acesso em: 03 Out. 2018. Introdução ao Coding Mobile Ciclo de vida do aplicativo Android e a Classe Activity Introdução Gerenciando aplicativos Ciclo de vida do aplicativo Android A Classe Activity Navegabilidade Introdução Chamando a segunda Activity Intenção de chamada Evento de chamada Passagem de parâmetros entre telas Inserindo componentes na tela Entendendo o Editor de Layout TextView Pain Text Button Radio button Check box e Combo box
Compartilhar