+ curso de android 19ª jornada de cursos. + apresentação luiz felipe de oliveira libório 23...

81
+ Curso de Android 19ª Jornada de Cursos

Upload: internet

Post on 18-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+

Curso de Android

19ª Jornada de Cursos

Page 2: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Apresentação

Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE –

2011.1; 1 ano de experiência com a plataforma:

Testes manuais e automáticos; Manutenção de scripts de testes;

Usuário Android há 1 ano: Android 1.5; Android 2.1 e 2.2.

Page 3: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+1. Introdução

Page 4: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Android

Android é um sistema operacional mobile que roda sobre um núcleo Linux;

Foi inicialmente desenvolvido pelo Google e posteriormente pela Open Handset Alliance Google, HTC, Dell, Intel, Motorola, Qualcomm, Texas

Instruments, Samsung, LG, T-Mobile e Nvidia; A Google é a responsável pela gerência do produto e

engenharia de processos.

Page 5: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Android

O primeiro telefone comercialmente disponível a rodar no sistema Android foi o HTC Dream, lançado a 22 de outubro de 2008;

12 milhões de linhas de código, das quais 3 milhões em XML; 2.8 milhões de linhas de C; 2.1 milhões de linhas de código Java; 1.75 milhões de linhas de código em C++;

Page 6: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Android

OK. Linux... Google... Mas por que eu iria querer desenvolver aplicações para Android?? Mais de 200 milhões de dispositivos ativados (550.000

por DIA); 137 países e regiões; Somente no terceiro trimestre de 2011, os usuários

baixaram 2.4 BILHÕES de aplicações para os seus Androids.

Page 7: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Android SDK

O Android SDK (Software Development Kit) permite o desenvolvimento e teste de aplicações.;

Fornece ferramentas para a comunicação do computador com um dispositivo Android;

Suporte a várias versões do Android.

Page 8: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Android SDK

Instalação Requisitos mínimos:

Eclipse Indigo (3.7); JDK 7.

http://developer.android.com/sdk/index.html Baixar a versão .zip

Page 9: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ADT – Plug-in para Eclipse

O ADT (Android Development Tools) é um plug-in para o Eclipse que foi projetado para fornecer um ambiente poderoso para desenvolvimento de aplicativos para Andriod.

Page 10: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ADT – Plug-in para Eclipse

Prover um rápido setup de novos projetos Android, além de: criar interfaces gráficas para aplicações; adicionar componentes de acordo com a API do

Andriod; debugar os aplicativos; exportar o resultado disso na extensão padrão do

Android (.apk) para distribuição da mesma.

Page 11: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ADT – Plugin para Eclipse

“Help > Install New Software...”

Page 12: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ADT – Plug-in para Eclipse

Page 13: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ADT – Plug-in para Eclipse

Window > Android SDK Manager SDK Tools; SDK Platform-tools; Android platforms; Google APIs by Google Inc.; USB Driver for Windows;

Baixar os arquivos referentes à versão 2.3.3 da plataforma Uso nos exemplos; Tempo necessário para fazer o download de todos.

Page 14: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ADT – Plugin para Eclipse

Window > AVD Manager

Page 15: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Criando um projeto Android

New > Project > Android > Android Project

Page 16: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Criando um projeto Android

Nome da aplicação — Nome que vai aparecer no menu de aplicações do Android e no Android Market;

Nome do pacote – Nome do processo a ser gerenciado pelo Android;

Nome da Activity — Inicialmente, pense como o nome que aparecerá na janela do aplicativo;

Page 17: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Estrutura de um projeto Android

Page 18: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Estrutura de um projeto Android

Pasta src/: Inclui o pacote para a aplicação, que no exemplo

é br.ufpe.cin.android.myapk.

R.java: O ADT cria esse arquivo automaticamente e representa

as constantes necessárias para acessar diversos recursos da aplicação Android.

MyApkActivity.java: Implementação da classe principal da aplicação.

Page 19: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Estrutura de um projeto Android

Bibliotecas de referência (Android <versão>): Contém o arquivo android.jar, que é o arquivo da classe

de runtime do Android, localizado no Android SDK.

Pasta res/: Contém os recursos para a aplicação, incluindo:

Ícones (por exemplo, o arquivo ic_laucher.png); Arquivos de layout (o arquivo main.xml); Strings (o arquivo strings.xml), que contém as constantes ligadas

