Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Apostila de Android - Programando Passo a Passo 4ª Edição, Notas de estudo de Informática

Apostila de Android - Programando Passo a Passo 4ª Edição

Tipologia: Notas de estudo

2012

Compartilhado em 10/04/2012

junior-oliveira-simas-6
junior-oliveira-simas-6 🇧🇷

5

(1)

3 documentos

Pré-visualização parcial do texto

Baixe Apostila de Android - Programando Passo a Passo 4ª Edição e outras Notas de estudo em PDF para Informática, somente na Docsity! Apostila de Programando Passo a Passo 4ª Edição De : Luciano Alves da Silva (lucianopascal@yahoo.com.br) www.apostilaandroid.ueuo.com Rio de Janeiro Novembro 2010 2 Apostila de Android – Programando passo a passo 4ª Edição Aviso importante em relação a esta apostila Antes iniciar a leitura da apostila, veja esses avisos importantes: Essa apostila NÃO PODERÁ SER DISTRIBUÍDA, em hipótese alguma, em outros sites da Internet, SEM A PRÉVIA AUTORIZAÇÃO DO AUTOR DESTA OBRA. Todo o conteúdo da apostila ou parte dela, NÃO PODERÁ SER PUBLICADO, em hipótese alguma, em outras fontes na Internet, SEM A PRÉVIA AUTORIZAÇÃO DO AUTOR DESTA OBRA. Porém, essa regra NÃO SERÁ VÁLIDA para os tópicos 1 (Introdução) e 2 (A estrutura geral da plataforma Android, incluindo também seus sub-tópicos) dessa apostila, QUE PODEM SER PUBLICADOS SEM A MINHA AUTORIZAÇÃO. Essa apostila NÃO PODE , em hipótese alguma, SER COMERCIALIZADA NA INTERNET. 5 Apostila de Android – Programando passo a passo 4ª Edição 5.18) A widget DatePicker .............................................................................. 86 5.19) Desenvolvendo uma aplicação de calendário .................................... 86 5.20) A widget TimePicker ............................................................................. 89 5.21) Desenvolvendo uma aplicação que faz uso do TimePicker .............. 89 6) Mudando de layouts .................................................................................. 91 6.1) Desenvolvendo uma aplicação de cadastro ......................................... 97 7) Trabalhando com menus em uma aplicação ......................................... 113 8 ) Entendendo melhor a classe AlertDialog .............................................. 119 9) Propriedades e eventos dos componentes trabalhados ...................... 122 Widget TextView ........................................................................................... 122 Widget EditText ............................................................................................ 122 Widget Button ............................................................................................... 124 Widget CheckBox ......................................................................................... 124 Widget RadioButton ..................................................................................... 125 Widget Spinner ............................................................................................. 126 Widget ListView ............................................................................................ 127 Widget ImageView ........................................................................................ 128 Widget Gallery .............................................................................................. 128 ProgressBar .................................................................................................. 129 DatePicker ..................................................................................................... 129 TimePicker .................................................................................................... 130 Propriedades comuns a todos os objetos ................................................. 131 Conclusão ..................................................................................................... 132 6 Apostila de Android – Programando passo a passo 4ª Edição 1) Introdução O Android é uma plataforma desenvolvida pela Google voltada para dispositivos móveis. Em 5 de novembro de 2007, a empresa tornou pública a primeira plataforma Open Source de desenvolvimento para dispositivos moveis baseada na plataforma Java com sistema operacional Linux, na qual foi chamada de Android. Essa plataforma é mantida pela OHA (Open Handset Alliance), um grupo formado por mais de 40 empresas as quais se uniram para inovar e acelerar o desenvolvimento de aplicações, serviços, trazendo aos consumidores uma experiência mais rica em termos de recursos, menos dispendiosa em ternos financeiros para o mercado móvel. Pode-se dizer que a plataforma Android é a primeira plataforma móvel completa, aberta e livre. Um dos SmartPhones que ofereceu suporte a esse sistema operacional foi o G1 da empresa T-Mobile. Veja a figura dele abaixo: (G1 da T-Mobile) Não demorou muito para que o Android chegasse aqui no Brasil. Hoje já contamos com operadoras como Claro, TIM e Vivo que já oferecem suporte a essa plataforma. Os SmartPhones disponíveis aqui no Brasil, oferecidos por algumas dessas operadoras, que suportam o sistema Android é o Samgung Galaxy e o Motorola Milestone. Veja a figura desses SmartPhones abaixo: 7 Apostila de Android – Programando passo a passo 4ª Edição (Samsung Galaxy) (Motorola MileStone) 10 Apostila de Android – Programando passo a passo 4ª Edição 2.3) Bibliotecas O Android inclui um conjunto de bibliotecas C/C++ utilizadas por vários componentes do sistema. Estas capacidades são expostas para os desenvolvedores através do Framework. Abaixo, algumas das principais bibliotecas: - System C library – uma implementação derivada da biblioteca C padrão sistema (libc) do BSD sintonizada para dispositivos rodando Linux. - Media Libraries – baseado no PacketVideo’s OpenCORE; as bibliotecas suportam os mais populares formatos de áudio e vídeo, bem como imagens estáticas. - Surface Manager – gere o acesso ao subsistema de exibição bem como as múltiplas camadas de aplicações 2D e 3D; - LibWebCore – um web browser engine utilizado tanto no Android Browser quanto para exibições web. - SGL – o engine de gráficos 2D - 3D libraries – uma implementação baseada no OpenGL ES 1.0 APIs; as bibliotecas utilizam aceleração 3D via hardware (quando disponível) ou o software de renderização 3D altamente otimizado incluído no Android. - FreeType – renderização de fontes bitmap e vector - SQLite – um poderoso e leve engine de banco de dados relacional disponível para todas as aplicações 2.4) Android Runtime O Android inclui um grupo de bibliotecas que fornece a maioria das funcionalidades disponíveis nas principais bibliotecas da linguagem Java. Toda aplicação Android roda em seu próprio processo, com sua própria instância da máquina virtual Dalvik. O Dalvik foi escrito de forma a executar várias VMs eficientemente. Ele executa arquivos .dex, que é otimizado para consumo mínimo de memória. A VM é baseada em registros e roda classes compiladas pela linguagem Java que foram transformadas em arquivos .dex, através da ferramenta “dx” incluída no SDK. O Dalvik VM baseia-se no kernel do Linux para funcionalidades subjacentes como o encadeamento e a gestão de baixo nível de memória. 11 Apostila de Android – Programando passo a passo 4ª Edição 2.5) Linux Kernel Utiliza a versão 2,6 do kernel do Linux para os serviços centrais do sistema, tais como segurança, gestão de memória, gestão de processos, etc. O kernel também atua como uma camada de abstração entre o hardware e o resto do software. 3) Instalando o Eclipse e o Android Para a elaboração desse material, eu fiz o uso do Eclipse Galileo (Eclipse 3.5.1 para Windows) e o SDK do Android Revisão 5 e o plugin do Android para o Eclipse ADT-0.9.6. Qualquer versão (de preferência superior) dos programas citados acima serve. Claro , para que toda essa aplicação funcione é necessário que você tenha instalado antes de tudo, a Máquina Virtual Java (de preferência a versão 5 ou posterior). Bom, mãos a obra. Para saber se você possui uma Maquina virtual Java, entre no prompt de comando de digite a seguinte linha: java –version Se mostrar algo parecido como mostra o código abaixo: java version "1.6.0_07" Java(TM) SE Runtime Environment (build 1.6.0_07-b06) Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing) Beleza, você possui uma máquina virtual Java instalada no seu computador, caso contrário, instale o JDK. Você pode fazer o download do JDK pelo link abaixo: http://java.sun.com/javase/downloads/index.jsp Se você já possui a máquina virtual Java instalada em seu computador, basta agora você fazer o download do Eclipse, que pode ser feita pelo link abaixo: http://www.eclipse.org/downloads/ Para fazer o download do Android SDK e do seu plugin , faça pelo link abaixo: http://developer.android.com/sdk/index.html 12 Apostila de Android – Programando passo a passo 4ª Edição Depois de obter os programas e plugins citados acima, vamos fazer agora as devidas configurações. Primeiramente, você irá descompactar o arquivo “android-sdk_r05-windows.zip”, de preferência no diretório raiz “C:\”. Depois de descompactar, execute o utilitário “SDK Setup”, que se encontra dentro da pasta descompactada, conforme é mostrado na figura abaixo: Ao executá-lo, ele irá atualizar as suas fontes , conforme mostra a figura abaixo: Se durante a atualização das fontes, a aplicação apresentar um erro, conforme mostra a figura abaixo: 15 Apostila de Android – Programando passo a passo 4ª Edição A instalação leva alguns minutos para ser feita. Quando a instalação for concluída, será exibida algumas mensagens, conforme mostra a figura abaixo: Pronto, uma etapa concluída. Agora vamos instalar o Eclipse com o plugin do Android. Para instalar o eclipse simplesmente descompacte em um local apropriado, de preferência no drive “C:\”. Depois disso copie para o drive “C:\” o plugin do Android “ADT-0.9.6.zip”. Feito isso vamos executar o eclipse. Com o eclipse aberto na no menu “help” -> “Install New Software”, como mostra a figura abaixo: 16 Apostila de Android – Programando passo a passo 4ª Edição Ao fazer esse procedimento será aberta uma tela conforme mostra a figura abaixo: Para instalarmos o plugin do android, clique no botão “Add”, e será mostrada uma caixa de diálogo, conforme mostra a figura abaixo: 17 Apostila de Android – Programando passo a passo 4ª Edição Agora vamos clicar no botão “Archive” e iremos procurar e selecionar o plugin do Android “A.D.T-0.9.6.zip”. Preencha o campo “Name” como mostra a figura abaixo: Ao clicar em “OK” será mostrada uma tela, conforme demonstra a figura abaixo: 20 Apostila de Android – Programando passo a passo 4ª Edição Se em algum momento durante o processo for exibida a figura abaixo: Pode clicar em “OK” sem problemas, e o processo se completará. Após o termino do processo você deve reiniciar o Eclipse, clicando em “Yes”, na mensagem abaixo: Após o eclipse ter reiniciado, vamos fazer agora as configurações para fazer conexão com o emulador do Android. Vamos no menu “Window” / “Preferences”. Aberta a caixa de diálogo, selecione o item “Android” e será mostrada uma tela, conforme demonstra a figura abaixo: 21 Apostila de Android – Programando passo a passo 4ª Edição Agora você vai selecionar o diretório onde se encontra o Android, que aqui no meu computador, o android se encontra instalado em “C:\android-sdk- windows”, logo, terei que selecionar essa pasta. Feito isso basta clicar em “OK”. Para finalizar vamos definir um dispositivo virtual, conhecido como AVD (Android Virtual Device), onde nossas aplicações daqui para frente serão executadas. Para isso, vá no menu “Windows” / “Android SDK and AVD Manager”, conforme mostra a figura abaixo: Feito o procedimento acima, será aberta uma tela conforme mostra a figura abaixo: 22 Apostila de Android – Programando passo a passo 4ª Edição Para criarmos um dispositivo virtual clique no botão “New”, e será aberta uma tela conforme mostra a figura abaixo: 25 Apostila de Android – Programando passo a passo 4ª Edição 4) Criando a nossa primeira aplicação em Android Agora vamos criar um novo projeto Android indo no menu “File” / “New” / “Other”. Selecione o projeto Android conforme figura abaixo. Depois de selecionar, clique em “Next”: Após clicar em “Next” na figura acima, será exibida uma tela conforme figura abaixo: 26 Apostila de Android – Programando passo a passo 4ª Edição Vamos preencher os campos citados abaixo: Project name : HelloWorldAndroid Application name : Hello World Android Package name: br.com.android Create Activity : AppHello Min SDK Version : 7 Os campos preenchidos acima devem estar de acordo com a figura abaixo: 27 Apostila de Android – Programando passo a passo 4ª Edição Depois de tudo preenchido basta clicar no botão “Finish” e pronto, nosso projeto foi criado. Em Package Explorer, vamos dar uma olhada na estrutura do Projeto, simplesmente clicando no botão “+”. É só seguir a figura abaixo, aproveite e abra o arquivo AppHello.java , conforme figura abaixo: 30 Apostila de Android – Programando passo a passo 4ª Edição Veja o seu código abaixo: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> Observe que após a primeira linha (prólogo xml), existe uma tag chamada LinearLayout, responsável por organizar os componentes exibidos na tela, por padrão os componentes são distribuídos na vertical pelo atributo android:orientation="vertical". Dentro desta tag, existe uma um componente chamado TextView, que representa um texto a ser exibido na tela , por padrão, ele irá exibir “Hello World, AppHello” através do atributo android:text="@string/hello", onde o valor “@string/hello” equivale a uma constante, que está definida no arquivo strings.xml, que se encontra no diretório “values”, que iremos descreve-lo agora. - O diretório “values” armazena valores estáticos que podem ser utilizados por um arquivo “.XML”. Normalmente esses valores estáticos devem ser armazenados no arquivo “strings.xml”. Vá no diretório “res/values” e de um duplo clique no arquivo “strings.xml”, e será mostra o gerenciador desse arquivo, conforme mostra a figura abaixo: 31 Apostila de Android – Programando passo a passo 4ª Edição Observe que nas propriedades do atributo “hello”, está atribuído um valor a ela,que é o valor “Hello World, AppHello!”, isso quer dizer que lá no arquivo XML, no componente TextView, tem uma propriedade chama “android:text”, com o valor “@string/hello” , que equivale a na verdade a string “Hello World, AppHello!”. Para ver a sua estrutura , clique na guia “strings.xml”. O código desse arquivo é igual ao que demonstra o código abaixo: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, AppHello!</string> <string name="app_name">Hello World Android</string> </resources> Observem que dentro desse arquivo eu declaro um valor estático chamado app_name, cujo valor é “Hello World Android”. Dentro da pasta HelloWorldAndroid existe um arquivo chamado “AndroidManifest.xml” Esse arquivo é o sistema nervoso de uma aplicação Android. É nele que ficam as definições referentes à aplicação. De um duplo clique nesse arquivo para abri-lo, feito isso será mostrado o seu gerenciador, conforme mostra a figura abaixo: 32 Apostila de Android – Programando passo a passo 4ª Edição Bom, o que nos interessa aqui é o código. Para visualizarmos seu código, clique na seção “AndroidManifest.xml”. Veja seu código abaixo: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.com.android" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".AppHello" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> Observem algumas tags interessantes. A tag <application> possui o atributo android:icon, no qual especifico o ícone da aplicação. Como havia citado anteriormente, todas as imagens ficam no diretório drawable e nesse diretório existe um arquivo de chamado “icon.png” que será o ícone da minha aplicação. Logo, para usar esse ícone neste atributo, deve-se passar o valor 35 Apostila de Android – Programando passo a passo 4ª Edição No início da execução do emulador mostra o título Android, conforme você vê na figura acima. Depois, vem um outro título escrito “Android”, com um titulo cinza em animação. Isso demora em torno de 2 a 10 minutos (dependendo da sua máquina. É recomendável que você tenha no mínimo 512 MB de memória e um processador bem rápido para um bom desempenho da execução) para a aplicação ser exibida, mesmo sendo essa aplicação algo muito simples. Passado o tempo que citei acima, será mostrada a nossa aplicação e também algumas mensagens, é só cancela-las. Quando o emulador chegar nessa tela abaixo: 36 Apostila de Android – Programando passo a passo 4ª Edição Clique no botão redondo com o titulo “MENU” para desbloquear a tela e a aplicação continuará a processar até ser carregada com sucesso, conforme mostra a figura abaixo: 37 Apostila de Android – Programando passo a passo 4ª Edição Esse emulador já vem com uma série de recursos como Navegador, Aplicações de demonstração, Mapas, Lista de contatos e etc. Se você neste exato momento fechou o emulador após a execução da aplicação, vou te dizer uma coisa: “Não era para você ter feito isso”. Se você esperou muito tempo para ver essa aplicação em execução, ao executar novamente a aplicação, você vai esperar o mesmo tempo. Nessa situação, ao executar pela primeira vez o emulador, e caso vá executar outros programas, minimize o emulador ao invés de fechar, pois se você esperou muito tempo para executar esse programa, com ele minimizado, ao executar um outro programa, o eclipse vai fazer uso do emulador já aberto em vez de abrir outro, com isso, a aplicação levará em torno de 7 a 12 segundos em média para ser executada. Nunca esqueça isso! Vamos modificar essa aplicação. Minimize o emulador e vamos abrir o arquivo “main.xml”. Na tag TextView que já havia explicado a vocês, possui um atributo chamado android:text, onde nele defino o título que será exibido, modifique agora essa propriedade com o seguinte valor (título), conforme o código abaixo: android:text="Fala cara, beleza ???" Feito isso, salve a aplicação e veja seu “preview”, clicando na seção “layout”. Veja seu preview abaixo: 40 Apostila de Android – Programando passo a passo 4ª Edição Criado o projeto, vamos no arquivo “main.xml” desse projeto e como havia mencionado, vamos agora fazer uso do utilitário que ira nos ajudar a construir a nossa aplicação da forma rápida. Pelo nome do projeto, podemos ver que essa aplicação é uma aplicação de calculo. Essa aplicação vai ler dois números inteiros e no final, irá mostrar a soma deles, simples. Vamos no arquivo “main.xml” desse projeto e vamos fazer as seguintes modificações. Observe que logo de início, ele mostra a frase “Hello World,AppSoma!” na widget TextView, como mostra a figura abaixo: Bom, clique na frase para selecioná-la pois, iremos modificar seu conteúdo. Se você observar abaixo existe uma guia chamada “Properties”, que indica a propriedade de um componente devidamente em edição, conforme mostra a figura abaixo: 41 Apostila de Android – Programando passo a passo 4ª Edição Se você notou, quando clicamos no componente mostrou uma série de valores na propriedade, isso indica os atributos daquele componente. Agora vamos na guia “Properties” encontrar uma propriedade chamada “Text”, que indica o conteúdo assumido pelo componente TextView, que no caso é a frase “Hello World,AppHello!”. Depois de encontrar a propriedade Text, substitua o valor corrente pela frase “Digite o primeiro número” e depois disso, de ENTER. O resultado você confere na figura abaixo: 42 Apostila de Android – Programando passo a passo 4ª Edição Ótimo, agora vamos inserir a widget EditText, que funciona como um campo para preenchermos com valores número ou alfanuméricos. Como vamos adicionar esse componente? Se você observar na figura acima, existe uma seção chamada “Views”, é nela onde ficam os componentes que constituem uma aplicação Android. Primeiramente, encontre o componente (widget) EditText, depois de encontra-lo, simplesmente você vai clicar sobre ele e arrastar até a tela do dispositivo, para adiciona-lo. O resultado você confere na figura abaixo: 45 Apostila de Android – Programando passo a passo 4ª Edição Depois de feito todas as alterações, o layout da aplicação deve estar de acordo com a figura abaixo: Beleza, agora vamos abrir o código do arquivo “AppSoma.java”, para acessar via código Java os componentes que adicionamos via XML. Siga os passos aqui descritos para você ver como esse processo é feito. Após a linha import android.os.Bundle; Digite: import android.widget.*; import android.view.*; import android.app.*; Antes da linha: @Override Digite: EditText ednumero1,ednumero2; Agora vamos à explicação do código acima. Como você pode ver , os widgets também podem ser usados no nosso código Java. Se no código XML eu possuir um widget do tipo EditText, para acessar esse componente pelo Java, é preciso fazer uso da classe EditText. Cada widget no XML possui o seu 46 Apostila de Android – Programando passo a passo 4ª Edição respectivo em classe Java, logo, se possui um widget Button, para acessá-lo devo fazer uso da classe Button e assim vai. Agora, após a linha: setContentView(R.layout.main); Digite as seguintes linhas de código: ednumero1 = (EditText) findViewById(R.id.numero1); ednumero2 = (EditText) findViewById(R.id.numero2); Button btsomar = (Button) findViewById(R.id.btsomar); Agora vou explicar as linhas acima. A linha: ednumero1 = (EditText) findViewById(R.id.numero1); Faz referência ao primeiro EditText, através do método findViewById com o parâmetro “R.id.numero1”. Ah, se lembra o nome da primeira EditText que está no código XML? Ela se chama “@+id/numero1”. Vamos entender, observe que para fazer referência ao EditText pelo método findViewById eu passei o parâmetro R.campo.num1. Já na segunda linha, para fazer a referência à segunda EditText, cujo nome é “@+id/numero2”, pelo método findViewById, passei o parâmetro R.id.numero2. Como você pode ver, estou fazendo uso da classe R, que funciona como interface entre o código Java e o arquivo XML. O procedimento é o mesmo para o Button. Agora iremos adicionar um evento Click, no nosso Button, pois quando eu clicar no botão, ele deverá mostrar a soma dos números. Então, logo após a linha: Button btsomar = (Button) findViewById(R.id.btsomar); Digite: btsomar.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { 47 Apostila de Android – Programando passo a passo 4ª Edição double num1 = Double.parseDouble(ednumero1.getText().toString()); double num2 = Double.parseDouble(ednumero2.getText().toString()); double res = num1 + num2; AlertDialog.Builder dialogo = new AlertDialog.Builder(AppSoma.this); dialogo.setTitle("Aviso"); dialogo.setMessage("Soma:" + res); dialogo.setNeutralButton("OK", null); dialogo.show(); } }); Toda vez que eu clicar no botão, ele irá mostrar o resultado da soma na tela através de uma caixa de mensagem. Ótimo! Vamos executar a nossa aplicação? Para executar faça os mesmos procedimentos que já mostrei. O resultado da execução dessa aplicação você vê na figura abaixo: (Aplicação que soma números) OBS: Provavelmente durante a execução da aplicação ao entrar com um número, deve ter surgido no dispositivo um teclado virtual (como mostra a figura acima), para ocultar ele é só pressionar ESC. 50 Apostila de Android – Programando passo a passo 4ª Edição Ao final, o layout da nossa aplicação deve estar de acordo com a figura abaixo: Agora vamos modificar o arquivo “AppCompra.java“. O código desse arquivo será como o código que é exibido abaixo: package br.com.android; import android.app.AlertDialog; import android.os.Bundle; import android.widget.*; import android.view.*; import android.app.*; public class AppCompra extends Activity { CheckBox chkarroz,chkleite,chkcarne,chkfeijao; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); chkarroz = (CheckBox) findViewById(R.id.chkarroz); chkleite = (CheckBox) findViewById(R.id.chkleite); chkcarne = (CheckBox) findViewById(R.id.chkcarne); chkfeijao = (CheckBox) findViewById(R.id.chkfeijao); Button bttotal = (Button) findViewById(R.id.bttotal); bttotal.setOnClickListener(new View.OnClickListener(){ 51 Apostila de Android – Programando passo a passo 4ª Edição public void onClick(View arg0) { double total =0; if(chkarroz.isChecked()) total += 2.69; if(chkleite.isChecked()) total += 5.00; if(chkcarne.isChecked()) total += 9.7; if(chkfeijao.isChecked()) total += 2.30; AlertDialog.Builder dialogo = new AlertDialog.Builder(AppCompra.this); dialogo.setTitle("Aviso"); //Defino o título dialogo.setMessage("Valor total da compra :" + String.valueOf(total)); //colocando a mensagem que vai ter dentro do Dialog dialogo.setNeutralButton("OK", null); //adicionando o botão de OK dialogo.show(); //mostrando o Dialog } }); } } Descrevendo o código do evento onClick : Dentro do evento eu crio uma variável chamada total que armazena o valor total da compra. Observe que eu tenho quatro estruturas if’s onde cada uma verifica se um determinado item foi marcado, se foi, incrementa o valor do item com o valor da variável total. No final mostro valor total das compras na tela. Vamos roda nossa aplicação? O resultado você confere na figura abaixo: 52 Apostila de Android – Programando passo a passo 4ª Edição (Aplicação simples de compras) 5.7) A widget RadioButton A widget RadioButton é um componente muito utilizado em opções de múltipla escolha, onde somente uma única opção pode ser selecionada. 5.8) Desenvolvendo uma aplicação de cálculo de salário (Com RadioButton) Bom, agora vamos fazer uma outra aplicação. Essa aplicação que vamos desenvolver agora consiste em um sistema que vai ler o salário de um funcionário e vai permitir que você escolha o seu percentual de aumento que pode ser de 40% , 45% e 50% e no final o sistema irá mostrar o salário reajustado com o novo aumento. Bom, vamos lá! Crie um novo projeto Android com os seguintes dados: Project Name: CalculoDeSalario Package Name : br.com.android Create Activity: AppSalario Application Name: Cálculo do salário Min SDK Version: 7 55 Apostila de Android – Programando passo a passo 4ª Edição Após selecionar a opção “Add’, será aberta uma caixa de dialogo com uma lista completa de componentes para você poder adicionar sobre a RadioGroup. No momento, só iremos adicionar RadioButtons nele logo, selecione o componente RadioButton, conforme mostra a figura abaixo: Depois disso é só clicar em “OK” para que o componente seja inserido na RadioGroup. Com o RadioButton selecionado, modifique as seguintes propriedades abaixo: Propriedade Valor Text 40% Id @+id/rb40 56 Apostila de Android – Programando passo a passo 4ª Edição Agora vamos adicionar mais duas RadioButtons dentro da nossa RadioGroup “rgopcoes”, para isso repita os mesmos procedimentos acima. Depois de adicionados as RadioButtons, modifique as propriedades deles, conforme abaixo: RadioButton1 Propriedade Valor Text 45% Id @+id/rb45 RadioButton2 Propriedade Valor Text 50% Id @+id/rb50 Agora, vamos adicionar uma Button, simplesmente clicando e arrastando o componente na tela. Agora um detalhe, é para colocar esse componente na tela do dispositivo mas FORA da área do RadioGroup. Depois de colocar o Button, modifique as propriedades abaixo: Propriedade Valor Text Calcular novo salário Id @+id/btcalcular Layout_width fill_parent Depois de inserir todos os componentes citados, o layout da aplicação deve ficar de acordo com a figura abaixo: 57 Apostila de Android – Programando passo a passo 4ª Edição No arquivo “AppSalario.java”, coloque o código abaixo: package br.com.android; import android.app.Activity; import android.os.Bundle; import android.widget.*; import android.view.*; import android.app.*; public class AppSalario extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btcalcular = (Button) findViewById(R.id.btcalcular); btcalcular.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { double salario, novo_sal; EditText edsalario = (EditText) findViewById(R.id.edsalario); salario = Double.parseDouble(edsalario.getText().toString()); RadioGroup rg = (RadioGroup) findViewById(R.id.rgopcoes); int op = rg.getCheckedRadioButtonId(); if(op==R.id.rb40) novo_sal = salario + (salario * 0.4); else if(op==R.id.rb45) novo_sal = salario + (salario * 0.45); else novo_sal = salario + (salario * 0.5); AlertDialog.Builder dialog = new AlertDialog.Builder(AppSalario.this); dialog.setTitle("Novo salário"); 60 Apostila de Android – Programando passo a passo 4ª Edição Package Name : br.com.android Create Activity: AppSalario Application Name: Cálculo do salário Min SDK Version: 7 Nessa segunda versão da aplicação, vamos fazer uso da widget Spinner. Carregue o arquivo “main.xml” e faça os mesmos procedimentos do programa anterior, só que ao invés de adicionar a RadioGroup com os RadioButtons, você vai inserir somente um componente Spinner. Segue abaixo as propriedades que você precisa modificar: Propriedade Valor Id @+id/spnopcoes Layout_width fill_parent Seguindo os passos, a aplicação deve estar de acordo com a figura abaixo: Agora no arquivo “AppSalario.java”, coloque o seguinte código: package br.com.android; import android.app.Activity; 61 Apostila de Android – Programando passo a passo 4ª Edição import android.os.Bundle; import android.widget.*; import android.view.*; import android.app.*; public class AppSalario extends Activity { private static final String[] percentual = {"De 40%","De 45%","De 50%"}; ArrayAdapter<String> aPercentual; Spinner spnsal; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btmostrar = (Button) findViewById(R.id.btcalcular); aPercentual = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, percentual); spnsal = (Spinner) findViewById(R.id.spnopcoes); spnsal.setAdapter(aPercentual); btmostrar.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { double salario=0, novo_sal = 0; EditText edsalario = (EditText) findViewById(R.id.edsalario); salario = Double.parseDouble(edsalario.getText().toString()); switch(spnsal.getSelectedItemPosition()) { case 0: novo_sal = salario + (salario * 0.4); break; case 1: novo_sal = salario + (salario * 0.45); break; case 2: novo_sal = salario + (salario * 0.5); break; } AlertDialog.Builder dialogo = new AlertDialog.Builder(AppSalario.this); dialogo.setTitle("Novo salário"); dialogo.setMessage("Seu novo salário é : R$" + String.valueOf(novo_sal)); dialogo.setNeutralButton("OK", null); dialogo.show(); } 62 Apostila de Android – Programando passo a passo 4ª Edição }); } } Observando o código do programa acima, podemos ver que ele é similar o da primeira versão do aplicativo, porém, quero comentar alguns códigos interessantes desta aplicação. Observe que foi necessário declarar um “array” de “String” chamado percentual, conforme mostra o código abaixo: private static final String[] percentual = {"De 40%","De 45%","De 50%"}; Este “array” possui três elementos, correspondentes ao percentual do aumento do salário. Também foi necessário declarar um objeto do tipo ArrayAdapter chamado aPercentual. Esse objeto serve para fazer referencia ao “array” percentual. Dentro do método OnCreate, existe uma linha de código abaixo: aPercentual = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, percentual); Que cria uma instância da classe ArrayAdapter e atribuo essa instância ao objeto aPercentual, onde carrego nele o “array” de Strings percentual. Logo depois, vem a instrução: spnsal.setAdapter(aPercentual); Onde carrego no objeto do tipo Spinner uma lista de opções de percentual. Vamos agora dentro do evento OnClick do objeto Button. Dentro existe o código mostrado abaixo: switch(spnsal.getSelectedItemPosition()) { case 0: novo_sal = salario + (salario * 0.4); break; case 1: novo_sal = salario + (salario * 0.45); break; case 2: novo_sal = salario + (salario * 0.5); break; } Que verifica qual será o novo salário , de acordo com a opção selecionada no objeto Spinner. Vamos entender esse código. Observe que o objeto spnsal, possui um método chamado getSelectedItemPosition, que é responsável por retornar o índice do item selecionado, sabendo se que o primeiro item possui índice zero, o segundo possui índice um e assim por diante. Observe que dentro dessa estrutura eu 65 Apostila de Android – Programando passo a passo 4ª Edição import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.widget.*; import android.widget.AdapterView.OnItemClickListener; import android.view.*; public class AppLista extends Activity { public ListView lista; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, contatos); lista = (ListView) findViewById(R.id.lstcontatos); lista.setAdapter(adapter); lista.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { if(lista.getSelectedItem()!=null) { AlertDialog.Builder dialogo = new AlertDialog.Builder(AppLista.this); dialogo.setTitle("Contato selecionado"); dialogo.setMessage(lista.getSelectedItem().toString()); dialogo.setNeutralButton("OK", null); dialogo.show(); } } }); } static final String[] contatos = new String[] { "Alline","Lucas","Rafael","Gabriela","Silvana" }; } 66 Apostila de Android – Programando passo a passo 4ª Edição Vamos analisar alguns códigos acima. A linha: static final String[] contatos = new String[] { "Alline","Lucas","Rafael","Gabriela","Silvana" }; Cria uma constante chamada contatos, onde nela coloco alguns nomes. Essa constante vai ser utilizada pela nossa lista. Para que eu possa carregar dos dados em uma ListView, preciso fazer uso da classe ArrayAdapter, como mostra a instrução abaixo: ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout. simple_list_item_1, contatos); A instrução mostrada acima cria uma instância da classe ArrayAdapter chamada adapter onde carrego nela o vetor de Strings da constante contatos. A instrução: lista.setAdapter(adapter); Carrega os valores para a ListView, que está contido o objeto adapter. Como havia falado, quando se clica em um item, o sistema mostraria uma mensagem do item selecionado. Isso é conseguido fazendo uso da interface OnItemClickListener, como mostra a instrução abaixo: lista.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) { if(lista.getSelectedItem()!=null) AlertDialog.Builder dialogo = new AlertDialog.Builder(AppLista.this); dialogo.setTitle("Contato selecionado"); dialogo.setMessage(lista.getSelectedItem().toString()); dialogo.setNeutralButton("OK", null); dialogo.show(); } }); Toda vez que clicarmos em um item da lista, o método onItemClick será disparado e será executado o comando abaixo: if(lista.getSelectedItem()!=null) { AlertDialog.Builder dialogo = new AlertDialog.Builder(AppLista.this); dialogo.setTitle("Contato selecionado"); 67 Apostila de Android – Programando passo a passo 4ª Edição dialogo.setMessage(lista.getSelectedItem().toString()); dialogo.setNeutralButton("OK", null); dialogo.show(); } Que exibe o nome do item selecionado, se ele estiver selecionado. A obtenção do item clicado e feita chamando o método getSelectedItem() . Porém, como ele retorna um tipo Object, preciso converter para String o item clicado, através do método toString. Vamos executar a aplicação. O resultado você vê na figura abaixo: (Aplicação de lista de contatos) 5.12) A widget Imageview A widget ImageView é um componente que permite que visualizemos imagens dentro dele. As imagens suportadas por esse componente são imagens no formato JPEG, GIF e PNG. 5.13) Desenvolvendo uma aplicação que visualiza imagens (Com ImageView) Agora vamos desenvolver uma aplicação que visualiza imagens, usando o componente ImageView. Agora crie um novo projeto conforme os dados abaixo: 70 Apostila de Android – Programando passo a passo 4ª Edição Agora nessa estrutura “LinearLayout’ que inserimos, vamos modificar a seguinte propriedade abaixo: Propriedade Valor Orientation horizontal Agora dentro da estrutura “LinearLayout” que configuramos acima, vamos inserir os seguintes componentes, na seqüência (use o mesmo procedimento que fiz para inserir a segunda estrutura “LinearLayout”): ImageView Propriedade Valor Id @+id/imagem Src @drawable/foto1 Bom antes de prosseguir, quero explicar a propriedade “Src”. Nessa propriedade definimos a imagem corrente que irá aparecer na tela que é especificada pela notação “@drawable/foto1”, irei explicar essa notação. Se você notou, quando importamos as duas imagens que seriam utilizadas pelo nosso programa, essas imagens ficaram dentro do diretório “drawable-mdpi” certo ? Porém, quando especificamos pela propriedade “Src” o nome do diretório das imagens sempre será @drawable. Outro detalhe: Quando especificamos o nome do arquivo de imagem, o nome do arquivo não pode ter a extensão dele, isso é regra. TextView Propriedade Valor Id @+id/txtinfo Text Foto 1 Seguindo os passos acima, o resultado do layout deve ficar de acordo com a figura abaixo: 71 Apostila de Android – Programando passo a passo 4ª Edição Agora vamos colocar na seqüência dois buttons, só que esses dois componentes vão estar dentro da primeira estrutura LinearLayout, ou seja , da estrutura principal. Segue abaixo as propriedades que precisam ser modificadas: Button1 Propriedade Valor Id @+id/btimagem1 Text Exibir foto 1 Layout_width fill_parent Button2 Propriedade Valor Id @+id/btimagem2 Text Exibir foto 2 Layout_width fill_parent Depois de seguir todos os passos descritos acima, a aplicação tem que estar de acordo com a figura abaixo: 72 Apostila de Android – Programando passo a passo 4ª Edição Agora no arquivo AppImage.java coloque o código abaixo: package br.com.android; import android.app.Activity; import android.os.Bundle; import android.view.*; import android.widget.*; public class AppImagem extends Activity { ImageView imagem; TextView txt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btfoto1 = (Button) findViewById(R.id.btimagem1); Button btfoto2 = (Button) findViewById(R.id.btimagem2); imagem = (ImageView) findViewById(R.id.imagem); txt = (TextView) findViewById(R.id.txtinfo); btfoto1.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { imagem.setImageResource(R.drawable.foto1); txt.setText("Foto 1"); } }); 75 Apostila de Android – Programando passo a passo 4ª Edição 5.15) Desenvolvendo uma aplicação que visualiza imagens (Com Gallery) Bom, vamos a nossa aplicação. Crie um novo projeto de acordo com os dados abaixo: Project Name: GaleriaDeImagens Package Name : br.com.android Create Activity: AppGallery Application Name: Galeria de Imagens Min SDK Version: 7 Depois de criado o projeto, coloque na pasta de imagens do android (res/drawable-mdpi), três imagens que se encontram dentro da pasta “GALLERY”, que acompanham este material. O nome dos arquivos são “imagem1.jpg”, ”imagem2.jpg” e “imagem3.jpg”. Agora vamos criar uma classe chamada “ImageAdapter”, que será uma classe iremos utilizar em nossa aplicação e essencial para o funcionamento do componente Gallery. Siga os passos abaixo: Vá no menu File/New/Class, conforme mostra a figura abaixo: Agora, preencha os dados abaixo: Source folder : GaleriaDeImagens/src Package: br.com.android Name: ImageAdapter 76 Apostila de Android – Programando passo a passo 4ª Edição Seguindo os passos acima, os dados devem estar de acordo com a figura abaixo: Se estiver tudo OK, é só pressionar o botão “Finish”, para que a classe possa ser criada e logo em seguida coloque o código abaixo: package br.com.android; import android.content.Context; import android.view.*; import android.widget.*; public class ImageAdapter extends BaseAdapter { private Context myContext; /* Neste array são colocadas as imagens a serem exidas no componente Gallery .*/ private int[] myImageIds = { R.drawable.imagem1, R.drawable.imagem2, R.drawable.imagem3, }; public ImageAdapter(Context c) { this.myContext = c; } public int getCount() { return this.myImageIds.length; } 77 Apostila de Android – Programando passo a passo 4ª Edição public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(this.myContext); i.setImageResource(this.myImageIds[position]); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setLayoutParams(new Gallery.LayoutParams(150, 150)); return i; } public float getScale(boolean focused, int offset) { return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset))); } } Observem que dentro desta classe existe um array chamado “myImageIds”, onde eu armazeno as imagens a serem visualizadas no componente. Agora , carregue o arquivo main.xml e modifique o conteúdo da TextView com a frase: “Visualização de Imagens” e em seguida, insira no dispositivo o componente Gallery. Modifique as propriedades do componente Gallery conforme é mostrado abaixo: Propriedade Valor Id @+id/gallery Layout_width fill_parent Feito isso, vamos no arquivo “AppGallery.java” , e vamos modifica-lo com o seguinte código abaixo: package br.com.android; import android.app.Activity; import android.os.Bundle; import android.widget.*; public class AppGallery extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ((Gallery) findViewById(R.id.gallery)) .setAdapter(new ImageAdapter(this)); } 80 Apostila de Android – Programando passo a passo 4ª Edição public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { imagem.setImageResource(myImageIds[arg2]); Toast.makeText(getBaseContext(), "Figura " + (arg2 + 1) + " selecionada", Toast.LENGTH_SHORT).show(); } }); } } Quais foram as modificações desse programa? Nesse programa foi adicionado um componente chamado ImageView, que faz referência ao componente ImageView no arquivo XML, como mostra o código abaixo: ImageView imagem; Também na aplicação adicionamos o array que contém todas as referências das imagens contidas no projeto, conforme mostra o código abaixo: private int[] myImageIds = { R.drawable.imagem1, R.drawable.imagem2, R.drawable.imagem3, }; Dentro do método onCreate foi feito uma referência ao componente ImageView contido no XML e definimos o evento OnItemClickListener , do componente Gallery. Vamos analisar seu código abaixo: imagem.setImageResource(myImageIds[arg2]); Toast.makeText(getBaseContext(), "Figura " + (arg2 + 1) + " selecionada", Toast.LENGTH_SHORT).show(); A primeira instrução carrega a imagem selecionada no componente Gallery no ImageView, através do método setImageResource, cujo parâmetro é o valor do índice do vetor. A segunda instrução fazendo uso do método makeText, da classe Toast, cuja finalidade é mostrar uma pequena mensagem na tela em um tempo curto. 81 Apostila de Android – Programando passo a passo 4ª Edição No primeiro parâmetro desse método sempre passamos o valor getBaseContext(). No segundo parâmetro, passamos o conteúdo a ser exibido na tela. No terceiro parâmetro, definimos o tempo de exibição da mensagem na tela. Execute a aplicação. O resultado você vê na figura abaixo: (Aplicação da imagens otimizada) 5.16) A widget ProgressBar Agora será mostrado uma widget do Android que consiste em uma ProgressBar (Barra de progresso). Ela é muito utilizada quando queremos indicar algum andamento em processo. Por exemplo, quando ocorre a instalação de um programa ou quando se faz um download de um arquivo normalmente é mostrado aquela barra de porcentagem que indica em porcentagem, o andamento daquele processo. Aquilo é uma barra de progresso. 5.17) Desenvolvendo uma aplicação que simula um download Para demonstrar o uso do componente ProgressBar, criaremos uma aplicação que vai simular um download, onde o processo desse download será 82 Apostila de Android – Programando passo a passo 4ª Edição feito por esse componente. Vamos criar um novo projeto em Android, com os seguintes dados: Project Name: ExemploProgressBar Package Name : br.com.android Create Activity: AppProgressBar Application Name: Exemplo com ProgressBar Min SDK Version: 7 Agora no arquivo de layout modifique o conteúdo da TextView com a seguinte frase: “Status download”. Em seguida, adicione os seguintes componentes na seqüência: ProgressBar Propriedade Valor Id @+id/progresso Layout_width fill_parent Style ?android:attr/progressBarStyleHorizontal Max 100 Button Propriedade Valor Id @+id/progresso Layout_width fill_parent Text Efetuar download Seguindo os passos acima, a aplicação deve estar de acordo com a aplicação da figura abaixo: 85 Apostila de Android – Programando passo a passo 4ª Edição Handler h; Aqui é declarado uma variável do tipo Thread, e outra do tipo Handler (que consiste também em uma Thread). A variável do tipo Handler é utilizada quando queremos manipular os widgets em tempo de execução dentro de uma Thread. Vamos para o evento onClick do botão. Veja o código abaixo: public void onClick(View v) { h = new Handler(); t = new Thread(AppProgressBar.this); t.start(); } No evento onClick, eu crio uma instância da classe Handler e atribuo essa instância à variável “h”. Logo após, eu crio uma instância da classe Thread e atribuo essa instância à variável “t” e depois, eu disparo a Thread pelo método start, executando assim o método run. Vamos ao código do método run. public void run() { i=1; try { while(i<=100) { Thread.sleep(100); h.post(new Runnable(){ public void run() { p.setProgress(i++); } }); }}catch(Exception e) {} } Vamos analisar o código dentro do “loop”. A instrução: Thread.sleep(100); Gera um atraso de 100 milissegundos. Logo após vem a instrução: h.post(new Runnable(){ public void run() { p.setProgress(i++); } }); A instrução acima, é responsável por incrementar o valor de progresso da widget ProgressBar. Quando usamos uma Thread e queremos modificar o valor de algum componente (widget), precisamos disparar um método post e dentro dela, criar uma instância da interface Runnable, com o método run onde nele, é executado a instrução responsável por modificar o valor de um componente. 86 Apostila de Android – Programando passo a passo 4ª Edição Vamos executar a nossa aplicação . O resultado você vê na figura abaixo: (Aplicação que simula um download) 5.18) A widget DatePicker O componente DatePicker funciona como se fosse um calendário onde especificamos ou consultamos uma determinada data. 5.19) Desenvolvendo uma aplicação de calendário Crie um novo projeto com os seguintes dados abaixo: Project Name: Calendario Package Name : br.com.android Create Activity: AppCalendario Application Name: Calendário Min SDK Version : 7 Depois de carregar o layout do arquivo “main.xml”, modifique o conteúdo da TextView com a frase : Selecione a data. Agora, insira os seguintes componentes na seqüência: DatePicker Propriedade Valor Id @+id/data Layout_width fill_parent 87 Apostila de Android – Programando passo a passo 4ª Edição Button Propriedade Valor Id @+id/btdata Layout_width fill_parent Text Mostrar data Seguindo os passos acima, a aplicação deve estar de acordo com a figura abaixo: E por último, vá no arquivo “AppData.java” e coloque o seguinte código abaixo: package br.com.android; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.view.View; import android.widget.*; public class AppCalendario extends Activity { DatePicker dp; @Override public void onCreate(Bundle savedInstanceState) { 90 Apostila de Android – Programando passo a passo 4ª Edição E por último, vá no arquivo “AppTime.java” e coloque o seguinte código abaixo: package br.com.android; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.view.View; import android.widget.*; public class AppTime extends Activity { TimePicker tp; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btmostrar = (Button) findViewById(R.id.btmostrar); tp = (TimePicker) findViewById(R.id.hora); btmostrar.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { 91 Apostila de Android – Programando passo a passo 4ª Edição AlertDialog.Builder dialogo = new AlertDialog.Builder(AppTime.this); dialogo.setMessage("Hora selecionada : " + String.valueOf(tp.getCurrentHour() + 1) + ":" + String.valueOf(tp.getCurrentMinute())); dialogo.setNeutralButton("OK", null); dialogo.setTitle("Hora"); dialogo.show(); } }); } } Vamos executar a nossa aplicação . O resultado você vê na figura abaixo: (Aplicação que demonstra o uso do TimePicker) 6) Mudando de layouts Até agora fizemos aplicações em Android que utilizassem um único layout. Agora vamos fazer aplicações Android que utilizem mais de um layout. Vamos criar um novo projeto de demonstração chamado TrocaDeLayouts, conforme os dados abaixo: Project Name: TrocaDeLayouts Package Name : br.com.android 92 Apostila de Android – Programando passo a passo 4ª Edição Create Activity: AppLayout Application Name: Mudando de layouts Min SDK Version: 7 Carregue o arquivo de layout “main.xml” e modifique o conteúdo da TextView, com a seguinte frase : “Você está na tela principal”. Agora adicione um Button e modifique as seguintes propriedades: Button Propriedade Valor Id @+id/bttela2 Layout width fill_parent Text Ir pata tela 2 Seguindo os passos acima, a aplicação deve estar de acordo com a figura abaixo: Ótimo! Agora vamos criar um novo arquivo chamado “tela2.xml”, que vai estar também dentro da pasta “layout”. Siga os passos abaixo: Clique com o botão direito sobre a pasta “layout” e selecione a opção “New/File”, conforme mostra a figura abaixo: 95 Apostila de Android – Programando passo a passo 4ª Edição Depois disso, modifique o arquivo “AppLayout.java”, conforme o código abaixo: package br.com.android; import android.app.Activity; import android.os.Bundle; import android.view.*; import android.widget.*; public class AppLayout extends Activity { public void CarregaTelaPrincipal() { setContentView(R.layout.main); Button bttela2 = (Button) findViewById(R.id.bttela2); bttela2.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { CarregaTela2(); } }); } public void CarregaTela2() { setContentView(R.layout.tela2); 96 Apostila de Android – Programando passo a passo 4ª Edição Button bttelaprincipal = (Button) findViewById(R.id.bttelaprincipal); bttelaprincipal.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { CarregaTelaPrincipal(); } }); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CarregaTelaPrincipal(); } } Observem que nesta classe eu criei dois métodos : CarregaTelaPrincipal e CarregaTela2. Toda aplicação que utilize mais de um layout, o carregamento dos layouts e de seus respectivos widgets devem estar separados em funções desenvolvidas para esse propósito. Logo, o método CarregaTelaPrincipal carrega o layout principal e seus respectivos componentes, o mesmo válido para o método CarregaTela2, que carrega o layout da tela 2 e seus respectivos componentes. Feito isso, execute a aplicação. Veja o resultado abaixo: (Aplicação no layout principal) (Aplicação no segundo layout) 97 Apostila de Android – Programando passo a passo 4ª Edição 6.1) Desenvolvendo uma aplicação de cadastro Agora vamos desenvolver uma aplicação de cadastro. Essa aplicação consiste em um cadastro de pessoas onde posso cadastrar dados como: Nome, Profissão e Idade. Essa aplicação vai fazer uso de três layouts: O layout principal: Esse layout dará acesso ao layout de cadastro e o layout de visualização de dados. O layout de cadastro: Nesse layout é onde será efetuado o cadastro dos dados da pessoa. O layout de visualização de dados: Nesse layout é onde serão visualizados os dados cadastrados. Se nenhum dado foi cadastrado, será exibida uma mensagem informando essa situação. Nessa aplicação, para armazenar os dados, eu faço um de uma estrutura de dados FIFO ou Fila. Nessa estrutura, os dados são armazenados em seqüência, e acessados em seqüência , ou seja, o primeiro dado a entrar será o primeiro a ser exibido. Bom, vamos construir a nossa aplicação. Crie um novo projeto com os dados abaixo: Project Name: AplicacaoDeCadastro Package Name : br.com.android Create Activity: AppCadastro Application Name: Aplicação de Cadastro Min SDK Version: 7 Dentro da pasta “res/drawable-mdpi”, coloque uma figura , que se encontra dentro da pasta “ICONE” que acompanha este material. Ela se chama “profile.png” e representa o ícone da nossa aplicação. Agora carregue o arquivo “main.xml” e APAGUE a TextView que se encontra na tela do layout do dispositivo. O procedimento já foi mostrado. Agora coloque os seguintes componentes, na seqüência:
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved