95
Marcelo Alves [email protected] @malvesinfo Curso Android – Básico

Android Básico

Embed Size (px)

DESCRIPTION

Android Básico

Citation preview

Page 1: Android Básico

Marcelo  Alves  [email protected]  

@malvesinfo  

Curso  Android  –  Básico  

Page 2: Android Básico

Agenda  �  Introdução  � Configuração  do  Ambiente  � Conceitos  � Activity  �  Intents  �  Interface  Gráfica  (Layouts  e  Views)  �  IntentFilter  � Handler  �  SQLite  � ContentProvider  

Page 3: Android Básico

Plataformas  Mobile  

Page 4: Android Básico

Introdução  � Celulares  a  cada  ano  vem  crescendo  tanto  em  numero  quanto  em  qualidade  e  tecnologia.  Com  esse  avanço  tecnológico  hoje  é  possível  ter  de  tudo  em  um  único  aparelho  móvel  como:  Câmera  Digital,  Bluetooth,  Jogos,  GPS  ,  Acesso  a  Internet  ,  ler  e-­‐mails  TV  digital.  

Page 5: Android Básico

Introdução  � E  para  acompanhar  esse  mercado  que  esta  a  todo  vapor,  empresas  da  alta  tecnologia  investem  pesado  no  desenvolvimento  de  plataformas  livres,  flexíveis,  que  tenham  grande  evolução  tecnológica.    

� E  como  nesse  mercado  inovador  sempre  tem  uma  grande  empresa  chamando  a  atenção,  dessa  vez  foi  a  Google  quem  chamou  a  atenção  com  o  lançamento  do  Android,  sua  nova  plataforma  para  dispositivos  móveis.  

Page 6: Android Básico

O  que  é  Android?  � Android  é  uma  plataforma  para  dispositivos  móveis  desenvolvida  pela  Google  e  contêm  um  sistema  operacional  baseado  em  Linux.    

� Contém  uma  interface  rica  com  diversos  aplicativos  instalados.  Fácil  de  ser  utilizado  com  tudo  que  á  de  mais  novo  no  mercado  para  dispositivos  móveis.  

� Possibilita  a  utilização  da  linguagem  Java  para  o  desenvolvimento  de  aplicativos  Android.  

Page 7: Android Básico

Evolução  Android  

1.5 Cupcake 2.3 Gingerbread

Page 8: Android Básico

Evolução  Android  

3.x - Honeycomb

Page 9: Android Básico

Evolução  Android  

4.0 - Ice Cream Sandwich 4.1 - Jelly Bean

Page 10: Android Básico

Open  Handset  Alliance  � OHA  é  um  grupo  formado  pelas  grandes  empresas  de  telefonia  liderados  pelo  Google.  Esse  grupo  tem  o  objetivo  de  definir  uma  plataforma  aberta  ,  moderna  e  flexível  para  o  desenvolvimento  de  aplicações  coorporativas.          

Page 11: Android Básico

Código  aberto  e  livre?!?!?    � Essa  é  a  uma  das  grandes  novidades  da  plataforma.  Android  é  a  primeira  plataforma  para  aplicações  móveis  completamente  livre  de  código  aberto.  

� Programadores  podem  baixar  e  fazer  melhorias,  assim  como  empresas  não  terão  custos  em  utilizar  a  plataforma  em  seus  dispositivos  e  ainda  podem  personalizar  da  forma  que  quiserem  sem  precisar  compartilhar  estas  alterações.  

 

Page 12: Android Básico

Arquitetura  Android  

Page 13: Android Básico

SDK  Android  � Além  de  manter  a  plataforma,  a  Google  também  disponibiliza  um  SDK  para  o  desenvolvimento  de  aplicações  para  o  Android.  

� Com  SDK  disponível  a  linguagem  utilizada  nada  mais  nada  menos  que  a  famosa  linguagem  JAVA.  

� Google  também  disponibilizou  um  plugin  para  o  Eclipse  chamado  ADT(Android  Development  Tools)  para  facilitar  no  desenvolvimento  de  aplicativos  para  Android.  

Page 14: Android Básico

Máquina  Virtual  Dalvik  � Android  não  utiliza  a  maquina  virtual  Java  (JVM),  e  sim  é  utilizado  a  maquina  virtual  Dalvik  .  

� Depois  que  os  bytecode  (.class)  são  compilados  os  mesmo  são  convertidos  para  o  formato  .dex  (Dalvik  Executable)  que  nada  mais  é  que  uma  aplicação  Android  compilada.    

� Depois  da  compilação  é  gerado  um  arquivo  .apk(Android  Package  File)  que  compacta  arquivos  compilados  .dex  e  recursos  utilizados  pelo  próprio  desenvolvedor.  

Page 15: Android Básico