à strings.

Page 20: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Estrutura de um projeto Android

AndriodManifest.xml Descritor de implementação da aplicação de exemplo.

Contém uma descrição mais detalhada da aplicação do que a que é encontrada no arquivo main.xml.

Page 21: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Simulador

Page 22: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Simulador

Page 23: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Simulador

Page 24: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Simulador

Observações importantes: Os passos mostrados acima devem ser feitos para todos

os projetos criados; É necessário criar uma AVD para cada tipo de projeto;

Mesmo que seja Android 2.3.3 e Google APIs 2.3.3! Todas as aplicações contidas no workspace que foram

executadas no mesmo AVD são carregadas quando o simulador é iniciado.

Page 25: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+2. A plataforma

Page 26: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Sobre a plataforma

Page 27: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Activity

A classe Activity é uma parte importante de um ciclo de vida de uma aplicação Android, e a maneira como as Activities são lançadas e interagem entre si é parte fundamental do modelo de aplicação da plataforma.

Uma Activity é um componente simples, que o usuário pode dispor livremente. Interação com o usuário; A classe Activity pode ser associada à criação de uma janela no

qual o desenvolvedor pode colocar a GUI da aplicação.

Page 28: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Activity

Geralmente, uma Acitivity é apresentada para o usuário como uma janela full-screen, mas ela também pode ser usada de outras formas: como janelas flutuantes; dentro de outra Activity.

Ela possui dos métodos que devem ser implementados por todas as suas subclasses: onCreate(Bundle): é onde a Activity é iniciada. onPause(): é chamando quando o usuário deixa a aplicação.

Page 29: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Service

Um Service é um componente de aplicação representando tanto uma operação de longa duração, quanto oferecendo uma funcionalidade suplementar para outras aplicações. Estas tem um tempo de vida igual ao do serviço ao qual estão ligadas.

Muitas confusões sobre a classe Service são resolvidas sabendo-se o que ela não representa: Um Service não é um processo separado. O objeto em si não

executa ações num processo próprio. Um Service não é uma thread. Não é recomendado usar um

Service para realizar algum trabalho fora da thread principal.

Page 30: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Service

Um Service, no entanto, é algo bastante simples, fornecendo duas funcionalidades principais: Um meio para a aplicação informar ao sistema algo que ela quer

que seja executado em background. Isso corresponde a chamar o método Context.startService(), que pede ao sistema para alocar ações para o Service, para ser executado enquanto este ou outro componente o termine.

Uma facilidade para uma aplicação compartilhar alguma de suas funcionalidades com outras aplicações. Isto corresponde a chamar o método Context.bindService(), que permite uma conexão entre aplicações para que haja a interação entre estas.

Page 31: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Intent

Um Intent é uma descrição abstrata de uma operação que será executada. lançar uma Acitivity comunicação com um Service que está executando em

background.

Um Intent provê uma facilidade para fazer uma ligação tardia entre códigos de diferentes aplicações.

Page 32: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Intent

O uso mais significativo disto é no lançamento de Activities, onde um Intent pode ser considerado como um intermediário entre duas Activities. Estrutura de dados passiva mantendo uma descrição

abstrata de uma ação a ser realizada.

Page 33: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Content Providers

Content Providers armazenam e retornam dados, e fazem estes serem acessíveis a todas as aplicações. O único meio de compartilhar dados entre aplicações; No Android não há uma área de armazenamento comum onde

todos os pacotes Android possam acessar estes dados.

Um Content Provider NÃO persiste dados.

Page 34: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Content Providers

O Android é embarcado com um determinado número de Content Providers para tipos pré-definidos de dados Arquivos de mídia; Informações de contatos Etc...

Se o desenvolvedor quiser tornar os dados de suas aplicações visíveis a outras, ele tem duas opções: criar seu próprio Content Provider (como uma subclasse de

ContentProvider.java); adicionar os dados a um Provider existente (observando sempre o

tipo do dado armazenado, para não haver erros de tipo).

Page 35: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widgets

São os componentes da interface da aplicação. Botões; Imagens; Textos; Layouts; Etc...

Page 36: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Notifications

Representa o quão persistente é uma notificação que será apresentada ao usuário.

Uma notificação na barra de status adiciona um ícone na barra de status do sistema (com uma mensagem de texto opcional), e uma mensagem na tela de notificações.

