Apostilha de Android - PARTE 15


Que verifica se o total de registros armazenados na aplicação é igual a “0” (ou seja, se não existe nenhum registro cadastrado). Se a condição for verdadeira (e será verdadeira), será visualizada a seguinte mensagem :
173
Agora vamos clicar no botão “Cadastrar Usuário”, para visualizarmos a seguinte tela abaixo :
Aplicação em execução – Tela de cadastro de usuário
Vamos preencher abaixo o seguintes dados (fictícios) a seguir :
Nome
Marcelo Costa Endereço
Av. Monteiro Costa 145 Telefone
(31) 2100-9011
174
Vejamos o resultado :
Preenchendo os dados na aplicação
Quando clicamos no botão “Cadastrar” é executado o seguinte trecho de código presente dentro da classe TelaCadastradoUsuario :
AlertDialog.Builder dialogo = new AlertDialog.Builder(act);
dialogo.setTitle("Aviso");
dialogo.setMessage("Cadastrar usuário ?");
dialogo.setNegativeButton("Não", null);
dialogo.setPositiveButton("Sim", new DialogInterface.OnClickListener()
{ ... });
Que será responsável por exibir a seguinte mensagem abaixo :
175
Perguntando se você deseja confirmar o cadastrar o usuário. Se clicarmos no botão “Sim”, será executado o seguinte trecho de código abaixo (presente dentro do evento OnClickListener presente dentro do método setPositiveButton (responsável por mostrar o título “Sim” do botão), da classe AlertDialog.Builder :
String nome = ednome.getText().toString();
String telefone = edtelefone.getText().toString();
String endereco = edendereco.getText().toString();
act.getRegistros().add(new Registro(nome,telefone,endereco));
act.ExibirMensagem("Cadastro efetuado com sucesso.");
tela_principal.CarregarTela();
As três primeiras linhas obtem dos campos os valores digitados (nome , telefone e endereço) , guardando cada valor em suas respectivas variáveis (nome, telefone e endereço) :
Na linha seguinte :
act.getRegistros().add(new Registro(nome,telefone,endereco));
É efetuado o registro do usuário, onde as suas informações são armazenadas dentro de uma instância da classe Registro. A instância da classe Registro após registrar as informações passadas como parâmetro no método construtor, a mesma é armazenada dentro do array de registros (retornado pelo método getRegistros), que foi declarado dentro da classe MainActivity.
Após o registro e mostrado uma mensagem informando que o registro foi feito com sucesso e em seguida carregada a tela principal do programa, pela instrução :
tela_principal.CarregarTela();
176
Na tela principal do programa, vamos clicar no botão “Listar usuários cadastrados”. Feito isso será mostrada a seguinte tela abaixo :
Aplicação em execução – Listagem dos usuários cadastrados
Experimente agora efetuar mais alguns registros na aplicação e confira a listagem de aplicações.
177
Capitulo Capitulo Capitulo 7 Trabalhando com Trabalhando com Trabalhando com Trabalhando com Trabalhando com Trabalhando com Trabalhando com menus em uma aplicação menus em uma aplicação menus em uma aplicação menus em uma aplicação menus em uma aplicação menus em uma aplicação menus em uma aplicação menus em uma aplicação menus em uma aplicação
m uma aplicação Android é possível implementarmos e trabalharmos com menus , onde neles podemos agregar funções que poderão ser executadas de acordo com a nossa necessidade. Os menus da aplicação são visualizados quando pressionamos o botão “Menu” do dispositivo (existentes nos Smartphones, Tablets). Neste capítulo vamos demonstrar o uso dos menus em uma aplicação Android.
Vamos começar criando primeiramente um projeto de acordo com os seguintes dados abaixo:
Application Name: Exemplo com Menus
Company Domain : app.usuario
Project location : (Fica a sua escolha)
Activity Name: MenusActivity
Layout Name : activity_menus
Title : Exemplo com Menus
Resource Menu Name : menu_ aplicacao
Depois de criado o projeto mude as propriedades do componente TextView conforme demonstra a tabela seguinte:
TextView
Propriedade
Valor
text
Clique no botão menu para ver as opções
E
178
Seguindo o passo acima, a aplicação deve estar de acordo com a figura abaixo:
Layout da tela de aplicação
Vejamos agora a estrutura XML da tela desta aplicação:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MenusActivity">
<TextView android:text="Clique no botão menu para ver as opções"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Vejamos agora o código do arquivo “MenusActivity.java”:
package usuario.app.exemplocommenus;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MenusActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
179
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menus);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
// present.
getMenuInflater().inflate(R.menu.menu_aplicacao, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Se observarmos o código acima, por padrão, existe um método responsável por carregar um menu do arquivo XML (o arquivo “menu_aplicacao.xml”). O nome desse método é onCreateOptionsMenu. Ele é executado durante o carregamento do programa na memória. O arquivo que contém todos os itens de menu se encontra dentro do diretório “menu”, dento da pasta de recursos do projeto (a pasta “res”).
Vamos carregar o arquivo “menu_aplicacao.xml” situado dentro do diretório “menu” para adicionarmos os menus da nossa aplicação. Vejamos o seu código:
180
Código XML do arquivo “menu_aplicacao.xml”
Se observarmos o seu código acima, existe um item de menu que exibe o item “Settings”.
Vamos executar a nossa aplicação para observarmos como os menus funcionam na prática. Com o emulador aberto, pressione a tecla “F2” para que possamos exibir a opção de menu, conforme podemos ver na figura em seguida :
Menu em exibição
181
Para demonstrar o uso deste recurso de menus no Android irei criar um menu com três itens de opções : “Novo” , “Abrir” e “Salvar”. Nas versões mais atuais do Android (como o 4.x), diferentemente das versões anteriores (como o 2.x e etc), não é e não será possível atribuir ícones para os itens de menu adicionados na aplicação.
Para começar vamos “remover” o item “Settings” do arquivo “menu_aplicacao.xml”, conforme mostra a figura abaixo :
Item removido
Para adicionarmos os itens de menu adicione o seguinte código XML destacado em azul, conforme podemos ver em seguida:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MenusActivity">
<item android:id="@+id/item_novo"
android:title="Novo" ></item>
<item android:id="@+id/item_abrir"
android:title="Abrir" ></item>
<item android:id="@+id/item_salvar"
android:title="Salvar" ></item>
</menu>
Agora vamos voltar para o arquivo “MenusActivity.java”. Possivelmente você deve ter se deparado com esse erro, conforme mostra a próxima figura :
182
Erro - O item de menu não existe mais.
O erro acima ocorreu pelo fato de removermos aquele item padrão que já fica presente no arquivo de menu. Para solucionarmos esse erro basta remover o seguinte trecho de código destacado abaixo:
Remover este trecho de código marcado.
183
Depois de remover o trecho de código citado, basta executarmos novamente a aplicação e em seguida pressionar a tecla “F2” para chamarmos o menu. Confira o resultado:
Menus em exibição
Irei comentar agora as propriedades que nós alteramos para a criação de nosso menu.
Uma das propriedades que nós alteramos (e que já estamos acostumados a mexer nela) foi a propriedade “Id”. Uma coisa interessante é que para informar o nome do componente usamos a seguinte notação:
@+id/<nome do componente>
Dentro do Android quando informando um nome (ou “Id”) para um componente, ele usa sempre essa notação. Por exemplo, quando atribuímos um nome para um componente cujo nome é “btcalcular” (como já fizemos em um dos exemplos anteriores), “internamente”, o nome desse componente está nessa forma:
@+id/btcalcular
184
Aqui na criação de “menus” estamos atribuindo os nomes utilizando a notação “real” de como o Android associa esses nomes.
A propriedade “Title” serve para definir o título (ou rótulo) do menu.
Por enquanto fizemos a parte visual, porém, não definimos nenhuma ação para os menus. Vamos aprender agora como atribuir ações para cada menu no Android. Vamos no arquivo “MenusActivity.java” e dentro do método onOptionsItemSelected digite o seguinte código abaixo:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId()) {
case R.id.item_novo:
//Executa algo
break;
case R.id.item_abrir:
//Executa algo
break;
case R.id.item_salvar:
//Executa algo
break;
}
return super.onOptionsItemSelected(item);
}
Vamos analisar o código desse método. Observe que na estrutura switch é avaliado o valor retornado pelo método getItemId, do objeto “item”. Esse método retorna o “Id” do menu selecionado, que é representado pelas constantes, como pode ser observado na estrutura.
Também é possível adicionar sub-menus a um determinado menu. Vamos voltar agora para o arquivo de menu “menu_aplicacao.xml” para adicionarmos um sub-menu em um dos itens. Irei escolher aqui o item “salvar” (cujo nome é “item_salvar”) que vai ter um sub-menu associado a ele. Nesse sub-menu haverá duas opções : “Salvar cópia” , “Salvar como”. Para adicionarmos um sub-menu abra o arquivo “menu_aplicacao.xml” e digite o seguinte trecho de código destacado em azul em seguida :
185
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MenusActivity">
<item android:id="@+id/item_novo"
android:title="Novo" ></item>
<item android:id="@+id/item_abrir"
android:title="Abrir" ></item>
<item android:id="@+id/item_salvar"
android:title="Salvar" >
<menu>
<item android:id="@+id/item_salvar_copia"
android:title="Salvar Cópia" ></item>
<item android:id="@+id/item_salvar_como"
android:title="Salvar Como" ></item>
</menu>
</item>
</menu>
Toda vez que pressionarmos o botão salvar, será aberto um sub-menu com as duas opções que colocamos acima. Confira na figura seguinte:
Sub-Menu em exibição
186
Vejamos agora o código dentro do método onOptionsItemSelected para detectar a ação dos dois itens de sub-menu:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_novo:
//Executa algo
break;
case R.id.item_abrir:
//Executa algo
break;
case R.id.item_salvar_copia:
//Executa algo
break;
case R.id.item_salvar_como:
//Executa algo
break;
}
return super.onOptionsItemSelected(item);
}
Praticamente no código acima não houve grandes mudanças, o que foi necessário foi associar a “id” de cada item de sub-menu para executar uma tarefa dentro da estrutura switch.
187
Capitulo Capitulo Capitulo 8 Propriedades e Propriedades e Propriedades e Propriedades e Propriedades e Propriedades e Propriedades e Propriedades e eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes eventos dos componentes trabalhados trabalhados trabalhadostrabalhados
este capitulo eu irei mostrar e descrever as propriedades e eventos de todos os componentes que trabalhamos neste material.
Widget TextView
- Propriedades
Propriedade
Em XML
Em Java
text
android:text
setText(CharSequence c)
Nessa propriedade, você define o texto a ser exibido na tela.
Propriedade
Em XML
Em Java
textColor
android:textColor
setTextColor(Color c)
Nessa propriedade, você define a cor de texto.
Propriedade
Em XML
Em Java
background
android:background
setBackGroundColor(Color c)
Nessa propriedade , você define o cor de fundo do componente exibido.
Valor: #000000 até #FFFFFF.
Propriedade
Em XML
Em Java
textSize
android:textSize
setTextSize(float tamanho) ou
setTextSize(int unidade, int tamanho)
Define o tamanho do texto. O tamanho da fonte pode ser especificado em várias notações : px (pixels),sp(scaled-pixels) , mm(milímetros), in (polegadas) e etc.
N
188
Propriedade
Em XML
Em Java
typeface
android:typeface
setTypeface(Typeface fonte)
Essa propriedade serve para definir uma fonte ao texto (normal,sans,serif,monospace).
- Eventos
Método que define o evento
Evento
Métodos relacionados ao evento
setOnClickListener
OnClickListener
onClick(View v)
Esse evento é disparado toda vez que o componente for clicado, disparando o método onClick.
Widget EditText
- Propriedades
Propriedade
Em XML
Em Java
text
android:text
setText(CharSequence c)
Nessa propriedade, você define o texto a ser exibido na tela.
Propriedade
Em XML
Em Java
textColor
android:textColor
setTextColor(Color c)
Nessa propriedade, você define a cor do texto.
Propriedade
Em XML
Em Java
background
android:background
setBackGroundColor(Color c)
Nessa propriedade , você define o cor de fundo do componente exibido.
Valor: #000000 até #FFFFFF.
Propriedade
Em XML
Em Java
capitalize
android:capitalize
Essa propriedade serve para definir o tipo capitalização das palavras. Por padrão, o valor e “none”(nenhum). Os possíveis valores para essa propriedade são : “words”,”sentences” e ”characters”
189
Propriedade
Em XML
Em Java
password
android:password
Com essa propriedade você habilita a digitação de senhas. O valor padrão desse atributo é “false”.
Propriedade
Em XML
Em Java
textSize
android:textSize
setTextSize(float tamanho) ou
setTextSize(int unidade, int tamanho)
Define o tamanho do texto. O tamanho da fonte pode ser especificado em várias notações : px (pixels),sp(scaled-pixels) , mm(milímetros), in (polegadas) e etc.
Propriedade
Em XML
Em Java
typeface
android:typeface
setTypeface(Typeface fonte)
Essa propriedade serve para definir uma fonte ao texto. Os possíveis valores são : “normal”,”monospace”,”sans” e “serif”.
Propriedade
Em XML
Em Java
hint
android:hint
setHint(CharSequence c)
define uma mensagem que aparecerá quando a EditText estiver vazia.
- Eventos
Método que define o evento
Evento
Métodos relacionados ao evento
setOnClickListener
OnClickListener
onClick(View v)
Esse evento é disparado toda vez que o componente for clicado, disparando o método onClick.
Método que define o evento
Evento
Métodos relacionados ao evento
setOnKeyListener
OnKeyListener
onKey(View v,int KeyCode, KeyEvent event)
Esse evento é disparado toda vez que a tecla é acionada, disparando o método onKey.
190
Método que define o evento
Evento
Métodos relacionados ao evento
setOnFocusChangeListener
OnFocusChangeListener
onFocusChange(View v, boolean hasFocus)
Esse método é disparado toda vez quando um componente EditText ganha ou perde foco.
Widget Button
- Propriedades
Propriedade
Em XML
Em Java
text
android:text
setText(CharSequence c)
Nessa propriedade, você define o texto a ser exibido na tela.
Propriedade
Em XML
Em Java
textColor
android:textColor
setTextColor(Color c)
Nessa propriedade, você define a cor do texto.
Propriedade
Em XML
Em Java
textSize
android:textSize
setTextSize(float tamanho) ou
setTextSize(int unidade, int tamanho)
Define o tamanho do texto. O tamanho da fonte pode ser especificado em várias notações : px (pixels),sp(scaled-pixels) , mm(milímetros), in (polegadas) e etc.
Propriedade
Em XML
Em Java
typeface
android:typeface
setTypeface(Typeface fonte)
Essa propriedade serve para definir uma fonte ao texto. Os possíveis valores são : “normal”,”monospace”,”sans” e “serif”.
191
- Eventos
Método que define o evento
Evento
Métodos relacionados ao evento
setOnClickListener
OnClickListener
onClick(View v)
Esse evento é disparado toda vez que o componente for clicado, disparando o método onClick.
Método que define o evento
Evento
Métodos relacionados ao evento
setOnKeyListener
OnKeyListener
onKey(View v,int KeyCode, KeyEvent event)
Esse evento é disparado toda vez que a tecla é acionada, disparando o método onKey.
Widget CheckBox/RadioButton
- Propriedades
Propriedade
Em XML
Em Java
text
android:text
setText(CharSequence c)
Nessa propriedade, você define o texto a ser exibido na tela.
Propriedade
Em XML
Em Java
textColor
android:textColor
setTextColor(Color c)
Nessa propriedade, você define a cor do texto.
Propriedade
Em XML
Em Java
checked
android:checked
setChecked(boolean estado)
Nessa propriedade você define o estado do CheckBox, se estará marcado (true) ou não (false).
- Eventos
Método que define o evento
Evento
Métodos relacionados ao evento
setOnClickListener
OnClickListener
onClick(View v)
Esse evento é disparado toda vez que o componente for clicado, disparando o método onClick.
192
Método que define o evento
Evento
Métodos relacionados ao evento
setOnCheckedChangeListener
OnCheckedChangeListener
onCheckedChanged (CompoundButton cb,boolean b)
Esse evento será disparado toda vez que o estado do CheckBox for modificado, ou seja, marcado ou desmarcado, disparando o método onCheckedChanged.
Widget ListView
- Propriedades
Método
Descrição
setAdapter(SpinnerAdapter a)
Nesse método você define os elementos que irão compor esse componente através de um vetor (array).
int getSelectedPosition()
Essa função retorna a posição do elemento selecionado. Por exemplo, se for o primeiro elemento, retorna 0, se for o segundo, retorna 1 e assim sucessivamente.
Object getSelectedItem()
Essa função retorna em um tipo Object, o item selecionado.
Object getItemAtPosition(int posicao)
Retorna em um tipo Object o elemento de uma determinada posição, passada como parâmetro.
- Eventos
Método que define o evento
Evento
Métodos relacionados ao evento
setOnClickListener
OnClickListener
onClick(View v)
Esse evento é disparado toda vez que o componente for clicado, disparando o método onClick.
193
Método que define o evento
Evento
Métodos relacionados ao evento
setOnItemClickListener
OnItemClickListener
onItemClick (AdapterView<?> a, View v, int I, long l)
Esse evento será disparado toda vez que um derminado item for clicado, disparando o método onItemClick.
Método que define o evento
Evento
Métodos relacionados ao evento
setOnItemSelectedListener
OnItemSelectedListener
onItemSelected(AdapterView av, View v,int posição,long id)
onNothingSelected(AdapterView av)
Esse evento será disparado toda vez que um derminado item for selecionado, disparando o método onItemSelected. Caso nenhum item seja selecionado, será disparado o método onNothingSelected.
Widget ImageView
- Propriedades
Propriedade
Em XML
Em Java
src
android:src
setImageResource(int Id)
Nessa propriedade, você define a imagem que será exibida na tela.
Método
Descrição
setImageURI(Uri link)
Esse método é similar ao método acima, sendo que aqui você especifica o Uri (como se fosse um link de internet) como caminho de localização da imagem.
- Eventos
Método que define o evento
Evento
Métodos relacionados ao evento
setOnClickListener
OnClickListener
onClick(View v)
Esse evento é disparado toda vez que o componente for clicado, disparando o método onClick.
194
Propriedades comuns a todos os componentes
Propriedade
Em XML
Em Java
id
android:id
Nessa propriedade , definimos o nome do nosso componente.
Propriedade
Em XML
Em Java
layout:width
android:layout_width
Nessa propriedade, você define a largura do componente a ser exibido. Normalmente essa propriedade assume dois valores : “match_parent” (preenche toda a largura restante do dispositivo) e “wrap_content” (a largura do componente será definida de acordo com o seu conteúdo) . Também podem especificar valores números com suas respectivas escalas, ex: “160px”,”50sp” e etc.
Propriedade
Em XML
Em Java
layout:height
android:layout_heigth
Nessa propriedade, você define a altura do componente a ser exibido. Normalmente essa propriedade assume dois valores : “match_parent” (preenche toda a altura restante do dispositivo) e “wrap_content” (a altura do componente será definida de acordo com o seu conteúdo) . Também podem especificar valores números com suas respectivas escalas, ex: “160px”,”50sp” e etc.
Propriedade
Em XML
Em Java
visibility
android:visibility
setVisibility(int modo_visibilidade)
Essa propriedade serve para definir se o componente estará visível ou não. Ela assume os seguintes valores : “visible”,”invisible” e “gone”.
195
Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do Conclusão a respeito do material material material
Nesta apostila vimos de forma bem básica e introdutória como desenvolver aplicações para Android para algumas situações . Começamos vendo um pouco sobre a plataforma Android, como ela surgiu e tudo mais. Aprendemos a
instalar e configurar Android Studio , que é a ferramenta de desenvolvimento para a criação de Aplicações Android, e em seguida aprendemos a construir algumas pequenas aplicações para Android,como uma calculadora básica, um aplicativo de compras, um aplicativo de cálculo de salário e etc.
Se você quiser uma abordagem “mais completa” de como desenvolver aplicações para Android , adquira a “Apostila de Android – Programando Passo
a Passo ” Completa, efetuando o pagamento do seu valor através do PagSeguro. Visite o site www.apostilaandroid.net para mais informações à respeito da Apostila de Android “COMPLETA”
Espero que esse material lhe tenha sido útil.
Abraços

Comentários