http://developer.android.com

Page 16: Android Básico

Configurando  ambiente  de  Desenvolvimento    � Para  iniciar  a  configuração  do  ambiente  de  desenvolvimento  é  necessário  baixar  o  SDK.  �  http://developer.android.com/sdk/index.html  

� A  IDE  utilizada  será  o  Eclipse.  �  http://www.eclipse.org/downloads/  

Page 17: Android Básico

Instalando  o  SDK  � Após  fazer  o  download  do  SDK  ,  basta  descompactar  em  qualquer  diretório  do  sistema  operacional  (Neste  exemplo  foi  utilizado  o  windows).  �  Ex.:  C:\  android-­‐sdk-­‐<plataforma>-­‐<release>_<build>  

� Dentro  do  SDK  existe  uma  pasta  chamada  tools  que  contém  varias  ferramentas  e  o  emulador  Android.  

Page 18: Android Básico

Instalação  do  plugin  ADT  para  o  Eclipse  � Abra  o  Eclipse  e  acesso  o  menu  Help  /  Install  New  Software.  

� No  campo  Work  with  inclua  o  link  �  https://dl-­‐ssl.google.com/android/eclipse/  

� Após  incluir  o  link,  clicar  no  botão  Add.  

Page 19: Android Básico

Instalação  do  plugin  ADT  para  o  Eclipse  

Page 20: Android Básico

Instalação  do  plugin  ADT  para  o  Eclipse  � Na  Janela  Add  Site  informe  um  nome  para  o  link  adicionado  e  clique  em  OK  para  confirmar.  

 

Page 21: Android Básico

Instalação  do  plugin  ADT  para  o  Eclipse  � Após  a  inclusão,  selecione  o  plugin  a  ser  instalado  e  clicar  em  Next....Next.  

Page 22: Android Básico

Instalação  do  plugin  ADT  para  o  Eclipse  � Aceitar  os  termos  de  instalação  e  clicar  em  Finish.  Logo  após  irá  iniciar  o  download  do  plugin.  

Page 23: Android Básico

Instalação  do  plugin  ADT  para  o  Eclipse  � Após  a  instalação  do  ADT  é  necessário  configurá-­‐lo  para  utilizar  o  SDK  que  foi  instalado.  

Page 24: Android Básico

Configurando  ADT  � Para  configurar  o  ADT  entre  no  menu  Window  /  Preferences  e  selecionar  a  opção  Android.  Clique  em  OK  para  confirmar.  

 

Page 25: Android Básico

Configurando  ADT  � Com  ADT  instalado  e  configurado  já  é  possível  utilizar  as  ferramentas  oferecidas  pelo  plugin,  o  emulador  e  principalmente  iniciar  o  desenvolvimento  de  aplicativos  Android.  

Page 26: Android Básico

Configurando  Emulador  � Para  utilizar  o  emulador,  é  necessário  antes  incluir  o  AVD(Android  Virtual  Device)    com  TARGET  da  versão  desejada  do  SDK  ou  com  recursos  específicos  Ex.:  Google  Maps.    

� A  partir  da  versão  1.5  do  SDK  começou  a  vir  embutido  a  versão  anterior.  Como  estamos  utilizando  a  versão  1.6  veio  junto  ao  SDK  a  versão  1.5.  Isso  é  útil  para  aplicações  sua  que  ainda  utilizam  a  versão  anterior  e  não  se  adaptaram  a  versão  mais  atualizada.  

Page 27: Android Básico

Configurando  Emulador  � Para  cadastrar  um  AVD  novo  acesse  o  menu  Windows  /  Android  SDK  and  ADV  Manager.  Logo  após  clique  no  botão  NEW.  

Page 28: Android Básico

Configurando  Emulador  � Na  inclusão  do  AVD  informe  uma  nome  para  o  mesmo  e  escolha  a  TARGET  da  versão  atual  do  SDK.  

� Clique  em  Create  AVD  para  concluir.  

Page 29: Android Básico

Iniciando  Emulador  � Após  cadastrar  selecione  o  AVD  cadastrado  e  clique  em  START  para  iniciar  o  Emulador.  

Page 30: Android Básico

Emulador  � Esta  disponível  no  emulador  a  maioria  dos  recursos  que  um  celular  físico  possui.  Desde  browser,  contacts,  Message,  E-­‐mail  e  muito  mais.    

Page 31: Android Básico

Emulador  � Demonstração  de  Browser  

Page 32: Android Básico

Primeiro  Projeto  � Neste  primeiro  exemplo  será  demonstrado  como  se  cria  um  projeto  no  Eclipse,  a  estrutura  de  diretórios  e  arquivos  padrões  utilizados  em  um  projeto  Android.  

 

Page 33: Android Básico