Quando o usuário seleciona a notificação, o Android dispara um Intent definido na instância do objeto Notification (em geral para lançar uma Activity). É possível ainda configurar a notificação para emitir sons, vibrar o

dispositivo ou acender uma luz.

Page 37: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Notifications

Uma notificação na barra de status deve ser usada para qualquer caso em que um serviço rodando em background precise alertar sobre um evento que requer alguma intervenção direta do usuário.

Um serviço rodando em background nunca deve lançar uma Activity por ele mesmo, nem mesmo através de um Intent, se para isto for necessária a interação com o usuário. Em vez disto, o serviço deve criar uma notificação que irá lançar a

Activity quando selecionada pelo usuário.

Page 38: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Resources

Gerencia o acesso a um ou mais recursos de aplicação, estando no topo do controle de ativos da aplicação.

Um ativo significa algum elemento compartilhado por uma estrutura, que precisa ser acessados por um ou mais componentes desta.

Além disso, se comporta como uma API de alto nível para acesso aos dados tipificados desses ativos.

Page 39: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Resources

O sistema de recursos do Android mantém um registro de todo ativo que não seja código associado a uma aplicação.

A classe Resources é utilizada para acessar esses recursos. As ferramentas do Android SDK compilam os recursos da aplicação no arquivo binário da aplicação em tempo de construção.

Page 40: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Resources

Para usar o recurso, este deve estar no local correto da hierarquia de classes (isto é, dentro da pasta res/) e, a cada mudança nesse diretório, o projeto deve ser construído. Então, durante essa construção as ferramentas do SDK geram

símbolos para cada recurso, que podem ser referenciados no código da aplicação.

Page 41: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Resources

Utilizar recursos de aplicação torna mais fácil a atualização de várias características de uma aplicação sem modificar o código-fonte, e, provendo um conjunto de recursos alternativos, otimizar a aplicação para uma variedade de configurações de dispositivos

Page 42: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+R.java

A classe R.java funciona como uma lista indexada, onde todos os recursos do projeto estão definidos.

Esta classe é usada como um atalho para referenciar os recursos da pasta “res” no código.

Page 43: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+R.java

Essa função da classe se torna bastante útil quando estamos utilizando uma IDE que contém um recurso de auto complemento de código (Como o Ctrl+Space do Eclipse).

Isto torna muito mais rápida e interativa a localização da referência que o desenvolvedor procura.

Além disto, quando o desenvolvedor adiciona outros recursos ao projeto, a classe R.java é alterada para manter as referências atualizadas.

Page 44: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+3. Componentes de Tela

Page 45: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+TextView e EditText

Exibe um texto para o usuário e, opcionalmente, permite a edição do mesmo.

Uma TextView é um editor de texto completo, mas a classe básica não permite edição.

Para isto, é usada a EditText, que é uma extensão do TextView. O funcionamento dos dois componentes será explicado em detalhes na seção seguinte.

Page 46: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Gallery

Uma view que mostra itens no centro da tela, com scroll horizontal.

A view Gallery possui valores default, mas estes podem ser configurados de acordo com a necessidade da aplicação.

Page 47: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Button

Representa um widget que o usuário pode pressionar ou clicar para realizar uma ação.

Page 48: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Listeners

Um listener é uma interface em uma View que contém um método que retorna um comportamento. Este método é chamado pelo Android em resposta à determinada interação do usuário com a GUI da aplicação.

onClick() De View.OnClickListener. É chamado quando o usuário apenas

toca no item da tela, ou coloca o foco com as setas de navegação e toca o enter no teclado.

Page 49: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Listeners

onLongClick() De View.OnLongClickListener. É chamado quando o usuário toca e

pressiona um item da tela ou coloca o foco com as setas de navegação e toca e pressiona o enter no teclado. O tempo padrão de ativação é de 1 segundo.

onFocusChange() De View.OnFocusChangeListener. É chamado quando o usuário

coloca ou tira o foco de algum item.

onKey() De View.OnKeyListener. É chamado quando o usuário tem o foco

sobre algum item da tela e pressiona alguma tecla do dispositivo.

Page 50: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Listeners

onTouch() De View.OnTouchListener. É chamado quando o usuário realiza

qualquer ação que caracterize um toque na tela, independente da duração. A única condição é que seja dentro da região que delimita o item.

