Apostila de

Programando Passo-a-Passo

De : Luciano Alves (lucianopascal@yahoo.com.br)

Índice analítico

Apresentação ..................................................................................................... 3 Introdução .......................................................................................................... 4 Instalando o Eclipse e o Android ..................................................................... 4 Criando a nossa primeira aplicação em Android......................................... 10 Usando Widgets............................................................................................... 18 Desenvolvendo uma aplicação que soma números....................................... 18 Desenvolvendo uma aplicação simples de compras...................................... 23 Desenvolvendo uma aplicação de cálculo de salário ..................................... 26 Desenvolvendo uma aplicação de lista telefônica .......................................... 31 Desenvolvendo uma aplicação que visualiza imagens .................................. 34 Mudando de layouts ........................................................................................ 38 Desenvolvendo uma aplicação de cadastro................................................... 42 Lista de atributos............................................................................................. 53 Conclusão ........................................................................................................ 58

2

Apresentação
Esta apostila tem por objetivo mostrar de modo fácil como programar na nova plataforma para dispositivos móveis da Google (Android) usando o eclipse, por meio de vários programas e exemplos bem explicados.

3

Introdução
O Android é a nova plataforma do 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 30 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.

Instalando o Eclipse e o Android
Para a elaboração desse material, eu fiz o uso do Eclipse Europa (Eclipse 3.3.1.1 para Windows) e o SDK do Android versão m5-rc15 e o plugin do Android para o Eclipse ADT-0.4.0. 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. Deixo aqui os links para download dos itens citados acima: SDK do Android e o plugin do Android (mesmas versões citadas acima ou superiores): http://code.google.com/android/download.html Eclipse Europa (ou superior) http://www.eclipse.org/downloads/ 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, entre no Site da Sun e faça o seu download. Aqui está o link 4

http://java.sun.com/javase/downloads/index.jsp Depois de obter os programas e plugins citados acima, o primeiro programa e ser instalado é o eclipse. Para instalar o eclipse, simplesmente descompacte-o em um local desejado. Agora vamos instalar o SDK Android. É o mesmo procedimento do eclipse, descompactar em um local apropriado. Por ultimo, vamos instalar o plugin do Android. Para isso, descompacte-o o plugin do Android em um local desejado. Agora execute o eclipse, se você estiver executando-o pela primeira vez, ele irá pedir para definir uma pasta padrão (um Workspace). Defina a pasta e continue o carregamento do eclipse. Depois de carregado, se for a primeira vez, feche a Janela do “Welcome” (Bem-vindo). Agora vamos instalar o plugin do Android, vá no menu “Help / Softwares Updates / Find and Install”, conforme figura abaixo:

Selecione a opção “Search for new features to install” e clique no botão “Next”. Será exibida uma tela conforme a figura abaixo:

5

Pronto! O item foi inserido. Para ficar mais claro. clique no botão “New Local site” e indique o diretório do ADT já descompactado no local onde você extraiu.Feito isso. selecione este. dento do diretório ADT existem dois diretórios __MACOSX e um outro chamado ADTx.x .x. basta clicar no botão “OK”. clique em “OK” e será exibida uma caixa de diálogo conforme figura abaixo: Na caixa de diálogo acima. 6 . Agora é só clicar em “Finish”. conforme a figura abaixo. Feito isso.

como no caso nesta versão do plugin que utilizei.Depois de clicar em “Finish” na tela acima. Clique no sinal “+” e faça as seleções dos plugins de acordo com a próxima figura que é exibida a seguir. Caso você esteja utilizando uma outra versão do plugin você pode selecionar todas as opções desde nenhuma delas resulte em alguma mensagem de erro. 7 . o último item (Android Editors) não pode ser instalado pois requer a existência de um outro plugin. será mostrado uma nova tela conforme figura abaixo.

simplesmente clique no botão “Finish” e na próxima tela. e será exibida uma tela de licensa de software. que é mostrada na figura abaixo. clique no botão “Install All”. clique no botão “Next”. Nesta tela é só selecionar a opção “I accpet the terms in the license agreement” e clique no botão “Next”.Feito isso. 8 . Na próxima tela.

conforme a figura abaixo. recomendando ao usuário que ele reinicie o eclipse. 9 . selecione o item “Android”. será mostrada duas mensagens de erro. simplesmente clicando no botão “Browse. Após o eclipse ter reiniciado. se estiver (mostrando lá no topo o título Android) o diretório indica está correto. Aberta a caixa de diálogo.. se a sua tela está de acordo com a tela da figura abaixo.Após instalar os plugins. Vamos no menu “Window” / “Preferences”. Feito isso. vamos fazer agora as configurações para fazer conexão com o emulador do Android. será exibida uma mensagem. é só clicar em “OK”. Simplesmente clique no botão “Yes”.. Agora vamos indicar o local onde se encontra o emulador do Android.” e indicando o seu local onde foi instalado. ignore-as.

é só conferir na figura abaixo. Depois é só clicar em “Finish”. Depois de selecionar. Em Activity name digitaremos “AppHello” e em “Application name” digitaremos “App Hello World”. Selecion o projeto Android conforme figura abaixo. Vamos chamar o nosso projeto “Project name” de ProjetoAndroid. 10 . Em “Package name” vamos digitar “com.Criando a nossa primeira aplicação em Android Agora vamos criar um novo projeto Android indo no menu “File” / “New” / “Other”.android. clique em “Next”: Após clicar em “Next” na figura acima. será exibida uma tela conforme figura abaixo.hello”.

