+ Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em...
Transcript of + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em...
![Page 1: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/1.jpg)
+
Treinamento em Android
![Page 2: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/2.jpg)
+Apresentação
Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE –
2011.1; ~2 anos de experiência com a plataforma:
Testes manuais e automáticos; Manutenção de scripts de testes; Desenvolvimento de aplicativos;
Usuário Android há ~2 anos: Android 1.5; Android 2.1 e 2.2. Android 3.2;
![Page 3: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/3.jpg)
+1. Introdução
![Page 4: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/4.jpg)
+Android
Android é um sistema operacional mobile que roda sobre um núcleo Linux;
Foi inicialmente desenvolvido pelo Google e posteriormente pela Open Handset Alliance Google, HTC, Dell, Intel, Motorola, Qualcomm, Texas
Instruments, Samsung, LG, T-Mobile e Nvidia; A Google é a responsável pela gerência do produto e
engenharia de processos.
![Page 5: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/5.jpg)
+Android
O primeiro telefone comercialmente disponível a rodar no sistema Android foi o HTC Dream, lançado a 22 de outubro de 2008;
12 milhões de linhas de código, das quais 3 milhões em XML; 2.8 milhões de linhas de C; 2.1 milhões de linhas de código Java; 1.75 milhões de linhas de código em C++;
![Page 6: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/6.jpg)
+Android
OK. Linux... Google... Mas por que eu iria querer desenvolver aplicações para Android?? Mais de 200 milhões de dispositivos ativados (550.000
1 milhão por DIA); 137 190 países e regiões; Somente no terceiro trimestre de 2011, os usuários
baixaram 2.4 BILHÕES de aplicações para os seus Androids.
1.5 bilhões de downloads por mês.
![Page 7: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/7.jpg)
+Android
Como eu faço parte DISSO?
![Page 8: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/8.jpg)
+Android SDK
O Android SDK (Software Development Kit) permite o desenvolvimento e teste de aplicações.;
Fornece ferramentas para a comunicação do computador com um dispositivo Android;
Suporte a várias versões do Android.
![Page 9: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/9.jpg)
+Android SDK
Instalação Requisitos mínimos:
Eclipse Juno (4.2); JDK 7.
http://developer.android.com/sdk/index.html Baixar a versão .zip
![Page 10: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/10.jpg)
+ADT – Plug-in para Eclipse
O ADT (Android Development Tools) é um plug-in para o Eclipse que foi projetado para fornecer um ambiente poderoso para desenvolvimento de aplicativos para Andriod.
![Page 11: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/11.jpg)
+ADT – Plug-in para Eclipse
Prover um rápido setup de novos projetos Android, além de: Criar interfaces gráficas para aplicações; Adicionar componentes de acordo com a API do
Andriod; Debugar os aplicativos; Exportar o resultado disso na extensão padrão do
Android (.apk) para distribuição da mesma.
![Page 12: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/12.jpg)
+ADT – Plugin para Eclipse
![Page 13: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/13.jpg)
+ADT – Plug-in para Eclipse
![Page 14: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/14.jpg)
+ADT – Plug-in para Eclipse
Na tela “Available Software”, selecione o checkbox de Developer Tools e aperte Next;
Na próxima tela, vão aparecer todos os componentes que serão baixados. Clique em Next.
Leia e aceite os termos da licença e aperte em Finish. Se aparecer algum Warning, aperte em OK. Ele fala da autenticidade do software, que não pode ser estabelecida;
Quando a instalação for concluída, reinicie o Eclipse.
![Page 15: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/15.jpg)
+ADT – Plug-in para Eclipse
![Page 16: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/16.jpg)
+ADT – Plug-in para Eclipse
![Page 17: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/17.jpg)
+ADT – Plugin para Eclipse
![Page 18: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/18.jpg)
+Criando um projeto Android
New > Project > Android > Android Project
![Page 19: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/19.jpg)
+Criando um projeto Android
![Page 20: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/20.jpg)
+Criando um projeto Android
![Page 21: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/21.jpg)
+Estrutura de um projeto Android
![Page 22: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/22.jpg)
+Estrutura de um projeto Android
Pasta src/: Inclui o pacote para a aplicação, que no exemplo
é br.org.citi.myapk.
R.java: O ADT cria esse arquivo automaticamente e representa
as constantes necessárias para acessar diversos recursos da aplicação Android.
MyApkActivity.java: Implementação da classe principal da aplicação.
![Page 23: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/23.jpg)
+Estrutura de um projeto Android
Bibliotecas de referência (Android <versão>): Contém o arquivo android.jar, que é o arquivo da classe
de runtime do Android, localizado no Android SDK.
Pasta res/: Contém os recursos para a aplicação, incluindo:
Ícones (por exemplo, o arquivo ic_laucher.png); Arquivos de layout (o arquivo main.xml); Strings (o arquivo strings.xml), que contém as constantes ligadas
à strings.
![Page 24: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/24.jpg)
+Estrutura de um projeto Android
AndriodManifest.xml Descritor de implementação da aplicação de exemplo.
Contém uma descrição mais detalhada da aplicação do que a que é encontrada no arquivo main.xml.
![Page 25: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/25.jpg)
+Simulador
![Page 26: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/26.jpg)
+Simulador
![Page 27: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/27.jpg)
+Simulador
![Page 28: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/28.jpg)
+Simulador
Observações importantes: Os passos mostrados acima devem ser feitos para todos
os projetos criados; É necessário criar uma AVD para cada tipo de projeto;
Versões diferentes de Android; Mesmo que seja Android 4.1.2 e Google APIs 4.1.2!
Todas as aplicações contidas no workspace que foram executadas no mesmo AVD são carregadas quando o simulador é iniciado.
![Page 29: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/29.jpg)
+2. A plataforma
![Page 30: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/30.jpg)
+Sobre a plataforma
![Page 31: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/31.jpg)
+Activity
A classe Activity é uma parte importante de um ciclo de vida de uma aplicação Android, e a maneira como as Activities são lançadas e interagem entre si é parte fundamental do modelo de aplicação da plataforma.
Uma Activity é um componente simples, que o usuário pode dispor livremente. Interação com o usuário; A classe Activity pode ser associada à criação de uma janela no
qual o desenvolvedor pode colocar a GUI da aplicação.
![Page 32: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/32.jpg)
+Activity
Geralmente, uma Acitivity é apresentada para o usuário como uma janela full-screen, mas ela também pode ser usada de outras formas: janelas flutuantes; dentro de outra Activity.
Ela possui dos métodos que devem ser implementados por todas as suas subclasses: onCreate(Bundle): é onde a Activity é iniciada. onPause(): é chamando quando o usuário deixa a aplicação.
![Page 33: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/33.jpg)
+Service
Um Service é um componente de aplicação representando tanto uma operação de longa duração, quanto oferecendo uma funcionalidade suplementar para outras aplicações. Estas tem um tempo de vida igual ao do serviço ao qual estão ligadas.
Muitas confusões sobre a classe Service são resolvidas sabendo-se o que ela não representa: Um Service não é um processo separado. O objeto em si não
executa ações num processo próprio. Um Service não é uma thread. Não é recomendado usar um
Service para realizar algum trabalho fora da thread principal.
![Page 34: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/34.jpg)
+Service
Um Service, no entanto, é algo bastante simples, fornecendo duas funcionalidades principais: Um meio para a aplicação informar ao sistema algo que ela quer
que seja executado em background. Isso corresponde a chamar o método Context.startService(), que pede ao sistema para alocar ações para o Service, para ser executado enquanto este ou outro componente o termine.
Uma facilidade para uma aplicação compartilhar alguma de suas funcionalidades com outras aplicações. Isto corresponde a chamar o método Context.bindService(), que permite uma conexão entre aplicações para que haja a interação entre estas.
![Page 35: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/35.jpg)
+Intent
Um Intent é uma descrição abstrata de uma operação que será executada. lançar uma Acitivity comunicação com um Service que está executando em
background.
Um Intent provê uma facilidade para fazer uma ligação tardia entre códigos de diferentes aplicações.
![Page 36: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/36.jpg)
+Intent
O uso mais significativo disto é no lançamento de Activities, onde um Intent pode ser considerado como um intermediário entre duas Activities. Estrutura de dados passiva mantendo uma descrição
abstrata de uma ação a ser realizada.
![Page 37: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/37.jpg)
+Content Providers
Content Providers armazenam e retornam dados, e fazem estes serem acessíveis a todas as aplicações. O único meio de compartilhar dados entre aplicações; No Android não há uma área de armazenamento comum onde
todos os pacotes Android possam acessar estes dados.
Um Content Provider NÃO persiste dados.
![Page 38: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/38.jpg)
+Content Providers
O Android é embarcado com um determinado número de Content Providers para tipos pré-definidos de dados Arquivos de mídia; Informações de contatos Etc...
Se o desenvolvedor quiser tornar os dados de suas aplicações visíveis a outras, ele tem duas opções: criar seu próprio Content Provider (como uma subclasse de
ContentProvider.java); adicionar os dados a um Provider existente (observando sempre o
tipo do dado armazenado, para não haver erros de tipo).
![Page 39: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/39.jpg)
+Widgets
São os componentes da interface da aplicação. Botões; Imagens; Textos; Layouts; Etc...
![Page 40: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/40.jpg)
+Notifications
Representa o quão persistente é uma notificação que será apresentada ao usuário.
Uma notificação na barra de status adiciona um ícone na barra de status do sistema (com uma mensagem de texto opcional), e uma mensagem na tela de notificações.
Quando o usuário seleciona a notificação, o Android dispara um Intent definido na instância do objeto Notification (em geral para lançar uma Activity). É possível ainda configurar a notificação para emitir sons, vibrar o
dispositivo ou acender uma luz.
![Page 41: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/41.jpg)
+Notifications
Uma notificação na barra de status deve ser usada para qualquer caso em que um serviço rodando em background precise alertar sobre um evento que requer alguma intervenção direta do usuário.
Um serviço rodando em background nunca deve lançar uma Activity por ele mesmo, nem mesmo através de um Intent, se para isto for necessária a interação com o usuário. Em vez disto, o serviço deve criar uma notificação que irá lançar a
Activity quando selecionada pelo usuário.
![Page 42: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/42.jpg)
+Resources
Gerencia o acesso a um ou mais recursos de aplicação, estando no topo do controle de ativos da aplicação.
Um ativo significa algum elemento compartilhado por uma estrutura, que precisa ser acessados por um ou mais componentes desta.
Além disso, se comporta como uma API de alto nível para acesso aos dados tipificados desses ativos.
![Page 43: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/43.jpg)
+Resources
O sistema de recursos do Android mantém um registro de todo ativo que não seja código associado a uma aplicação.
A classe Resources é utilizada para acessar esses recursos. As ferramentas do Android SDK compilam os recursos da aplicação no arquivo binário da aplicação em tempo de construção.
![Page 44: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/44.jpg)
+Resources
Para usar o recurso, este deve estar no local correto da hierarquia de classes (isto é, dentro da pasta res/) e, a cada mudança nesse diretório, o projeto deve ser construído. Então, durante essa construção as ferramentas do SDK geram
símbolos para cada recurso, que podem ser referenciados no código da aplicação.
![Page 45: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/45.jpg)
+Resources
Utilizar recursos de aplicação torna mais fácil a atualização de várias características de uma aplicação sem modificar o código-fonte, e, provendo um conjunto de recursos alternativos, otimizar a aplicação para uma variedade de configurações de dispositivos
![Page 46: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/46.jpg)
+R.java
A classe R.java funciona como uma lista indexada, onde todos os recursos do projeto estão definidos.
Esta classe é usada como um atalho para referenciar os recursos da pasta “res” no código.
![Page 47: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/47.jpg)
+R.java
Essa função da classe se torna bastante útil quando estamos utilizando uma IDE que contém um recurso de auto complemento de código (Como o Ctrl+Space do Eclipse).
Isto torna muito mais rápida e interativa a localização da referência que o desenvolvedor procura.
Além disto, quando o desenvolvedor adiciona outros recursos ao projeto, a classe R.java é alterada para manter as referências atualizadas.
![Page 48: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/48.jpg)
+3. Componentes de Tela
![Page 49: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/49.jpg)
+TextView e EditText
Exibe um texto para o usuário e, opcionalmente, permite a edição do mesmo.
Uma TextView é um editor de texto completo, mas a classe básica não permite edição.
Para isto, é usada a EditText, que é uma extensão do TextView. O funcionamento dos dois componentes será explicado em detalhes na seção seguinte.
![Page 50: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/50.jpg)
+Gallery
Uma view que mostra itens no centro da tela, com scroll horizontal.
A view Gallery possui valores default, mas estes podem ser configurados de acordo com a necessidade da aplicação.
![Page 51: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/51.jpg)
+Button
Representa um widget que o usuário pode pressionar ou clicar para realizar uma ação.
![Page 52: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/52.jpg)
+Listeners
Um listener é uma interface em uma View que contém um método que retorna um comportamento. Este método é chamado pelo Android em resposta à determinada interação do usuário com a GUI da aplicação.
onClick() De View.OnClickListener. É chamado quando o usuário apenas
toca no item da tela, ou coloca o foco com as setas de navegação e toca o enter no teclado.
![Page 53: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/53.jpg)
+Listeners
onLongClick() De View.OnLongClickListener. É chamado quando o usuário toca e
pressiona um item da tela ou coloca o foco com as setas de navegação e toca e pressiona o enter no teclado. O tempo padrão de ativação é de 1 segundo.
onFocusChange() De View.OnFocusChangeListener. É chamado quando o usuário
coloca ou tira o foco de algum item.
onKey() De View.OnKeyListener. É chamado quando o usuário tem o foco
sobre algum item da tela e pressiona alguma tecla do dispositivo.
![Page 54: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/54.jpg)
+Listeners
onTouch() De View.OnTouchListener. É chamado quando o usuário realiza
qualquer ação que caracterize um toque na tela, independente da duração. A única condição é que seja dentro da região que delimita o item.
onCreateContextMenu() De View.OnCreateContextMenuListener. É chamado quando um
menu de context é exibido (como resultado de um toque longo na tela).
![Page 55: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/55.jpg)
+Listeners
O método onClick dos exemplos acima não possuem retorno, embora alguns métodos de callback possuam. A razão para o retorno depende do evento em si. onLongClick() e onKey() – Retornam um booleano que indica se o
desenvolvedor se o evento foi concluído ou se ainda não foi. Isto é, retorna true para indicar que o evento foi tratado e pode ser encerrado; retorna falso se ele não foi tratado e/ou deve continuar para algum outro listener.
onTouch() – Retorna um booleano que indica que o evento foi tratado. É importante notar que este evento pode ter muitas ações que se sucedem. Sendo assim, se o retorno for false quando a ação de tocar estiver sendo iniciada, isso indica que o evento ainda não foi concluído e que as ações subsequentes não importam no contexto.
![Page 56: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/56.jpg)
+RadioGroup e RadioButton
Um radio button é um botão com dois estados possíveis: marcado ou não-marcado. Quando o radio button não está marcado, o usuário pode pressioná-lo ou clicar sobre ele para marcar. Não é possível ao usuário remover a marcação de um radio button,
uma vez feita.
Radio buttons são geralmente usados juntos em um Radio Group. Quando alguns radio buttons são colocados em um grupo, marcar
um dos membros desmarca outro, se este estiver selecionado.
![Page 57: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/57.jpg)
+RadioGroup e RadioButton
Inicialmente, todos os radio buttons estão desmarcados. É impossível desmarcar um radio button arbitrariamente, mas pode-se desmarcar todos ao mesmo tempo. A seleção é indicada através do id único definido no XML layout.
![Page 58: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/58.jpg)
+Checkbox
Um checkbox é um tipo específico de botão de dois estados que pode ser marcado ou não-marcado.
A diferença de um checkbox e um radio button é que o checkbox pode ser marcado e desmarcado pelo usuário, sem que isso afete outros checkboxes.
![Page 59: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/59.jpg)
+ImageView
Exibe uma imagem arbitrária, como um ícone.
A classe ImageView pode carregar imagens de várias fontes (como ContentProviders), cuidar da computação das medidas da imagem, para então esta poder ser utilizada em algum layout, oferece vários efeitos de visualização, como redimensionamento e coloração.
![Page 60: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/60.jpg)
+ImageButton
Exibe um botão com uma imagem no lugar do texto, que pode ser pressionado ou clicado pelo usuário.
Por padrão, um ImageButton parece um Button, com um background que muda a cor de acordo com o estado do botão.
![Page 61: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/61.jpg)
+ImageButton
A imagem na superfície do botão é definida através do atributo “android:src” no XML do elemento ou pelo setImageResource(int) method.
Podemos associar uma imagem diferente a cada um dos diferentes estados do botão (selecionado, com o foco, etc).
![Page 62: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/62.jpg)
+Spinner
Uma View que exibe um elemento de uma lista de elementos e permite ao usuário escolher entre eles. Os itens no Spinner vêm do Adapter associado a ele.
![Page 63: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/63.jpg)
+ListView
Uma view que mostra os itens em uma lista vertical, permitindo o scroll entre estes elemente. Os itens vêm do ListAdpater associado a esta view.
![Page 64: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/64.jpg)
+Adapters
Um adapter é um objeto que atua como uma ponte entre uma AdapterView e os dados que compõem essa view.
Ele também é responsável por fazer a View para cada item no conjunto de dados.
![Page 65: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/65.jpg)
+Alert
Um Alerta é, geralmente, uma pequena janela que aparece em cima de uma Activity.
A Activity perde o foco e o alerta aceita toda a interação do usuário. Alertas são normalmente usados para notificações que devem interromper o uso e para realizar alguma tarefa que direciona algo relacionado com a aplicação em uso.
A classe Dialog é a classe básica para criação de alertas. Porém, o desenvolvedor não deve instanciar uma classe Dialog diretamente.
![Page 66: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/66.jpg)
+Alerts
AlertDialog Um alerta que pode ter nenhum, um, dois ou três botões e/ou
uma lista de itens selecionáveis, que inclui checkboxes ou radio buttons.
ProgressDialog Um alerta que exibe uma barra de progresso. Como é uma
subclasse de AlertDialog, ela pode ter botões.
DatePickerDialog Um alerta que permite ao usuário selecionar uma data.
TimePickerDialog Um alerta que permite ao usuário selecionar a hora.
![Page 67: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/67.jpg)
+Toast
Uma Toast é uma view que contém uma mensagem curta e rápida para o usuário. Quando a view é mostrada ao usuário, aparece como uma view flutuante sobre a aplicação. Ela nunca vai receber o foco. O usuário pode estar até interagindo com algum widget.
A idéia do Toast é ser um mínimo intrusivo possível. Exemplos disso são o controle de volume, ou uma mensagem
informando que as configurações foram salvas.
A maneira mais simples de utilizar essa classe é chamar algum dos métodos estáticos que retornam um objeto Toast.
![Page 68: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/68.jpg)
+Atributos XML
São atributos que definem a aparência dos widgets em um determinado layout, bem como como eles são identificados no código durante o desenvolvimento. Eles será discutidos com mais detalhes na seção seguinte.
![Page 69: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/69.jpg)
+4. Layouts
![Page 70: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/70.jpg)
+FrameLayout
FrameLayout é o tipo mais simples de layout.
Ele é, basicamente, um espaço em branco na tela, que o desenvolvedor pode preencher com um único objeto.
Todos os componentes do layout são fixados no topo esquerdo da tela.
Não é permitida outra localidade para ele. Itens subsequentes são simplesmente desenhados sobre os outros, encobrindo total ou parcialmente.
![Page 71: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/71.jpg)
+LinearLayout
Um LinearLayout alinha todos os componentes em uma única direção – vertical ou horizontal, dependendo da orientação fornecida.
Todos os componentes são enfileirados um depois do outro, sendo uma lista vertical tendo um elemento por linha, enquanto que uma horizontal tem a altura máxima de uma linha (no caso, a altura do maior item).
![Page 72: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/72.jpg)
+LinearLayout
O LinearLayout respeita margens entre os itens e o alinhamento de cada item de acordo com o espaço.
LinearLayout também pode atribuir um peso a componentes, para mostrar a importância deste para a view, e permite ao componente ocupar todo o espaço restante da view.
No caso de vários valores de pesos serem atribuídos (sendo estes inteiros), cada item é expandido proporcionalmente ao valor do seu peso. O valor default é zero.
![Page 73: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/73.jpg)
+LinearLayout
Para criar um layout de tamanho proporcional, crie um container com os atributos “layout_width” e “layout_height” setados para “fill_parent”; atribua os valores dos itens de height e width para zero.
![Page 74: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/74.jpg)
+TableLayout
TableLayout posiciona seus componentes em linhas e colunas. Os espaços desse layout não mostram as bordas das linhas, colunas e células. A quantidade de colunas na tabela será determinada pelo linha com o maior número de células. Uma tabela pode ter células vazias.
TableRow são sub-elementos de TableLayout, onde cada um deles define uma linha na tabela). Cada linha possui zero ou mais células, onde cada uma define uma outra View ImageView, TextView, etc), ou ainda, outro ViewGroup aninhado (outro TableLayout, por exemplo).
![Page 75: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/75.jpg)
+TableLayout
![Page 76: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/76.jpg)
+TableLayout
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1">
<TableRow> <TextView android:layout_column="1" android:text="Open..." android:padding="3dip" /> <TextView android:text="Ctrl-O" android:gravity="right" android:padding="3dip" /> </TableRow>
![Page 77: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/77.jpg)
+TableLayout
<View android:layout_height="2dip" android:background="#FF909090" />
<TableRow> <TextView android:text="X" android:padding="3dip" /> <TextView android:text="Import..." android:padding="3dip" /> </TableRow>
![Page 78: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/78.jpg)
+TableLayout
<View android:layout_height="2dip" android:background="#FF909090" />
<TableRow> <TextView android:text="X" android:padding="3dip" /> <TextView android:text="Import..." android:padding="3dip" /> </TableRow>
![Page 79: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/79.jpg)
+TableLayout
<View android:layout_height="2dip" android:background="#FF909090" />
<TableRow> <TextView android:text="X" android:padding="3dip" /> <TextView android:text="Import..." android:padding="3dip" /> </TableRow> <TableRow> <TextView android:text="X" android:padding="3dip" />
![Page 80: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/80.jpg)
+TableLayout
<TextView android:text="Export..." android:padding="3dip" /> <TextView android:text="Ctrl-E" android:gravity="right" android:padding="3dip" /> </TableRow> <View android:layout_height="2dip" android:background="#FF909090" />TableRow> <TextView android:layout_column="1" android:text="Quit" android:padding="3dip" /> </TableRow></TableLayout>
![Page 81: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/81.jpg)
+TableLayout
TableRow> <TextView android:layout_column="1" android:text="Quit" android:padding="3dip" /> </TableRow></TableLayout>
![Page 82: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/82.jpg)
+RelativeLayout
RelativeLayout faz com que as posições dos componentes sejam determinadas relativamente ao layout ou a outro componente. Então, é possível alinhar dois elementos a margem direita, ou
colocar um abaixo do outro, centralizado na tela, etc.
Os elementos são renderizados na ordem fornecida, então, se o primeiro elemento for centralizado na tela, outros elementos alinham-se relativamente ao primeiro.
Também, por conta dessa ordenação, se for usado XML para especificar o layout, o elemento que o desenvolvedor irá usar como referencia tem que estar listado primeiro que os outros.
![Page 83: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/83.jpg)
+RelativeLayout
![Page 84: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/84.jpg)
+RelativeLayout
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Type here:"/> <EditText android:id="@+id/entry" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/editbox_background" android:layout_below="@id/label"/>
![Page 85: + Treinamento em Android. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1; ~2 anos de experiência.](https://reader035.fdocumentos.tips/reader035/viewer/2022062512/552fc12a497959413d8cec50/html5/thumbnails/85.jpg)
+RelativeLayout
<Button android:id="@+id/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/entry" android:layout_alignParentRight="true" android:layout_marginLeft="10dip" android:text="OK" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/ok" android:layout_alignTop="@id/ok" android:text="Cancel" /></RelativeLayout>