onCreateContextMenu() De View.OnCreateContextMenuListener. É chamado quando um

menu de context é exibido (como resultado de um toque longo na tela).

Page 51: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Listeners

O método onClick dos exemplos acima não possuem retorno, embora alguns métodos de callback possuam. A razão para o retorno depende do evento em si. onLongClick() e onKey() – Retornam um booleano que indica se o

desenvolvedor se o evento foi concluído ou se ainda nao foi. Isto é, retorna true para indicar que o evento foi tratado e pode ser encerrado; retorna falso se ele não foi tratado e/ou deve continuar para algum outro listener.

onTouch() – Retorna um booleano que indica que o evento foi tratado. É importante notar que este evendo pode ter muitas ações que se sucedem. Sendo assim, se o retorno for false quando a ação de tocar estiver sendo iniciada, isso indica que o evento ainda não foi concluído e que as ações subsequentes não importam no contexto.

Page 52: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+RadioGroup e RadioButton

Um radio button é um botão com dois estados possíveis: marcado ou não-marcado. Quando o radio button não está marcado, o usuário pode pressioná-lo ou clicar sobre ele para marcar. Não é possível ao usuário remover a marcação de um radio button,

uma vez feita.

Radio buttons são geralmente usados juntos em um Radio Group. Quando alguns radio buttons são colocados em um grupo, marcar

um dos membros desmarca outro, se este estiver selecionado.

Page 53: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+RadioGroup e RadioButton

Inicialmente, todos os radio buttons estão desmarcados. É impossível desmarcar um radio button arbitrariamente, mas pode-se desmarcar todos ao mesmo tempo. A seleção é indicada através do id único definido no XML layout.

Page 54: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Checkbox

Um checkbox é um tipo específico de botão de dois estados que pode ser marcado ou não-marcado.

A diferença de um checkbox e um radio button é que o checkbox pode ser marcado e desmarcado pelo usuário, sem que isso afete outros checkboxes.

Page 55: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ImageView

Exibe uma imagem arbitrária, como um ícone.

A classe ImageView pode carregar imagens de várias fontes (como ContentProviders), cuidar da computação das medidas da imagem, para então esta poder ser utilizada em algum layout, oferece vários efeitos de visualização, como redimensionamento e coloração.

Page 56: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ImageButton

Exibe um botão com uma imagem no lugar do texto, que pode ser pressionado ou clicado pelo usuário.

Por padrão, um ImageButton parece um Button, com um background que muda a cor de acordo com o estado do botão.

Page 57: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ImageButton

A imagem na superfície do botão é definida através do atributo “android:src” no XML do elemento ou pelo setImageResource(int) method.

Podemos associar uma imagem diferente a cada um dos diferentes estados do botão (selecionado, com o foco, etc).

Page 58: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Spinner

Uma View que exibe um elemento de uma lista de elementos e permite ao usuário escolher entre eles. Os itens no Spinner vêm do Adapter associado a ele.

Page 59: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+ListView

Uma view que mostra os itens em uma lista vertical, permitindo o scroll entre estes elemente. Os itens vêm do ListAdpater associado a esta view.

Page 60: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Adapters

Um adapter é um objeto que atua como uma ponte entre uma AdapterView e os dados que compõem essa view.

Ele também é responsável por fazer a View para cada item no conjunto de dados.

Page 61: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Alert

Um Alerta é, geralmente, uma pequena janela que aparece em cima de uma Activity.

A Activity perde o foco e o alerta aceita toda a interação do usuário. Alertas são normalmente usados para notificações que devem interromper o uso e para realizar alguma tarefa que direciona algo relacionado com a aplicação em uso.

A classe Dialog é a classe básica para criação de alertas. Porém, o desenvolvedor não deve instanciar uma classe Dialog diretamente.

Page 62: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Alerts

AlertDialog Um alerta que pode ter nenhum, um, dois ou três botões e/ou

uma lista de itens selecionáveis, que inclui checkboxes ou radio buttons.

ProgressDialog Um alerta que exibe uma barra de progresso. Como é uma

subclasse de AlertDialog, ela pode ter botões.

DatePickerDialog Um alerta que permite ao usuário selecionar uma data.

TimePickerDialog Um alerta que permite ao usuário selecionar a hora.

Page 63: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Toast