agora irei descrever a estrutura de um projeto Android. Observem que dentro da pasta ProjetoAndroid existe uma pasta chamada “src”.hello” (Esse pacote também é uma pasta). dentro dela é que ficam os códigos fonte java das aplicações.xml”. também conforme figura abaixo: Bom. simplesmente clicando no botão “+”. por padrão ele chama o arquivo “main.onCreate(icicle). Esse arquivo é a nossa aplicação Android. public class AppHello extends Activity { /** Called when the activity is first created. baseado nos layouts xml.layout. } } Diferentemente das aplicações comuns de Java. o método onCreate.java se encontra dentro do pacote “com.os. import android. Em Package Explorer.java (Veja o código abaixo): package com. setContentView(R. 11 . Dentro desse método ele invoca o método onCreate da super classe passando mesmo parâmetro (o icicle).Pronto! Nosso projeto foi criado.main). import android. Observem que o arquivo AppHello. logo após esse método.Activity. vem o método setContentView.android.hello. toda classe para aplicação Android deve ser derivada da classe Activity (Atividade) e possui como método principal. vamos dar uma olhada na estrutura do Projeto. */ @Override public void onCreate(Bundle icicle) { super. responsável por exibir a tela da minha aplicação .android. É só seguir a figura abaixo.Bundle.app. Vou descrever em detalhes o arquivo AppHello. aproveite e abra o arquivo AppHello.java .

ele irá exibir “Hello World. onde ficam armazenados todos os recursos utilizados pela aplicação. que representa um texto a ser exibido na tela . Normalmente esses valores estáticos devem ser armazenados no arquivo “strings. o Android é similar. logo todos os nosso componentes vão ser adicionados usando tags XML. existe uma chamada TextView. Veja o código desse arquivo abaixo : <?xml version="1.xml”. existe uma tag chamada LinearLayout. o arquivo de layout é o main. Por padrão.Dentro da pasta ProjetoAndroid existe um diretório chamado “res”. Dentro do diretório “res” existem três diretórios. Para quem conhece a combinação HTML + JavaScript.O diretório layout armazena todas os layouts da aplicação 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="Hello World. por padrão. por padrão os componentes são distribuídos na vertical pelo atributo android:orientation="vertical". 12 .XML”. responsável por organizar os componentes exibidos na tela. que é usada como ícone da aplicação Android. ele tem uma imagem chamada “Icon. AppHello".xml”.0" encoding="utf-8"?> <resources> <string name="app_name">App Hello World</string> </resources> Observem que dentro desse arquivo eu declaro um valor estático chamado app_name. AppHello” atrvés do atributo android:text="Hello World.android. . que descreverei agora: .png”. Veja o seu código abaixo: <?xml version="1. Dentro desta tag.xml. cujo valor é App Hello World. é a combinação de XML + Java.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas. que normalmente são arquivos “. Por padrão .O diretório drawable armazena todas as imagens que irei utilizar na minha aplicação. cada um deles com uma finalidade. AppHello" /> </LinearLayout> Observe que após o a primeira linha (prólogo xml).O diretório values armazena valores estáticos que podem ser utilizados por um arquivo “.

conforme a figura abaixo: 13 . A tag <application> possui o atributo android:icon. Dentro desta tag..android. É nele que ficam as definições referentes à aplicação.Observem que quando informamos o ícone.xml” . Observem agora a tag <activity>. Va no Run / Open Run Dialog. ela define uma atividade (Activity). Isso é obtido pela atribuição android:label="@string/app_name". logo.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> Observem algumas tags interessantes.hello"> <application android:icon="@drawable/icon"> <activity android:name=". Como havia falado a aplicação Android nada pais é do que a combinação Java + XML.java não pode ser modificado manualmente.android. eu possuo o atributo chamado android:label que define o título da minha aplicação. Veja o código dele abaixo: <?xml version="1. essa é a finalidade do arquivo R. Agora. Como havia citado anteriormente.category. Clique com o botão direito do mouse no item “Android Application” e selecione a opção New. Vamos executar nossa aplicação.MAIN" /> <category android:name="android. Logo. PNG).action. O título que será exibido e o valor que está armazenado no valor estático app_name. existe um arquivo chamado “AndroidManifest. Será aberta uma caixa de diálogo com vários itens. deve-se passar o valor “@drawable/icon” .com/apk/res/android" package="com. no qual especifico o ícone da aplicação. tenho que fazer interface com esse arquivo. se eu quiser manipular em tempo de execução um componente via Java.png” que será o ícone da minha aplicação. OBS: O arquivo R.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas. todas as imagens ficam no diretório drawable e nesse diretório existe um arquivo de chamado “icon.intent. Em breve vamos ver como. para usar esse ícone neste atributo. ele deve ser informado sem a extensão (nesse caso.AppHello" android:label="@string/app_name"> <intent-filter> <action android:name="android.java. como um código Java vai acessar um componente que está escrito em XML ? Ah. Ele é modificado automaticamente de acordo com as mudanças feitas no projeto.intent. esse arquivo é o sistema nervoso de uma aplicação em Android. ele funciona como uma “interface” entre o código Java e o código XML.Dentro da pasta ProjetoAndroid.

AppHello”. selecione a atividade “com. E por último. Normalmente. na propriedade name ao lado digite AppAndroid. com o nome de ProjetoAndroid. No início mostra o título Android. quando chega essa parte. siga a figura abaixo: Agora é só clicar em Run e rodar a aplicação. vê que o emulador é uma espécie de IPhone vermelho com umas teclas ao lado. conforme a figura abaixo. normalmente demora em torno de 2 a 10 minutos (dependendo da sua máquina.android. vem aquela bolinha vermelha que fica batendo de um lado para outro.Feito isso. É recomendável que você tenha no mínimo 512 MB de memória e um 14 . Depois. Em project selecione o projeto que criamos em clicando no botão Browse. Quando o emulador Android é executado.hello. em Activity. Pra vocês que estão executando pela primeira vez o emulador do Android. eu desmarco a opção “Send usage statistics to Google” e clico em “Proceed”. abre junto com ele uma caixa de dialogo. Qualquer dúvida.

processador bem rápido para um bom desempenho da execução) para a aplicação ser exibida . clique no botão “Force Close” ou com o mouse ou com o botão vermelho central situado no aparelho. nossa aplicação está rodando sem problemas. mesmo sendo essa aplicação algo muito simples. Passado o tempo que citei acima. será mostrada a nossa aplicação e também duas mensagens (ou uma dependendo de alguns casos). Uma demonstração dessa situação situa-se na figura abaixo: Pronto. Veja a figura abaixo: 15 . Se aparecer.

beleza ???" 16 . Lista de contatos e etc. Na tag TextView que já havia explicado a vocês. você vai esperar o mesmo. minimize o emulador ao invés de fechar.Esse emulador já vem com uma série de recursos como Navegador. com isso. Minimize o emulador e vamos abrir o arquivo “main. e caso vá executar outros programas. possui um atributo chamdado android:text. onde nele defino o título que será exibido.xml”. modifique agora essa prorpiedade com o seguinte valor (título). pois se você esperou muito tempo para executar esse programa. ao executar um outro programa. Aplicações de demonstração. ao executar pela primeira vez o emulador. conforme o código abaixo: android:text="Fala cara. com ele minimizado. Se você esperou muito tempo para ver essa aplicação em execução. Se você neste exato momento fechou o emulador após a execução da aplicação. Mapas. Nessa situação. ao executar novamente a aplicação. vou te dizer uma coisa: “Não era para você ter feito isso”. Nunca esqueça isso! Vamos modificar essa aplicação. o eclipse vai fazer uso do emulador já aberto em vez de abrir outro. a aplicação levará em torno de 7 a 12 segundos em média para ser executada.

xml.android. Abra novamente o arquivo main. o segundo TextView terá o título “Segunda Frase” e assim sucessivamente. o resultado é mostrado na figura abaixo: 17 . O resultado é mostrado abaixo: Vamos fazer mais uma outra modificação na nossa aplicação. no atributo android:text terá o título “Primeira frase”.xml : <?xml version="1. observe que ele possui um TextView certo ? Vamos colocar mais duas TextViews. salve o arquivo e execute novamente a aplicação. Veja como ficará o código do arquivo main. salve a aplicação e execute novamente a aplicação." /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Segunda Frase" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Terceira Frase???" /> </LinearLayout> Feito isso.Feito isso. a primeira TextView.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.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="Primeira Frase.

xml desse projeto e vamos fazer as seguintes modificações. Pelo nome do projeto. Crie um novo projeto Android com os seguintes dados: Project Name: ProjetoSoma Package Name : com. podemos ver que essa aplicação é uma aplicação de calculo. 18 . como o TextView. Vamos no arquivo main. ta entendo aos poucos como se faz aplicações Android ? Com ceretza que sim! Agora vamos aprofundar um pouco e fazer aplicações mais interessantes com o uso dos Widgets (componentes) existentes na plataforma Android. um RadioButton e etc.E aeh. Desenvolvendo uma aplicação que soma números Vamos criar agora uma aplicação que faça uso de um desses widgets. Essa aplicação vai ler dois números inteiros e no final. Quero que você copie e cole o abaixo e coloque no arquivo main. Usando Widgets O que são os widgets ? Os widgets são os componentes que compõem uma aplicação Android. um EditText . simples.xml desse projeto. vamos no arquivo main. um Button. irá mostrar a soma deles.xml.appsoma Activity Name: AppSoma Application Name: Soma Números Criado o projeto.android.

vamos a explicação do código acima. Logo abaixo dela . Observem que possuo uma TextView com o título “Digite o primeiro número”.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas. funciona como um identificador daquele componente.<?xml version="1.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="Digite o primeiro número" /> <EditText android:id="@+campo/num1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Digite o segundo número" /> <EditText android:id="@+campo/num2" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Resultado" /> <EditText android:id="@+campo/res" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+botao/btmostrar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Mostrar" /> </LinearLayout> Bom. que exibe um campo onde vou digitar o número. eu possuo uma widget do tipo EditText. Essa widget possui uma propriedade chamada android:id. 19 . ou seja. que serve para dar nome ao componente.

cujo nome é: “@+campo/num2”. após a linha: setContentView(R. os componentes que adicionamos via XML. para acessa-lo devo fazer uso da classe Button e assim vai. Antes da linha: @Override Digite: EditText ednum1.layout. import android.main). temos uma widget do tipo Button. Agora. Você irá entender essa notação mais a frente. Por último.os. o valor desse atributo é : “@+campo/num1”. cuja finalidade é mostrar um botão para podermos clicá-lo.edres. se possui um widget Button. Digite as seguintes linhas de código: 20 . para acessar via código Java. Agora vamos a explicação do código acima. Siga os passos aqui descritos para você como esse processo é feito. Depois temos um outro widget do tipo EditText.*.*. os widgets também podem ser usados no nosso código Java. agora vamos abrir o código do arquivo AppSoma. Como você pode ver . Ele possui um título com o valor “Mostrar” e seu nome é: “@+botao/btmostrar”. deve estar nesse formato: “@+<nome>/<nome>” Se observamos. Se no código XML eu possuir um widget do tipo EditText. cujo nome é: “@+campo/res”.O nome de um widget. para acessar esse componente pelo Java. temos um terceiro TextView com o título “Resultado”. É como se “campo” representasse um grupo e “num1” representasse o nome do componente. Após a linha import android. temos outra do tipo TextView com o título “Digite o segundo número”. Abaixo dessa widget. Beleza. logo. Digite: import android. Cada widget no XML possui o seu respectivo em classe Java. Abaixo dessa widget.Bundle. Depois temos um outro widget do tipo EditText.ednum2.widget.java. é preciso fazer uso da classe EditText.view.

Ótimo! Vamos executar a nossa 21 . Então.getText(). A linha: EditText ednum1 = (EditText) findViewById(R. através do método “findViewById” com o parâmetro “R.ednum1 = (EditText) findViewById(R.botao. se lembra o nome da primeira EditText que está no código XML? Ela se chama “@+campo/num1”.campo. Vamos entender. pelo método “findViewById”. cujo nome é “@+campo/num2”. Agora iremos adicionar um evento Click. no nosso Button.parseDouble(ednum2.setOnClickListener(new View. edres.parseDouble(ednum1.campo.num2.num1. Toda vez que eu clicar no botão. logo após a linha: Button btMostrar = (Button) findViewById(R.botao.btmostrar). O procedimento é o mesmo tanto para o terceiro EditText e o Button.valueOf(res)).btmostrar). Faz referência ao primeiro EditText. ele deverá mostrar a soma dos números. double res = num1 + num2.campo.toString()).num1”.campo.toString()). para fazer a referência à segunda EditText. pois quando eu clicar no botão. Button btMostrar = (Button) findViewById(R. Digite: btMostrar. que funciona como interface entre o código Java e o arquivo XML. edres = (EditText) findViewById(R. double num2 = Double. estou fazendo uso da classe R.setText(String.OnClickListener(){ public void onClick(View arg0) { double num1 = Double. ele irá mostrar o resultado na terceira EditText referente ao resultado da soma.campo.getText(). Agora vou explicar as linhas acima. Ah.num2).num1).campo. } }). Como você pode ver.num1). passei o parâmetro R. observe que para fazer referência ao EditText pelo método “findViewById” eu passei o parâmetro R. ednum2 = (EditText) findViewById(R. Já na segunda linha.res).campo.

esse método “getText” não retorna uma String.valueOf(res)). Como parâmetro. Isso é possível chamado o método setText. 22 . mais sim um tipo chamado “Editable”. Cria uma variável chamada num1 e atribui a ela o valor que está contido em num1. chamei o método toString de getText para que me retornasse uma string.getText().toString()). a soma dos valores. A descrição da próxima linha e a mesma. O resultado da execução dessa aplicação você vê na figura abaixo: Irei descrever o código do evento Click. Observem que chamo o método “getText” de ednum1 para retornar o conteúdo. que será disparado toda vez que o botão for clicado. O método “setOnClickLisneter” serve para definir um evento de Click a um componente.parseDouble(ednum1. criamos uma instância de OnClickListener e dentro dessa instância existe o método chamado “onClick”.aplicação ? Para executar faça os mesmos procedimentos que já mostrei. A linha: double num1 = Double. A linha: edres. fiz a conversão desse valor através do método valueOf da classe String. Diferente de muitos métodos de retorno de String. Eu faço uso do método parseDouble da classe Double pois o conteúdo é uma String. Retorna para a terceira EditText referenciada por edres. Por isso.setText(String. como o resultado está num tipo double e setText aceita somente parâmetros do tipo String e Editable.

a estrutura dela a similar ao da EditText e TextView.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="Escolha o seu produto" /> <CheckBox android:id="@+item/chkarroz" 23 .android.30) e Refrigerante coca-cola (R$ 2. Desenvolvendo uma aplicação simples de compras Agora vamos fazer uma outra aplicação Android. Siga os dados do projeto abaixo: Project Name: ProjetoCompras Package Name : com.00).00) . Bom . Arroz (R$ 2. ainda temos muitos mais pela frente.xml desse projeto e coloque o código abaixo: <LinearLayout xmlns:android="http://schemas. Feijão (R$ 2. conforme o código abaixo: <CheckBox android:id="@+campo/chkleite" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Leite" /> Bom. Nossa aplicação consiste em um simples sistemas de compras onde possuo cinco produtos. que funciona como uma opção onde podemos marcar e desmarcar. Leite (R$ 5. você já tem capacidade para fazer uma aplicação básica em Android. Carne (R$ 10. vamos criar um novo projeto chamado ProjetoCompras.69) . Essa aplicação vai fazer uso da widget CheckBox.appcompra Activity Name: AppCompra Application Name: Sistema de Compras Vamos no arquivo main. Nessa aplicação eu marco os itens que quero comprar e no final o sistema mostra o valor total das compras.00).Beleza! Com esse conhecimento obtido até agora.android. a gente vai fazer uso da CheckBox. Como havia dito.

android.onCreate(icicle).widget.*.java.android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Arroz (R$ 2. esse é o nosso layout com cinco CheckBoxs referentes ao itens de compra e um Button. 24 . public class AppCompra extends Activity { CheckBox chkarroz. import import import import android.00)" /> <CheckBox android:id="@+item/chkfeijao" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Feijão (R$ 2.30)" /> <CheckBox android:id="@+item/chkcoca" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Refrigerante Coca-Cola (R$ 2.app. Agora vamos modificar o arquivo AppCompra.view.Bundle.os.chkcarne. android.layout.00)" /> <Button android:id="@+botao/bttotal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Total da compra" /> </LinearLayout> Bom . android.chkcoca.chkfeijao.appcompra.main). @Override public void onCreate(Bundle icicle) { super.chkleite. O código desse arquivo será como o código que é exibido abaixo: package com.Activity.*.00)" /> <CheckBox android:id="@+item/chkcarne" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Carne (R$ 10.android. setContentView(R. que quando clicado mostra o valor total de compras.69)" /> <CheckBox android:id="@+item/chkleite" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Leite (R$ 5.

isChecked()) total += 10.chkfeijao). CharSequence buttonText.chkcoca). Vamos roda nossa aplicação ? O resultado você confere na figura abaixo: 25 . if(chkarroz.chkarroz = (CheckBox) findViewById(R.00. } }).botao.item. title : Corresponde ao título da mensagem iconId: Corresponde ao ícone a ser exibido.item. Observe que eu faço uso do método showAlert cuja finalidade é mostrar uma mensagem na tela. significa que não será usado nenhum ícone. int iconId. if(chkcarne. chkcarne = (CheckBox) findViewById(R. "OK". if(chkleite. message: Corresponde a mensagem cancelable: Define se ela será cancelável. chkfeijao = (CheckBox) findViewById(R. bttotal.00.item.isChecked()) total += 5. 0.isChecked()) total += 2. if(chkfeijao. chkcoca = (CheckBox) findViewById(R. Button bttotal = (Button) findViewById(R. } } Descrevendo o código do evento click: Dentro do evento eu crio uma variável chamada “total” que armazena o valor total da compra.setOnClickListener(new View.isChecked()) total += 2. quando o valor é zero.chkcarne).69.isChecked()) total += 2.item. boolean cancelable) CharSequence message. incrementa o valor do item com o valor da variável “total”. showAlert("Valor total da compra".String. false). A mensagem a ser mostrada é o valor total da compra.OnClickListener(){ public void onClick(View arg0) { double total=0. if(chkcoca.30. chkleite = (CheckBox) findViewById(R.chkarroz).bttotal). Observe que eu tenho cinco estruturas if’s onde cada uma verifica se um determinado item foi marcado. Os parâmetros do showAlert são: showAlert(CharSequence title.00.chkleite). se foi.item.valueOf(total).

vamos lá! Crie um novo projeto Android com os seguintes dados: Project Name: ProjetoSalario Package Name : com. Veja um exemplo abaixo: 26 .android.appsal Activity Name: AppSalario Application Name: Cálculo do salário Nessa aplicação vamos fazer uso da widget RadioButton. 45% e 50% e no final o sistema irá mostrar o salário reajustado com o novo aumento. 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% . Veja a sua sintaxe abaixo: <RadioButton android:id="@+item/chkcoca" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Refrigerante Coca-Cola (R$ 2. para que a múltipla escolha funcione. Bom. agora vamos fazer uma outra aplicação. que funciona como agrupador de RadioButons. que funciona como um item de opção.Desenvolvendo uma aplicação de cálculo de salário Bom. podendo ser selecionado entre vários outros.00)" /> Porém. é necessário que os RadioButtons fiquem dentro de uma RadioGroup.

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="Escolha uma opção:" /> <RadioGroup xmlns:android="http://schemas.android.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas. será exibido a seguinte tela: 27 .<?xml version="1.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+opcao/opcoes" > <RadioButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Opcão 1" /> <RadioButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Opcão 2" /> </RadioGroup> </LinearLayout> Executando a aplicação.

coloque o código abaixo: <?xml version="1.Bom.android.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="Digite seu salário (R$)" /> <EditText android:id="@+campo/edsalario" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Qual será o percentual ?" /> <RadioGroup xmlns:android="http://schemas. agora vamos fazer a nossa aplicação. No arquivo main.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+opcao/rbopcoes" > <RadioButton android:id="@+opcao/rb40" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="40%" /> <RadioButton android:id="@+opcao/rb45" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="45%" /> <RadioButton android:id="@+opcao/rb50" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="50%" /> </RadioGroup> <Button android:id="@+botao/btmostrar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Mostrar novo salário" /> </LinearLayout> 28 .xml.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.

android. EditText edsalario = (EditText) findViewById(R. int op = rg.rb40) novo_sal = salario + (salario * 0. import import import import android. salario = Double. public class AppSalario extends Activity { @Override public void onCreate(Bundle icicle) { super.view.btmostrar).opcao. } }).setOnClickListener(new View.toString()).os.5).onCreate(icicle). android.parseDouble(edsalario. } } 29 .opcao.*.No arquivo AppSalario. else novo_sal = salario + (salario * 0.opcao. "OK". novo_sal.valueOf(novo_sal). coloque o código abaixo: package com. 0. false). btmostrar.Activity. RadioGroup rg = (RadioGroup) findViewById(R.getCheckedRadioButtonId(). else if(op==R.appsal.app.45). android.rbopcoes)."Seu novo salário é : R$" + String.Bundle. android.rb45) novo_sal = salario + (salario * 0.layout. if(op==R.4).*.java.getText(). showAlert("Novo salário".campo.edsalario).main).widget.OnClickListener(){ public void onClick(View arg0) { double salario.botao. setContentView(R. Button btmostrar = (Button) findViewById(R.

opcao. Dentro do evento click. se for. 30 .Vamos a explicação de alguns códigos interessantes. A linha: int op = rg.rb40) Verifico se a opção de 40% foi selecionada. Agora na condição: if(op==R. realize o cálculo do salário com o reajuste de 40%. O resultado você vê na figura abaixo: Até aqui você já pode fazer ótimas aplicações em Android. ou seja. A mesma explicação e válida para o cálculo dos outros reajustes. qual RadioButton foi selecionada. Cria uma variável op e retorna para ela o Id da opção selecionada.getCheckedRadioButtonId(). Os primeiros códigos do evento são similares a de programas anteriores que já foram devidamente explicados. Agora vamos executar a nossa aplicação. eu realizo o cálculo do novo salário do funcionário.

Quando selecionamos um contato. Veja a estrutura de uma ListView abaixo: <ListView android:id="@+id/lista" android:layout_width="fill_parent" android:layout_height="fill_parent" /> Bom.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="Escolha um contato" /> <ListView android:id="@+id/lista" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 31 .Desenvolvendo uma aplicação de lista telefônica Agora vamos fazer uma nova aplicação em Android.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas. A nossa aplicação vai fazer uso do widget chamado ListView. coloque o seguinte código: <?xml version="1. Essa aplicação consiste em uma lista telefônica já pronta com contatos. que exiba uma lista contendo valores que podem ser selecionados. vamos criar um novo projeto chamado ProjetoLista.applist Activity Name: AppList Application Name: Lista de contatos No arquivo main. ele mostra na tela uma mensagem com o nome selecionado.android. Siga os dados abaixo: Project Name: ProjetoLista Package Name : com.android.xml.

Para que eu posssa carregar dos dados em uma ListView. setContentView(R. android. int arg2.android. } static final String[] contatos = new String[] { "Alline".*. public class AppList extends Activity { public ListView lista.main).layout. lista = (ListView) findViewById(R. public void onCreate(Bundle icicle) { super.widget. View arg1.applist.simple_list_item_1. contatos)."Rafael".getSelectedItem().long arg3) { showAlert("Contato selecionado".id.widget. Essa constante vai ser utilizada pela nossa lista. A linha static final String[] contatos = new String[] { "Alline".setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView arg0.android.app. lista. Cria uma constante chamada contatos.layout. import import import import import android. android."Rafael".Activity. preciso fazer uso da classe ArrayAdapter. android.view.AdapterView.lista).*.R.lista.Bundle. } Vamos analisar alguns códigos acima.false).toString()."Silvana" }. } }). como mostra a instrução abaixo: 32 .os."Silvana" }. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this. onde nela coloco alguns nomes. lista."Gabriela"."Lucas".setAdapter(adapter)."Lucas"."Gabriela". "OK".0. android.OnItemClickListener.onCreate(icicle).package com.