Criando  Projeto  � Para  criar  um  projeto,  clique  no  menu  File  /  New  /  Project.  Selecione  Android  Project  e  clique  em  Next.  

 

Page 34: Android Básico

Criando  Projeto  �  Na  próxima  tela  será  exibidos  os  seguintes  campos:  

�  Project  Name:  Nome  do  projeto  que  será  criado.  �  Build  Target:  Pode  ser  selecionado  qual  versão  do  SDK  que  esse  projeto  irá  utilizar,  no  nosso  caso  iremos  usar  a  Target  Android  1.6.  

�  Application  Name:  Será  o  titulo  da  aplicação.  Esse  titulo  aparecerá  quando  a  aplicação  for  instalada  no  emulador.  

�  Package  Name:  Nome  do  Pacote  em  que  a  activity  principal  fará  parte.  Importe  que  esse  nome  seja  único  para  identificação  da  mesma.  

�  Create  Activity:    Nome  da  activity  principal  que  servirá  como  ponto  inicial  da  aplicação.  Uma  aplicação  pode  ter  uma  ou  várias  activities  que  representam  as  telas  de  uma  aplicação.    

Page 35: Android Básico

Criando  Projeto  

Page 36: Android Básico

Estrutura  do  Projeto  � Essa  é  a  estrutura  de  um  projeto  Android.  

Page 37: Android Básico

Estrutura  do  Projeto  �  src:  Pasta  que  contem  as  classes  Java  do  projeto.  �  assets:  Este  diretório  guarda  arquivos  opcionais  do  projeto  como  por  exemplo  bibliotecas  de  terceiros.  

�  res:  Diretório  que  guarda  os  recursos  da  aplicação  que  são:  �  drawable:  Diretório  que  com  imagens  da  aplicação.    �  layout:  Contém  os  arquivos  XML  para  a  criação  de  layouts  das  telas  da  aplicação.  

�  values:  Contém  os  arquivos  XML  usados  para  a  internacionalização  da  aplicação  e  configurações.  

Page 38: Android Básico

Arquivos  do  Projeto  �  /res/layout/main.xml  

�  Esse  arquivo  define  a  interface  gráfica  da  tela.  Por  padrão  na  criação  do  projeto  é  criado  um  <TextView>  para  exibir  uma  mensagem  de  texto.  A  mensagem  é  buscada  como  referencia  no  atributo  android:text=“@string/hello”  ,  utilizando  a  chave  hello  localizada  no  arquivo  strings.xml  .  

�  Poder  ser  criado  outros  arquivos  xml  de  layouts.  Ao  incluir  um  novo  layout  no  diretório  /res/layout/  automaticamente  será  criado  uma  referência  na  classe  R.java.  

Page 39: Android Básico

Arquivos  do  Projeto  �  /res/layout/main.xml    

Page 40: Android Básico

Arquivos  do  Projeto  �  /res/values/strings.xml  

�  Este  arquivo  contem  as  mensagens  da  aplicações.  Todos  os  textos  são  localizados  neste  arquivo,  e  cada  um  tem  seu  identificador  @string/chave.  

Page 41: Android Básico

Arquivos  do  Projeto  � A  classe  R.java  tem  constantes  que  referenciam  os  recursos  localizados  na  pasta  res    do  projeto,  como  por  exemplo  as  mensagens  definidas  no  arquivo  strings.xml.  Todas  as  vezes  que  um  recurso  é  atualizado  ou  adicionado  a  classe  R.java  será  atualizada  automaticamente  com  referencia  a  esse  recurso.  

� ESTA  CLASSE  NÃO  PODE  SER  ALTERADA  MANUALMENTE!!!!  

Page 42: Android Básico

Arquivos  do  Projeto  � Classe  R.  

Page 43: Android Básico

Arquivos  do  Projeto  � AndroidManifest.xml  

�  Este  é  o  arquivo  principal  da  aplicação  e  responsável  pela  configuração  do  projeto  como  por  exemplo:  Inclusão  da  activity  principal  e  de  todas  as  activities,  icone  da  aplicação,  nome  da  aplicação,  entre  inúmeras  configurações.  

Page 44: Android Básico

AcNvity  �  Na  criação  do  projeto  é  gerado  automaticamente  uma  classe  que  representa  a  tela  (Activity)  principal  do  projeto.  É  esta  classe  que  será  a  tela  inicial.  Mas  não  impede  de  fazer  esse  processo  manualmente  utilizando  o  arquivo  AndroidManifest.xml  

�  Para  cada  tela  criada  para  aplicação  deverá  ser  filha  da  classe  android.app.Activity.  Cada  Activity  é  responsável  por  controlar  o  estado  ,eventos  da  tela  e  definir  qual  View  será  responsável  por  desenhar  a  interface  gráfica  do  usuário.  