Uma Toast é uma view que contém uma mensagem curta e rápida para o usuário. Quando a view é mostrada ao usuário, aparece como uma view flutuante sobre a aplicação. Ela nunca vai receber o foco. O usuário pode estar até interagindo com algum widget.

A idéia do Toast é ser um mínimo intrusivo possível. Exemplos disso são o controle de volume, ou uma mensagem

informando que as configurações foram salvas.

A maneira mais simples de utilizar essa classe é chamar algum dos métodos estáticos que retornam um objeto Toast.

Page 64: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Atributos XML

São atributos que definem a aparência dos widgets em um determinado layout, bem como como eles são identificados no código durante o desenvolvimento. Eles será discutidos com mais detalhes na seção seguinte.

Page 65: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+4. Propriedades e eventos dos componentes trabalhados

Page 66: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Ação e Estilo

Precisamos conhecer como podemos implementar as ações que desejamos que nossas aplicações realizem. Isso é feito através de um ou mais eventos Bem como dos seus respectivos Listeners.

Queremos também moldar a aparência dos componentes da nossa aplicação. Para isso, são usadas as propriedades do widget.

Page 67: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget TextView

Propriedade Em XML Em Java Descrição

Text

android:text

setText(CharSequence c)

Nessa propriedade, você define o texto a ser exibido na tela.

Text color

android:textColor

setTextColor(Color c)

Nessa propriedade, você define a cor de texto.

Background android:background

setBackGroundColor(Color c)

Nessa propriedade , você define o cor de fundo do componenteexibido.Valor: #000000 até #FFFFFF.

Page 68: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget TextView

Propriedade Em XML Em Java DescriçãoText size

android:textSize

setTextSize(float tamanho) ou setTextSize(int unidade, inttamanho)

Define o tamanho do texto. O tamanho da fonte pode serespecificado em várias notações : px (pixels),sp(scaled-pixels) ,mm(milímetros), in (polegadas) e etc.

Typeface

android:typeface

setTypeface(Typefacefonte)

Essa propriedade serve para definir uma fonte ao texto(normal,sans,serif,monospace).

Page 69: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget TextView

Método do evento

Evento Métodos de callback

Descrição

setOnClickListener

OnClickListener

onClick(View v)

Esse evento é disparado toda vez que o componente for clicado,disparando o método onClick.

Page 70: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget EditText

Propriedade Em XML Em Java DescriçãoCapitalize

android:capitalize - Essa propriedade serve para definir o tipo capitalização daspalavras. Por padrão, o valor e “none”(nenhum). Os possíveisvalores para essa propriedade são : “words”,”sentences” e”characters”

Password

android:password

- Com essa propriedade você habilita a digitação de senhas. Ovalor padrão desse atributo é “false”.

Hintestivervazia.

android:hint

setHint(CharSequence c)

define uma mensagem que aparecerá quando a EditText

Page 71: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget EditText

Propriedade Em XML Em Java DescriçãoText

android:text

setText(CharSequence c)

Nessa propriedade, você define o texto a ser exibido na tela.

Text color

android:textColor

setTextColor(Color c)

Nessa propriedade, você define a cor de texto.

Background android:background

setBackGroundColor(Color c)

Nessa propriedade , você define o cor de fundo do componenteexibido.Valor: #000000 até #FFFFFF.

Text size

android:textSize

setTextSize(floattamanho) ousetTextSize(intunidade, inttamanho)

Define o tamanho do texto. O tamanho da fonte pode serespecificado em várias notações : px (pixels),sp(scaled-pixels) ,mm(milímetros), in (polegadas) e etc.

Page 72: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget EditText

Método do evento

Evento Métodos de callback

Descrição

setOnClickListener

OnClickListener

onClick(View v)

Esse evento é disparado toda vez que o componente for clicado,disparando o método onClick.

setOnKeyListener

OnKeyListener

onKey(View v,int KeyCode,KeyEventevent)

Esse evento é disparado toda vez que a tecla é acionada,disparando o método onKey.

setOnFocusChangeListener

OnFocusChangeListener

onFocusChange(View v,booleanhasFocus)

Esse método é disparado toda vez quando um componenteEditText ganha ou perde foco.

Page 73: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget Button

Propriedade Em XML Em Java DescriçãoText

android:text

setText(CharSequence c)

Nessa propriedade, você define o texto a ser exibido na tela.

Text color

android:textColor

setTextColor(Color c)