View arg1.long arg3) { showAlert("Contato selecionado". Toda vez que clicarmos em um item da lista. Como havia falado.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView arg0.android. como ele retorna um tipo “Object”.false). A instrução mostrada acima cria uma instância da classe ArrayAdapter chamada “adapter” onde carrego nela o vetor de Strings da constante contatos. o método onItemClick será disparado e será executado o comando abaixo: showAlert("Contato selecionado". Carrega os valores para a ListView.getSelectedItem(). "OK". quando clicássemos em um item. int arg2. como mostra a instrução abaixo: lista. através do método toString.0. Porém. Que exibe o item selecionado.toString(). O resultado você vê na figura abaixo: 33 .0. preciso converter para String o item clicado. contatos).simple_list_item_1. A instrução: lista. } }).false). A obtenção do item clicado e feita chamando o método “getSelectedItem()” .getSelectedItem().layout.setAdapter(adapter).ArrayAdapter<String> adapter = new ArrayAdapter<String>(this. Vamos executar a aplicação.lista.toString().lista. "OK".R. Isso é conseguido fazendo uso da interface OnItemClickListener. que está contido o objeto adapter. o sistema mostraria uma mensagem do item selecionado.

depois selecione File System.android. depois de selecionado. quero que você coloque duas imagens JPEG (com a extensão .Desenvolvendo uma aplicação que visualiza imagens Agora vamos desenvolver mais uma aplicação.jpg) dentro da pasta “res/drawable”. Essa aplicação permite que você visualize images. marque os dois arquivos (imagens) para que eles sejam importados para a pasta “res/drawable” . Um arquivo deve se chamar foto1. Clique no botão browser para selecionar o diretório onde se encontram as imagens. clique com o botão direito do mouse e selecione “Import”. Para importar um arquivo.appimage Activity Name: AppImage Application Name: Visualizando Imagens Antes de codificar. tudo através do widget ImageView. Veja a figura abaixo: 34 . A sua estrutura você confere abaixo: <ImageView id="@+id/imagem" android:src="@drawable/foto1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> Agora crie um novo projeto conforme os dados abaixo: Project Name: ProjetoImagem Package Name : com.jpg e o outro foto2.jpg.

xml. coloque o código abaixo: <?xml version="1.android.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/imagem" android:src="@drawable/foto1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Imagem: Foto 1" android:id="@+label/label" /> </LinearLayout> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Exibir Foto 1" android:id="@+botao/bt1" 35 .Depois disso.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout xmlns:android="http://schemas. é só clicar em “Finish”. Agora no arquivo main.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.

imagem).label./> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Exibir Foto 2" android:id="@+botao/bt2" /> </LinearLayout> Vamos analisar o atributo android:src da widget ImageView. que deve ser informada sem a sua extensão.view. android.foto1). setContentView(R.bt1).bt2). Agora no arquivo AppImage.setText("Imagem: Foto 1"). android.OnClickListener(){ public void onClick(View arg0) { imagem. } }). */ ImageView imagem.label).drawable. no caso. btfoto1.android.foto2). android. será exibida a imagem “foto1.Activity.app. Esse atributo permite especificar a imagem a ser aberta.OnClickListener(){ public void onClick(View arg0) { imagem.setImageResource(R.setText("Imagem: Foto 2"). public class AppImage extends Activity { /** Called when the activity is first created.botao. Button btfoto1 = (Button) findViewById(R. 36 . TextView txt. imagem = (ImageView) findViewById(R.java coloque o código abaixo: package com.Bundle.id.setOnClickListener(new View. Button btfoto2 = (Button) findViewById(R.drawable.setOnClickListener(new View. Logo se eu ver de inicio a segunda imagem.main). “@drawable “ corresponde a pasta onde se encontra a imagem e “foto1” é o nome da imagem.os. } }). txt.onCreate(icicle). txt = (TextView) findViewById(R. import import import import android.*.layout. txt.botao. btfoto2.setImageResource(R.appimage. @Override public void onCreate(Bundle icicle) { super.jpg” através do seguinto valor: @drawable/foto1.widget.*. usaria o seguinte valor: @drawable/foto2.