�  Ao  herdar  de  Activity  será  necessário  implementar  o  método  onCreate(bundle)  onde  o  mesmo  é  chamado  automaticamente  quando  a  Activity  é  criada.    

Page 45: Android Básico

AcNvity  � Método  setContentView(view)  informando  a  constante  R.layout.main,  faz  com  que  a  view  definida  no  arquivo  XML  seja  exibida.  

Page 46: Android Básico

AndroidManifest  � É  obrigatório  que  cada  Activity  do  projeto  esteja  declarada  no  arquivo  AndroidManifest.xml.  �  <activity    android:name=“.ExemploAct1”/>  

� Para  a  Activity  que  será  o  ponto  de  partida  do  projeto  deverá  ser  declarada  da  seguinte  forma:  

Page 47: Android Básico

AndroidManifest  � Tag  <intent-­‐filter>  customiza  como  a  activity  será  iniciada.  

� A  ação  MAIN  significa  que  a  activity  “PrimeiroExemploActivity”    pode  ser  iniciada  isoladamente,  como  ponto  inicial  da  aplicação.  �  <action  android:name="android.intent.action.MAIN"  />  

� A  categoria  LAUCHER  indica  que  a  activity  estará  disponivél  na  tela  inicial  junto  com  outras  aplicações.  �  <category  android:name="android.intent.category.LAUNCHER"  />  

   

Page 48: Android Básico

Executando  Projeto  � Para  executar  um  projeto  Android  no  emulador,  clique  com  o  botão  direito  no  projeto,  selecione  o  menu      Run  as/  Android  Application.  

Page 49: Android Básico

AcNvity  /  Ciclo  de  Vida  � Os  possíveis  estados  de  uma  Activity  são:  

�  Executando,  Temporariamente  interrompida  em  segundo  plano  ou  completamente  destruida.  

� Cada  Activity  iniciada  é  inserida  no  topo  da  pilha,  chamada  de  “activity  stack”.  Então  se  uma  nova  activity  é  iniciada  a  que  estava  em  execução  fica  abaixo  da  nova.  

�  Se  uma  activity  estiver  no  estado  de  pausada,  o  sistema  operacional  pode  decidir  encerrar  o  processo.  Um  exemplo  típico  seria  para  liberar  recursos  e  memória  para  outras  aplicações.  

Page 50: Android Básico

AcNvity  /  Ciclo  de  Vida  

Page 51: Android Básico

AcNvity  /  Recuperando  objetos  � Quando  construímos  telas  usando  arquivos  XML  de  layout,  surge  a  necessidade  recuperar  os  objetos  definidos  no  arquivo  dentro  do  codigo-­‐fonte.  Como  por  exemplo:  Recuperar  um  ImageView  quando  pretendemos  definir  uma  imagem,  entre  outros.  

� O  Exemplo  a  seguir  adicionamos  a  tag  <ImageView>  no  arquivo  de  layout  que  serve  para  exibir  uma  imagem  na  tela.  Foi  definido  além  da  largura  e  altura  o  “id”  que  servirá  para  recuperarmos  o  ImageView  em  tempo  de  execução.  

Page 52: Android Básico

AcNvity  /  Recuperando  objetos  � Para  definir  um  “id”  foi  adicionado  o  atributo  android:id=“@+id/imagem”  na  tag  <ImageView>.  

Page 53: Android Básico

AcNvity  /  Recuperando  objetos  � Na  classe  R  é  exibido  o  id  definido  no  arquivo  de  layout.  Isso  tudo  é  feito  automaticamente  quando  as  modificações  são  feitas  no  arquivo  XML.  

Page 54: Android Básico

AcNvity  /  Recuperando  objetos  � Agora  basta  utilizar  o  método  findViewById(id)  para  recuperarmos  objetos    definido  no  arquivo  XML.  

Page 55: Android Básico

AcNvity  /  Recuperando  objetos  � Exercício  1:  

�  Crie  um  projeto  Android  e  defina  em  seu  layout  dois  componentes  TextView  e  um  ImageView.  

�  Para  cada  componente  defina  um  “id”.  � Na  activity  principal  recupere  ambos  componentes  utilizando  o  método  findViewById(id).  

�  Para  o  componente  ImageView,  inclua  uma  imagem  de  sua  escolha  (Não  esqueça  de  incluir  o  arquivo  de  imagem  no  diretório  padrão).  

�  Para  o  componente  TextView,  modificar  seu  texto.  

Page 56: Android Básico

AcNvity  -­‐  Navegação  � Para  fazer  a  navegação  entre  Activities  é  necessário  utilizar  o  método  startActivity(Intent)  