Nessa propriedade, você define a cor de texto.

Text size

android:textSize

setTextSize(floattamanho) ousetTextSize(intunidade, inttamanho)

Define o tamanho do texto. O tamanho da fonte pode serespecificado em várias notações : px (pixels),sp(scaled-pixels) ,mm(milímetros), in (polegadas) e etc.

Typeface

android:typeface

setTypeface(Typefacefonte)

Essa propriedade serve para definir uma fonte ao texto(normal,sans,serif,monospace).

Page 74: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget Button

Método do evento

Evento Métodos de callback

Descrição

setOnClickListener

OnClickListener

onClick(View v)

Esse evento é disparado toda vez que o componente for clicado,disparando o método onClick.

setOnKeyListener

OnKeyListener

onKey(Viewv,int KeyCode,KeyEventevent)

Esse evento é disparado toda vez que a tecla é acionada,disparando o método onKey.

Page 75: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widgets Checkbox/RadioButton

Propriedade Em XML Em Java DescriçãoText

android:text

setText(CharSequence c)

Nessa propriedade, você define o texto a ser exibido na tela.

Text color

android:textColor

setTextColor(Color c)

Nessa propriedade, você define a cor de texto.

Checked android:checked setChecked(booleanestado)

Nessa propriedade você define o estado do CheckBox, se estarámarcado (true) ou não (false).

Page 76: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widgets Checkbox/RadioButton

Método do evento

Evento Métodos de callback

Descrição

setOnClickListener

OnClickListener

onClick(View v)

Esse evento é disparado toda vez que o componente for clicado,disparando o método onClick.

setOnCheckedChangeListener

OnCheckedChangeListener

onCheckedChanged(CompoundButtoncb,booleanb)

Esse evento será disparado toda vez que o estado do CheckBoxfor modificado, ou seja, marcado ou desmarcado, disparando o método onCheckedChanged.

Page 77: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widgets Spinner / ListView

Propriedade DescriçãosetAdapter(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 getItemAtPosition(intposicao)

Retorna em um tipo Object o elemento de uma determinada posição, passada como parâmetro

Object getSelectedItem()

Essa função retorna em um tipo Object, o item selecionado.

Page 78: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widgets Spinner / ListView

Método do evento

Evento Métodos de callback

Descrição

setOnClickListener

OnClickListener

onClick(View v)

Esse evento é disparado toda vez que o componente for clicado,disparando o método onClick.

setOnItemClickListener

OnItemClickListener

onItemClick(AdapterView<?> a, Viewv, int I,long l)

Esse evento será disparado toda vez que um derminado item forclicado, disparando o método onItemClick.

setOnItemSelectedListeneronNothingSelected(AdapterView av)

OnItemSelectedListener

onItemSelected(AdapterView av, Viewv,int posição,longid)

Esse evento será disparado toda vez que um determinado item forselecionado, disparando o método onItemSelected.

Page 79: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget ImageView

Propriedade Em XML Em Java DescriçãoSrc

android:src

setImageResource(intId)

Nessa propriedade, você define a imagem que será exibida natela.

Propriedade DescriçãosetAdapter(SpinnerAdapter a)

Nesse método você define os elementos que irão compor esse componente através de um vetor (array).

Método do evento

Evento Métodos de callback

Descrição

setOnClickListener

OnClickListener

onClick(View v)

Esse evento é disparado toda vez que o componente for clicado,disparando o método onClick.

Page 80: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+Widget Gallery

Propriedade DescriçãosetAdapter(SpinnerAdapter a)

Nesse método você define os elementos que irão compor esse componente através de um vetor (array).

Método do evento

Evento Métodos de callback

Descrição

setOnClickListener

OnClickListener

onClick(View v)

Esse evento é disparado toda vez que o componente for clicado,disparando o método onClick.

setOnItemClickListener

OnItemClickListener

onItemClick(AdapterView<?> a, Viewv, int I,long l)

Esse evento será disparado toda vez que um derminado item forclicado, disparando o método onItemClick.

Page 81: + Curso de Android 19ª Jornada de Cursos. + Apresentação Luiz Felipe de Oliveira Libório 23 anos; Graduação em Ciência da Computação – UFPE – 2011.1;

+O que foi visto até agora:

1. Introdução

2. A plataforma

3. Componentes de Tela

4. Propriedades e eventos dos componentes trabalhados