jpg” e exibi-la no componente. Vamos executar a nossa aplicação.jpg”.drawable. Logo após vem o código: txt.setImageResource(R. O resultado você vê nas imagens abaixo: (Foto 1) 37 . Vamos no evento Click referente a abertura da primeira imagem. de acordo com a String passada como parâmetro.drawable. Cuja finalidade é mudar o título da TextView .setText("Imagem: Foto 1"). O comentário acima é o mesmo para o segundo botão referente a abertura da segunda imagem.} } Agora vamos analisar alguns trechos de códigos. O código: imagem. Observe que foi passado o parâmetro “R. É responsável por abrir a imagem “foto1.foto1).foto1” onde “drawable” corresponde a pasta e “foto1” corresponde ao arquivo “foto1.

xml.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" 38 . Vamos criar um novo projeto de demonstração chamado ProjetoLayout. fizemos aplicações em Android que utilizassem um único layout.android. Agora vamos fazer aplicações Android que utilizem mais de um layout.android.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas. conforme os dados abaixo: Project Name: ProjetoLayout Package Name : com. coloque o código que é exibido abaixo: <?xml version="1.(Foto 2) Mudando de layouts Até agora.applayout Activity Name: AppLayout Application Name: Mudando de layouts No arquivo main.

OnClickListener(){ public void onClick(View arg0) { CarregaTela2(). android.widget.view.botao1).os. conforme o código abaixo: package com. import import import import android.setOnClickListener(new View.Activity.android.java.*. Button bt1 = (Button) findViewById(R. android. bt1.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="Você está na tela 2" /> <Button android:id="@+botao/botao2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Ir para tela principal" /> </LinearLayout> Depois disso.layout.botao. android.android.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas. crie um novo arquivo em branco chamado tela2.*. modifique o arquivo AppLayout.main). 39 .applayout. public class AppLayout extends Activity { /** Called when the activity is first created.app.android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Você está na tela principal" /> <Button android:id="@+botao/botao1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Ir para tela 2" /> </LinearLayout> Ótimo! Agora dentro da pasta “res/layout” .xml e coloque o código abaixo: <?xml version="1. */ public void CarregaTelaPrincipal() { setContentView(R.Bundle.

} public void CarregaTela2() { setContentView(R. Logo. } }).botao. o carregamento dos layouts e de seus respectivos widgets devem estar separados em funções desenvolvidas para esse propósito. Veja o resultado abaixo: 40 .tela2). que carrega o layout da tela 2 e seus respectivos componentes. o mesmo válido para o método CarregaTela2.OnClickListener(){ public void onClick(View arg0) { CarregaTelaPrincipal(). } } Observem que nesta classe eu criei dois métodos : CarregaTelaPrincipal e CarregaTela2.layout.} }).botao2). CarregaTelaPrincipal(). Feito isso. } @Override public void onCreate(Bundle icicle) { super. execute a aplicação. bt2.setOnClickListener(new View. o método CarregaTelaPrincipal carrega o layout principal e seus respectivos componentes. Toda aplicação que utilize mais de um layout.onCreate(icicle). Button bt2 = (Button) findViewById(R.

(Tela Principal) (Tela 2) 41 .

png”. eu faço um de uma estrutura de dados FIFO ou Fila.android. será exibida uma mensagem informando essa situação. Bom. Essa aplicação consiste em um cadastro de pessoas onde posso cadastrar dados como: Nome. Nessa aplicação.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas. ela se chama “profile. Profissão e Idade.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/imagebutton" android:src="@drawable/profile" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView 42 . os dados são armazenados em seqüência. vamos construir a nossa aplicação. e acessados em seqüência . Se nenhum dado foi cadastrado. Nessa estrutura. Agora no arquivo main.appcadastro Activity Name: AppCadastro Application Name: Aplicação de Cadastros Dentro da pasta “res/drawable”. 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.xml coloque o código abaixo: <?xml version="1.android. o primeiro dado a entrar será o primeiro a ser exibido.Desenvolvendo uma aplicação de cadastro Agora para encerrar. coloque a figura que acompanha este material. 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. Crie um novo projeto com os dados abaixo: Project Name: ProjetoAppCadastro Package Name : com. ou seja. para armazenar os dados. vamos desenvolver uma aplicação de cadastro.

Este é um pequeno programa de demonstração de cadastro. Selecione uma das opções abaixo:" /> <Button android:id="@+id/btcadpess" android:text="Cadastrar Pessoas" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <Button android:id="@+id/btlistpess" android:text="Listar pessoas cadastradas" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout> Dentro da pasta “res/layout” .xml com o seguinte código: <?xml version="1.android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Bem vindo a aplicação de Cadastro de Pessoas. Cadastre seus dados abaixo:" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Nome:" /> <EditText android:id ="@+campo/nome" android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Profissão:" /> 43 .android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/imagebutton" android:src="@drawable/profile" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Módulo de cadastro.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas. crie um arquivo chamado cadastro.

crie um arquivo chamado listacadastros." 44 .0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.xml com o seguinte código: <?xml version="1.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/imagebutton" android:src="@drawable/profile" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:textSize="20sp" android:textColor="#FFFFFF" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Lista das pessoas cadastradas.<EditText android:id ="@+campo/profissao" android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Idade:" /> <EditText android:id ="@+campo/idade" android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+cadastro/btcadastro" android:text="Cadastrar" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+cadastro/btvoltar" android:text="Voltar" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout> Agora dentro da pasta “res/layout” .

/> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:textSize="20sp" android:textColor="#FFFF00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Nome:" /> <TextView android:id ="@+field/nome" android:textSize="20sp" android:textColor="#FFFFFF" android:text="" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:textSize="20sp" android:textColor="#FFFF00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Profissão:" /> <TextView android:id ="@+field/profissao" android:textColor="#FFFFFF" android:textSize="20sp" android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:textSize="20sp" android:textColor="#FFFF00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Idade:" /> <TextView android:id ="@+field/idade" android:textSize="20sp" android:textColor="#FFFFFF" android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" 45 .

btcadpess.id.edprof.widget. 46 .*.Bundle. Button btcadpess = (Button) findViewById(R.app.ult.btcadpess).android. android.android:layout_height="wrap_content"> <Button android:id="@+lista/btvoltar" android:text="Voltar" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+lista/btanterior" android:text="Anterior" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+lista/btproximo" android:text="Proximo" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout> Agora no arquivo AppCadastro. void CarregaTelaPrincipal () { setContentView(R.view.id.*.setOnClickListener(new View. import import import import android.main).Activity.aux. */ Registro pri.reg. int numreg.os.edidade.btlistpess). android. EditText ednome.OnClickListener(){ public void onClick(View arg0){ CarregaTelaCadastro(). public class AppCadastro extends Activity { /** Called when the activity is first created.appcadastro. coloque o seguinte código: package com.pos. Button btlistapess = (Button) findViewById(R. android.layout.java.

false)."Cadastro efetuado com sucesso". false). } numreg++. reg. Button btcadastrar = (Button) findViewById(R.getText().cadastro.}}).setOnClickListener(new View. ednome = (EditText)findViewById(R.profissao = edprof.nome).getText().toString().getText().Prox = reg.toString().cadastro). 0. showAlert("Aviso". 0.nome = ednome.setOnClickListener(new View. btvoltar. } catch(Exception e) { showAlert("Erro". reg. edprof = (EditText)findViewById(R.Ant = ult.idade = edidade.cadastro.setOnClickListener(new View. }}). } void CarregaTelaCadastro() { setContentView(R. "OK". Button btvoltar = (Button) findViewById(R.idade).toString().profissao). else { ult.btcadastro). reg.campo. "OK". if(pri==null) pri=reg."Erro ao cadastrar".OnClickListener(){ public void onClick(View arg0){ CarregaListaPessoas().layout. btcadastrar. edidade = (EditText)findViewById(R. btlistapess. ult=reg. if(ult==null) ult=reg. reg.campo.OnClickListener(){ public void onClick(View arg0){ 47 .btvoltar).OnClickListener(){ public void onClick(View arg0){ try { reg = new Registro(). }} }).campo.

TextView fprof = (TextView)findViewById(R. return. TextView fidade = (TextView)findViewById(R."Nenhum registro cadastrado".OnClickListener(){ public void onClick(View arg0){ if(pos==numreg) return.nome). "OK". } void CarregaListaPessoas() { if(numreg==0) { showAlert("Aviso".field.lista. } }). TextView fnome = (TextView)findViewById(R. CarregaTelaPrincipal(). 48 . fidade. pos=1. Button btvoltar = (Button) findViewById(R. TextView fidade = (TextView)findViewById(R.field. fprof. btanterior.idade). Button btanterior = (Button) findViewById(R. } }).layout.CarregaTelaPrincipal().field.btanterior). 0. pos++. btproximo.nome).idade).listacadastrados).idade). pos--.btproximo).field.nome).idade).profissao).setText(aux.setOnClickListener(new View. fprof. Button btproximo = (Button) findViewById(R. } }).setText(aux. aux=aux.setText(aux. fidade.lista.profissao).field.OnClickListener(){ public void onClick(View arg0){ if(pos==1) return.setText(aux.profissao).Ant. false). fnome.setOnClickListener(new View.lista.nome). fnome.OnClickListener(){ public void onClick(View arg0){ CarregaTelaPrincipal().setText(aux. TextView fprof = (TextView)findViewById(R. aux=pri. btvoltar. TextView fnome = (TextView)findViewById(R.setText(aux.field.setOnClickListener(new View.btvoltar).profissao). } setContentView(R.

Se você observar nessa aplicação. TextView fnome = (TextView)findViewById(R. O método CarregaTelaCadastro é responsável por carregar a tela de cadastro. String profissao. fnome. A variável ult aponta para o endereço do último registro.profissao).onCreate(icicle).nome). serve para apontar para o endereço do primeiro registro. Registro Ant. } }). } public void onCreate(Bundle icicle) { super.java (no pacote com.android.setText(aux.aux=aux. TextView fidade = (TextView)findViewById(R. coloque o código que é exibido abaixo: package com.android.profissao). você vai criar uma classe Chamada Registro.setText(aux. fidade.appcadastro). Registro Prox.nome).Prox. }} Agora no mesmo local onde se encontra o arquivo AppCadastro.field. 49 .idade). que eu declarei quatro variáveis chamadas pri.field.ult e reg e aux do tipo “Registro”. A variável pri. numreg=0. public class Registro { String nome. CarregaTelaPrincipal(). Depois de criar a classe. pri=ult=null. Observe que nessa aplicação ou possuo três métodos: um método chamado CarregaTelaPrincipal .field. Vamos analisar alguns códigos do método CarregaTelaCadastro.setText(aux.appcadastro. A variável reg armazena os dados do registro corrente e a variável aux funciona como uma variável auxiliar. responsável por carregar o layout da tela principal. fprof. } Agora vamos analisar aos poucos os códigos dessa aplicação. String idade.idade). TextView fprof = (TextView)findViewById(R.

getText().idade).profissao). fidade.profissao = edprof.É com a utilização essas variáveis que faço o cadastro dos dados das pessoas.Ant. Já as linhas: fnome. A linha: reg = new Registro(). 50 . Retorna para aux o endereço do registro anterior. Cria uma nova instância da classe da classe “Registro” e coloca em . Vamos agora para o evento click do botão btanterior.setText(aux. Vamos para o evento click do botão btcadastrar situado dentro do método CarregaTelaCadastro e analisar algumas linhas de código. continuo executando as instruções. Vou comentar algumas linhas. Esse botão mostra os registros anteriores.toString(). para que eles possam ser exibidas.nome = ednome.nome). reg.”reg”. fprof. if(ult==null) ult=reg. else { ult. idade e profissão) para os campos (TextViews). Já as linhas abaixo: if(pri==null) pri=reg. A linha: aux=aux. saio do evento.setText(aux. Se não houver dados cadastrados. Antes de voltar um registro. ult=reg. é feita uma verificação se há dados cadastrados.toString().Ant = ult. que está armazenado em “pri” . Retorna para a variável “aux” o endereço do primeiro registro. verifico se eu me encontro no primeiro registro pela condição: if(pos==1) Se a condição for verdadeira. As linhas: reg. Gravam os dados dos campos no objeto “reg”. Joga as informações obtidas (nome.getText(). reg. senão. reg. será exibida uma mensagem indicando essa situação e você será retornado a tela principal. Quando esse método é chamado.getText().Prox = reg. A linha: aux=pri.setText(aux. Agora vamos para o método CarregaListaPessoas. } Fazem todo o processo de armazenamento dos dados. Depois disso são executados instruções para que os dados possam ser exibidos.idade = edidade.toString().

xml. Bom.Prox. senão. Se você observar. vamos executar a nossa aplicação ? O resultado você confere nas figuras abaixo: (Tela Principal) 51 . Agora vamos no arquivo de layout listacadastrados. antes de passar para o próximo registro. A linha: aux=aux. quero comentar algumas propriedades interessantes. Retorna para aux o endereço do próximo registro.textColor e android:textSize. saio do evento.Já no evento click do botão btproximo. esses atributos definem a cor e o tamanho do texto respectivamente. Depois disso são executados instruções para que os dados possam ser exibidos. verifico se já está no último registro pela instrução: if(pos==numreg) Se a condição for verdadeira. algumas TextViews possuem um atributo chamado android. continuo executando as instruções.

(Tela de cadastro) (Tela de visualização dos dados cadastrados) 52 .

Button essa propriedade: TextView.setText(“Hello World”) Widgets que possuem RadioButton. Método relacionado: setText(CharSequence) Exemplos: XML android:Text=”Hello World” Java texto. EditText. então cada atributo possui um método. CheckBox.Lista de atributos Agora irei mostrar alguns atributos comumente usados em uma aplicação Android de alguns componentes. android:textColor: Essa propriedade serve para definir uma cor para o texo exibido. Aqui vou descrever os atributos usados nos componentes (no formato XML) e quais são os métodos referentes aos atributos descritos. para que seu valor possa ser modificado em tempo de execução. Button essa propriedade: TextView.YELLOW). principalmente os componentes que nós usamos nas aplicações acima. OBS:A classe Color se encontra no pacote “android. Método relacionado: setTextColor(int color) Exemplos: XML android:textColor=”#FFFF00” Java texto. vamos supor que queira modificar o valor de um determinado atributo em tempo de execução. android:text: Essa propriedade serve para mostrar o texto que é passado como parâmetro. 53 . EditText. Widgets que possuem RadioButton. CheckBox. ou seja.graphics”.setTextColor(Color.

EditText. Métodos relacionados: setBackgroundColor(int color). CheckBox. Exemplos: XML android:background=”#FF0000” Java texto. Exemplos: XML 54 . O valor padrão desse atributo é “falso”. Widgets que possuem RadioButton.RED). android:phoneNumber Essa propriedade serve para definir uma entrada de valores no formato de número telefônico. Widgets que possuem essa propriedade: TextView. Button essa propriedade: TextView. Exemplos: XML android: phoneNumber =”true” Java Em Java você deveria definir um conjunto de instruções para capturar as entradas de dados de modo que as entradas atendam a essa finalidade. Métodos relacionados: setKeyListener(KeyListener Arg).android:background: Essa propriedade serve para definir uma cor de fundo. o widget com essa propriedade só irá aceitar números (inteiros e decimais). EditText android:numeric Com essa propriedade habilitada. O valor padrão desse atributo é “falso”. Métodos relacionados: setKeyListener(KeyListener Arg). setBackgroundColor (Color.

Exemplos: XML android:textSize =”10px” android:textStyle =”20sp” setTextSize(int 55 .sp(scaled-pixels) . texto. setTypeface (Typeface.DEFAULT_ITALIC). Widgets que possuem EdiText. mm(milímetros). Widgets que possuem essa propriedade: TextView. Métodos relacionados: setTypeface(Typeface). Métodos relacionados: setTextSize(float tamanho) ou unidade. EdiText android:textStyle: Essa propriedade serve para definir um estilo a fonte (negrito e/ou itálico). setTypeface (Typeface.CheckBox.DEFAULT_BOLD_ITALIC). O tamanho da fonte pode ser especificado em várias notações : px (pixels).Button. texto. essa propriedade: TextView. setTypeface (Typeface. OBS:A classe Typeface se encontra no pacote “android. in (inches) e etc.graphics”. android:textSize: Essa propriedade serve para definir o tamanho da fonte.android:numeric =”true” Java Em Java você deveria definir um conjunto de instruções para capturar as entradas de dados de modo que as entradas atendam a essa finalidade.DEFAULT_BOLD). int tamanho). Exemplos: XML android:textStyle =”bold” android:textStyle =”italic” android:textStyle =”bold_italic” Java texto.RadioButton.

setTypeface (TypedValue. Courier New e etc).10).RadioButton. essa propriedade: TextView.CheckBox. setTypeface (20).CheckBox. //Unidade em scaled-pixels texto. android:typeface: Essa propriedade serve para definir uma fonte ao texto (Arial . Widgets que possuem EdiText. essa propriedade: TextView.Java texto. //Unidade em scaled-pixels OBS: A classe Typeface se encontra no pacote “android. setTypeface (Typeface. o valor e “none”(nenhum). Times NewRoman. texto.0)).RadioButton.create(“times New Roman”. Exemplos: XML android:typeface =”Arial” android:typeface =”Times New Roman” Java texto.create(“Arial”. setTypeface (Typeface.0)).util”. //Unidade em pixels texto. Métodos relacionados: setTypeface(Typeface).Button. android:capitalize: Essa propriedade serve para definir o tipo capitalização das palavras.COMPLEX_UNIT_SP.10).Button.COMPLEX_UNIT_PX. Widgets que possuem EdiText. Por padrão. Os valores usados nessa propriedade são: none sentences words characters Nenhuma capitalização ocorrerá Capitaliza a primeira letra da primeira palavra de qualquer sentença Capitaliza a primeira letra de qualquer sentença Capitaliza todos os caracteres 56 . setTextSize (TypedValue.

Widgets que possuem EdiText. EdiText relacionados: 57 .CheckBox.RadioButton. essa propriedade: TextView. Exemplos: XML android:capitalize =”sentences” Java Em Java você deveria definir um conjunto de instruções para capturar as entradas de dados de modo que as entradas atendam a essa finalidade. Exemplos: XML android:password =”true” Java Em Java você deveria definir um conjunto de instruções para capturar as entradas de dados de modo que as entradas atendam a essa finalidade. Métodos setKeyTransformationMethod(TransformationMethod arg). Widgets que possuem essa propriedade: TextView. android:password Com essa propriedade você habilita a digitação de senhas.Métodos relacionados: setKeyListener(KeyListener Arg).Button.

Abraços 58 .Conclusão Nesta apostila aprendemos a programar o “básico” do Android. Aprendemos a instalar o eclipse e os plugins necessários para o funcionamento do Android. Aprendemos a construir uma aplicação Android básica e depois conhecemos os componentes (widgets) que constituem uma aplicação Android para a construção de aplicações mais interessantes. uma aplicação de cadastro e por último. como ela surgiu e tudo mais. incluindo o SDK. Vimos um pouco sobre a plataforma Android. Espero que esse material lhe tenha sido útil. conhecemos algumas propriedades comumente usadas em alguns widgets que constituem uma aplicação Android. Vimos também como trocar de layouts em uma aplicação Android tendo como exemplo prático.

Sign up to vote on this title
UsefulNot useful