�  Intents  é  usado  na  intenção  de  executar  algo.  Esse  objeto  encapsula  qual  será  a  intenção,  intenção  informada  no  momento  em  que  for  criada  uma  instancia  da  Intent.  Para  este  exemplo  iremos  utilizar  a  Intent  para  abrir  uma  outra  Activity.  

Page 57: Android Básico

AcNvity  –  Passando  valores  para  uma  AcNvity  � Utiliza-­‐se  a  propria  Intent  para  passar  valores  para  a  Activity  que  será  aberta.    

�  Intent  contém  metódos  de  HashMap.  Onde  é  informado  a  chave  +  valor.  E  na  Activity  que  será  aberta  pode-­‐se  recuperar  esse  valor  através  da  mesma  chave.  

Page 58: Android Básico

AcNvity  –  Passando  valores  para  uma  AcNvity  

Intent intent = new Intent(this, MinhaActivity.class); Bundle bundle = new Bundle(); bundle.putString("meu_valor", "Valor"); intent.putExtras(bundle); startActivity(intent);

•  Definindo parâmetro :

•  Recuperando Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String value = bundle.getString("meu_valor");

Page 59: Android Básico

ListAcNvity  � Activity  que  exibe  uma  lista  com  itens.  Internamente  essa  Activity  utiliza  um  ListView,  assim  não  precisa  criar  um  layout  contendo  um  ListView.  Então  não  precisa  chamar  setContentView.  

� Para  utilizar  a  ListActivity  é  preciso  estender  de  android.app.ListActivity.  

� Para  incluir  na  lista  os  itens  que  serão  exibidos  é  necessário  utilizar  um  Objeto  que  seja  filho  de  ListAdapter.  É  esse  adaptador  que  irá  fazer  todo  o  trabalho  de  incluir/exibir  os  dados  na  lista.    

Page 60: Android Básico

ListAcNvity  -­‐  Adapter  � Caso  necessite  exibir  itens  de  forma  diferente  do  que  o  Android  oferece,  basta  criar  uma  classe  que  seja  um  Adaptador.  Normalmente  utiliza-­‐se  o  BaseAdapter  nas  classe  que  será  o  adaptador.  

� Para  personalização  do  item  é  feita  dentro  do  método  sobrecarregado  getView(...).  Esse  método  é  chamado  quando  a  lista  for  exibir  cada  item  dentro  dela.    

Page 61: Android Básico

ListAcNvity  -­‐  SinmpleCursorAdapter  �  SimpleCursorAdapter  irá  mapear  o  que  estive  dentro  do  cursor  através  das  colunas  com  algum  componente  definido  em  um  layout.  

� Cursor  pode  ser  recuperado  através:    � Da  dados  quando  é  executado  alguma  query  do  banco  de  dados  recuperando  valores.  

�  A  lista  de  contatos  do  telefone  ira  retornar  um  Cursor  � Outras  aplicações  que  compartilhem  dados  

Page 62: Android Básico

Intents  � É  intenção  de  executar  alguma  ação.  Essa  ação  é  envia  para  o  SO  do  Android  e  ele  irá  verificar  a  Intent  e  executar  de  acordo  com  o  que  foi  configurado  na  Intent.  

� Muitos  serviços  do  SO  Android  necessitam  da  intente  para  serem  executado,  o  mais  comuns  são  as  Atividades  (Activity)  e  Serviços  (Services)    

Page 63: Android Básico

Intents  -­‐  NaNvas  � Android  permite  que  aplicativos  executem  aplicações  nativas  do  SO  através  de  Intents.  Tais  como:  �  Browser  �  Google  Maps  �  Efetuar  Ligação  �  Abrir  SMS  �  Abrir  caixa  de  Email  �  Calendário    �  Câmera  �  Entre  outras  

Page 64: Android Básico

IntentFilter  � Permite  criar  um  filtro  para  executar  uma  determinada  ação.  Muito  utilizada  para  executar  serviço  de  outras  aplicações  ou  do  SO  Android  

�  Intent  pode  utilizar  IntentFilter  para  executar  uma  Activity  quando  não  souber  o  nome  da  Activity  ou  quando  não  tiver  acesso  a  Activity.  Exemplo:  Abrir  a  Activity  de  uma  outra  aplicação.  

Page 65: Android Básico

IntentFilter  � Para  criar  um  filtro  onde  irá  abrir  uma  activity,  é  necessário  definir  na  declaração  da  Activity  a  TAG  <intent-­‐filter>  dentro  da  declaração  da  Activity  no  AndroidManifest.    

<activity android:name=“MinhaActivity"> <intent-filter> <action android:name=“ABRIR_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>

Page 66: Android Básico

IntentFilter  �  <action>  Ação  que  a  Intent  irá  realizar.  No  nosso  exemplo  foi  declarado  um  nome  para  a  ação  onde  a  activity  será  executada  através  do  nome  declarado  “ABRIR_ACTIVITY”  

�  <category>  utilizada  para  informar  a  Intent  como  ele  deve  executar  a  ação.  

� Como  executar  a  ação  no  código:  Intent intent = new Intent(“ABRIR_ACTIVITY”); startActivity(intent);

Page 67: Android Básico

GUI  –  Interface  Gráfica  � View  e  ViewGroup  �  LinearLayout  � RelativeLayout  � GridView  � TabHost  �  ScrollView  � TableLayout  � AbsoluteLayout  �  FrameLayout  � Gallery  

Page 68: Android Básico

Interface  Gráfica  �  View  é  a  classe  mãe  de  todos  os  componentes  visuais  do  Android.  Serve  de  base  para  esse  componentes  que  são  chamados  de  widgets  (Botãoes,  TextView  e  etc).  

�  ViewGroup  é  classe  mãe  dos  gerenciadores  de  layouts  (LinearLayout,  RelativeLayout  e  etc).  ViwGroup  será  responsável  por  organizar  as  Views  que  serão  exibidas  para  o  usuário.  

Page 69: Android Básico

Interface  Gráfica  

Page 70: Android Básico

Interface  Gráfica  

Page 71: Android Básico

Interface  Gráfica  -­‐  Layouts  �  LinearLayout  -­‐  Organiza  os  componentes  de  View  de  forma  linear  (vertical  ou  horizontal):  

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="green" android:gravity="center_horizontal" android:background="#00aa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="blue" android:gravity="center_horizontal" android:background="#0000aa" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> </LinearLayout>

Page 72: Android Básico

Interface  Gráfica  -­‐  Layouts  �  RelativeLayout:  Permite  organizar  os  componentes  de  View  através  de  referencia  a  outra  View  ou  com  referencia  ao  próprio  RelativeLayout  

Page 73: Android Básico

Interface  Gráfica  -­‐  Layouts  �  RelativeLayout   <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Type here:"/> <EditText android:id="@+id/entry" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/editbox_background" android:layout_below="@id/label"/> <Button android:id="@+id/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/entry" android:layout_alignParentRight="true" android:layout_marginLeft="10dip" android:text="OK" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/ok" android:layout_alignTop="@id/ok" android:text="Cancel" /> </RelativeLayout>

Page 74: Android Básico

Interface  Gráfica  -­‐  Layouts  �  GridView:  Organiza  os  item  em  grade  automaticamente  através  do  ListAdapter.  Para  essa  ViewGroup  é  necessário  utilizar  um  adaptador  para  que  os  item  sejam  exibidos.  

<?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnWidth="90dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center" />

Page 75: Android Básico

Interface  Gráfica  -­‐  Layouts  �  TabHost:  Exibe  a  UI  em  forma  de  Abas.  TabHost  será  o  gerenciador  das  abas  em  exibição,  e  cada  aba  será  uma  instancia  de  TabHost  onde  deverá  ser  incluído  o  conteúdo  da  aba.  Para  a  utilização  de  abas,  é  necessário  criar  uma  Activity  que  herda  de  TabActivity  

Page 76: Android Básico

Interface  Gráfica  -­‐  Layouts  �  TabHost  

public  class  MinhaTab2Activity  extends  TabActivity  implements  OnTabChangeListener  {    @Override  protected  void  onCreate(Bundle  savedInstanceState)  {  super.onCreate(savedInstanceState);    

TabHost  tabHost  =  getTabHost();    TabSpec  aba1  =  tabHost.newTabSpec("Aba1");  aba1.setIndicator("Minha  Aba1",  getResources().getDrawable(R.drawable.icon));    Intent  inAba1  =  new  Intent(this,  Aba1Activity.class);  aba1.setContent(inAba1);    TabSpec  aba2  =  tabHost.newTabSpec("Aba2");  aba2.setIndicator("Minha  Aba2");  aba2.setContent(new  Intent(this,  Aba2Activity.class));    tabHost.addTab(aba1);  tabHost.addTab(aba2);  

 }  

Page 77: Android Básico

Interface  Gráfica  -­‐  Layouts  �  ScrollView:  Utilizado  quando  precisa-­‐se  incluir  muitos  componente  em  uma  tela  permitindo  o  usuário  fazer  a  rolagem  para  a  visualização  de  todos  os  componentes.    <?xml  version="1.0"  encoding="utf-­‐8"?>  <ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"        android:layout_width="fill_parent"        android:layout_height="fill_parent">  

<LinearLayout  android:layout_width="fill_parent"          android:layout_height="fill_parent"          android:orientation="vertical"  >                    <EditText  android:id="@+id/editFilter"                  android:layout_width="match_parent"                  android:layout_height="wrap_content"  />            <Spinner  android:id="@+id/spinner1"                  android:layout_width="match_parent"                  android:layout_height="wrap_content"  />            <RadioButton  android:id="@+id/radioButton1"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="Opção  X"  />  </LinearLayout>  

</ScrollView>

Page 78: Android Básico

Interface  Gráfica  -­‐  Layouts  �  TableLayout:  Exibe  os  componentes  de  View  em  linhas  e  colunas.  <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1"> <TableRow> <TextView android:layout_column="1" android:text="Open..." android:padding="3dip" /> <TextView android:text="Ctrl-O" android:gravity="right" android:padding="3dip" /> </TableRow> <TableRow> <TextView android:layout_column="1" android:text="Save..." android:padding="3dip" /> <TextView android:text="Ctrl-S" android:gravity="right" android:padding="3dip" /> </TableRow>

<TableLayout>

Page 79: Android Básico

Views  � TextView  –  Exibe  um  texto  na  tela.  Suas  principais  propriedades:  �  android:text  –  define  um  texto  �  android:password  –  exibe  o  texto  com  mascara  de  password  

�  android:autoLink  –  Definie  um  link  de  acesso  para:  Web,  e-­‐mail,  phone,  map  e  all.  

Page 80: Android Básico

Views  � EditText  –  View  utilizada  para  a  entrada  de  texto.  Pode  ser  alterada  a  forma  de  entrada  do  texto  através  do  propriedade  android:inputType,  com  as  seguintes  possíbilidades:  �  textPassword  �  number  �  textEmailAddress  �  Entre  outros..  

Page 81: Android Básico

Views  � Button  –  View  que  permite  a  utilização/exibição  de  um  botão  na  tela.  

�  ImageButton  –  Tem  o  mesmo  comportamento  do  Button  mas  exibe  uma  imagem  no  lugar  do  texto.  

� CheckBox  –  Exibe  uma  view  com  uma  caixa  de  seleção.  

� ToggleButton  –  Exibe  uma  view  parecida  com  o  Check  box,  mas  é  utilizado  junto  com  texto,  podendo  fazer  o  controle  de  “ON”  e  “OFF”  

 

Page 82: Android Básico

Views  �  Spinner  –  Exibe  as  opções  no  formato  de  comboBox.  � AlertDialog  –  Permite  a  exibição  de  alertas,  para  criar  um  dialog  é  necessário  criar  uma  instancia  da  classe:  android.app.AlertDialog.Builder.  Alert  permite  a  inclusão  de  titulo,  descrição,  imagem,  botões  e  também  a  customização.  

Page 83: Android Básico

Views  � ProgressDialog  –  É  filha  de  AlertDialog  e  permite  exibir  um  alerta  com  progress  animado.  

� ProgressBar  –  Exibe  uma  barra  de  progresso,  permitindo  a  alteração  dessa  barra  conforme  a  conclusão  de  um  determinado  processo.  

ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "", "Loading. Please wait...", true);

ProgressDialog progressDialog; progressDialog = new ProgressDialog(mContext); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage("Loading..."); progressDialog.setCancelable(false);

Page 84: Android Básico

Views  � Menu/SubMenu  -­‐  Permite  a  criação  de  menus  que  servirá  como  atalho  para  acessar  outras  partes  da  aplicação.  SubMenus  serão  opções  a  mais  que  um  determinado  menu  irá  oferecer  para  o  usuário.  

Page 85: Android Básico

Banco  de  Dados  � Android  utiliza  nativamente  o  banco  de  dados  SQLite,  além  de  disponibilizar  de  APIs  que  possibilitam  a  manipulação  da  base  de  dados  

� Cada  aplicação  pode  criar  um  ou  mais  banco.  Ao  criar  seu  banco  o  mesmo  será  salvo  no  diretório  da  aplição  no  aparelho:  /data/data/pacote_da_app/databases  

� Banco  de  dados  pode  ser  criado  das  seguintes  formas:  � Utilizando  uma  tool  SQLite  e  importando  o  banco  para  a  aplição  

�  Através  a  API  do  SQLite  disponível  no  SDK  � Ou  pelo  terminal  

 

Page 86: Android Básico

Banco  de  Dados  � Para  criar  o  banco  de  dados  através  de  uma  tool  pode  utilizar  a  ferramenta  SQLite  Expert  Personal  http://www.softsland.com/sqlite_expert_personal.html  

� Após  criar  o  banco  de  dados,  basta  executar  seu  projeto  no  emulador  e  importar  a  base  de  dados  no  diretório    /data/data/pacote_da_app/databases  

   

Page 87: Android Básico

Banco  de  dados  � Abrindo  ou  criando  banco  de  dados:  

� Modos  de  permissão  � MODE_PRIVATE:  Permite  apena  a  aplicação  utilizar  o  banco  de  dados  

� MODE_WORLD_WRITEABLE:  Qualquer  um  pode  ler  e  escrever  

� MODE_WORLD_READABLE:  Qualquer  um  pode  somente  ler  

SQLiteDatabase db = context.openOrCreateDatabase( “meu_db”, Context.MODE_PRIVATE, null);

Page 88: Android Básico

Banco  de  Dados  –  Inserindo  dados  � Como  dito  anteriormente  o  Android  SDK  disponibiliza  de  APIs  para  a  manipulação  da  base  de  dados.  

�  Inserindo.  Para  inserir  dados  no  banco,  é  preciso  utilizar  o  objeto  ContentValues,    que  funciona  como  HashTable,  onde  deverá  ser  incluídos  os  valores  de  acordo  com  o  Nome  da  Coluna  +  Valor:  

ContentValues  values  =  new  ContentValues();  values.put("nome",  "Marcelo");  values.put("funcao",  "Engenheiro");            db.insert("funcionarios",  null,  values);

Page 89: Android Básico

Banco  de  dados  -­‐  Atualizando  � Para  atualizar  é  utilizado  o  mesmo  objeto  ContentValues  ContentValues  values  =  new  ContentValues();  values.put("nome",  "Marcelo  Alves");  values.put("funcao",  "Professor");            db.update("funcionarios",  values,  "_id=?",  new  String[]{“20"});

Identificação  das  colunas  para  a  cláusula  Where  

Parâmetros  de  cada  coluna  informada  na  

cláusula  Where  

Page 90: Android Básico

Banco  de  dados  -­‐  Deletando  � Para  deletar  um  ou  mais  registros,  basta  chamar  o  método  delete  da  classe  SQLiteDatabase  

db.delete(“funcionarios",  "_id=?",  new  String[]{“20"});

Page 91: Android Básico

Banco  de  dados  –  Busca  � Para  efetuar  a  busca  no  banco  de  dados  é  necessário  utilizar  o  objeto  Cursor  para  extrair  o  resultado  vindo  do  banco.  

SQLiteDatabase  db  =  openOrCreateDatabase("curso",  Context.MODE_PRIVATE,  null);    List<Funcionario>  funcionarios  =  new  ArrayList<Funcionario>();    Cursor  cursor  =  db.query(“funcionarios",  new  String[]  {  "_id",  "nome",  "funcao"  },  "nome=?",  new  String[]  {  "Marcelo"  },  null,  null,  null);    while  (cursor.moveToNext())  {  

Funcionario  func  =  new  Funcionario();  func.setId(cursor.getInt(0));  func.setNome(cursor.getString(cursor.getColumnIndex("nome")));  func.setFuncao(cursor.getString(cursor.getColumnIndex("funcao")));  funcionarios.add(func);  

}

Page 92: Android Básico

Banco  de  dados  –  Busca  � Entendendo  a  função  query  

Cursor  cursor  =  db.query(“funcionarios",  new  String[]  {  "_id",  "nome",  "funcao"  },  "nome=?",  new  String[]  {  "Marcelo"  },  null,  null,  null);  

Colunas  que  deverão  retornar  no  resultado.  Caso  passe  null  todas  serão  retornadas  

Cláusula  Where  

Parametro  da  cláusula  Where  

group  by  having  order  by  

Page 93: Android Básico

SharedPreferences  �  SharedPreference  pode  ser  usado  como  uma  opção  de  armazenamento  de  informações.  Os  dados  são  salvos  em  arquivos  do  sistema,  onde  tudo  é  gerenciado  pela  API  SharedPreferences.  

� Para  salvar  informações  no  SharedPrefenreces,  basta  informar  o  nome  do  seu  preferences  para  recuperar  ou  criar  um  novo  e  incluir  os  dados.  

Page 94: Android Básico

SharedPreferences  � Criando  e  Incluindo  no  Preferences:  

//Carregando  ou  criando  um  novo  preference  SharedPreferences  prefs  =  getSharedPreferences  ("meu_pref",  MODE_PRIVATE);    //Salvando  preference  SharedPreferences.Editor  editor  =  prefs.edit();  editor.putBoolean("usuario_logado",  false);  editor.commit();    //Recuperando  dados  do  preferences  boolean  isLogado  =  prefs.getBoolean  ("usuario_logado",  false);

Page 95: Android Básico

Arquivos  � Android  disponibiliza  na  activity  métodos  para  a  manipulação  de  arquivos:    �  openFileInput(String)  retorna  FileInputStream  �  openFileOutput(String,  mode)  retorna  FileOutputStream    

�  deleteFile(name)  retorna  boolean    �  getFileStreamPath(name)  retorna  File