A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Treinamento em Android

Apresentações semelhantes


Apresentação em tema: "Treinamento em Android"— Transcrição da apresentação:

1 Treinamento em Android

2 Apresentação Luiz Felipe de Oliveira Libório 23 anos;
Graduação em Ciência da Computação – UFPE – ; ~2 anos de experiência com a plataforma: Testes manuais e automáticos; Manutenção de scripts de testes; Desenvolvimento de aplicativos; Usuário Android há ~2 anos: Android 1.5; Android 2.1 e 2.2. Android 3.2;

3 1. Introdução

4 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.

5 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++;

6 Android OK. Linux... Google... Mas por que eu iria querer desenvolver aplicações para Android?? Mais de 200 milhões de dispositivos ativados ( milhão por DIA); 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. 1.5 bilhões de downloads por mês.

7 Android Como eu faço parte DISSO?

8 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.

9 Android SDK Instalação Requisitos mínimos: Eclipse Juno (4.2); JDK 7.
Baixar a versão .zip

10 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.

11 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.

12 ADT – Plugin para Eclipse

13 ADT – Plug-in para Eclipse

14 ADT – Plug-in para Eclipse
Na tela “Available Software”, selecione o checkbox de Developer Tools e aperte Next; Na próxima tela, vão aparecer todos os componentes que serão baixados. Clique em Next. Leia e aceite os termos da licença e aperte em Finish. Se aparecer algum Warning, aperte em OK. Ele fala da autenticidade do software, que não pode ser estabelecida; Quando a instalação for concluída, reinicie o Eclipse.

15 ADT – Plug-in para Eclipse

16 ADT – Plug-in para Eclipse

17 ADT – Plugin para Eclipse

18 Criando um projeto Android
New > Project > Android > Android Project

19 Criando um projeto Android

20 Criando um projeto Android

21 Estrutura de um projeto Android

22 Estrutura de um projeto Android
Pasta src/: Inclui o pacote para a aplicação, que no exemplo é br.org.citi.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.

23 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.

24 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.

25 Simulador

26 Simulador

27 Simulador

28 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; Versões diferentes de Android; Mesmo que seja Android e Google APIs 4.1.2! Todas as aplicações contidas no workspace que foram executadas no mesmo AVD são carregadas quando o simulador é iniciado.

29 2. A plataforma

30 Sobre a plataforma

31 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.

32 Activity Geralmente, uma Acitivity é apresentada para o usuário como uma janela full-screen, mas ela também pode ser usada de outras formas: 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.

33 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.

34 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.

35 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.

36 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.

37 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.

38 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).

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

40 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.

41 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.

42 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.

43 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.

44 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.

45 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

46 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.

47 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.

48 3. Componentes de Tela

49 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.

50 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.

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

52 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.

53 Listeners onLongClick() onFocusChange() onKey()
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.

54 Listeners onTouch() onCreateContextMenu()
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).

55 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 não 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 evento 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.

56 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.

57 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.

58 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.

59 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.

60 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.

61 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).

62 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.

63 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.

64 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.

65 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.

66 Alerts AlertDialog ProgressDialog DatePickerDialog TimePickerDialog
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.

67 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.

68 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.

69 4. Layouts

70 FrameLayout FrameLayout é o tipo mais simples de layout.
Ele é, basicamente, um espaço em branco na tela, que o desenvolvedor pode preencher com um único objeto. Todos os componentes do layout são fixados no topo esquerdo da tela. Não é permitida outra localidade para ele. Itens subsequentes são simplesmente desenhados sobre os outros, encobrindo total ou parcialmente.

71 LinearLayout Um LinearLayout alinha todos os componentes em uma única direção – vertical ou horizontal, dependendo da orientação fornecida. Todos os componentes são enfileirados um depois do outro, sendo uma lista vertical tendo um elemento por linha, enquanto que uma horizontal tem a altura máxima de uma linha (no caso, a altura do maior item).

72 LinearLayout O LinearLayout respeita margens entre os itens e o alinhamento de cada item de acordo com o espaço. LinearLayout também pode atribuir um peso a componentes, para mostrar a importância deste para a view, e permite ao componente ocupar todo o espaço restante da view. No caso de vários valores de pesos serem atribuídos (sendo estes inteiros), cada item é expandido proporcionalmente ao valor do seu peso. O valor default é zero.

73 LinearLayout Para criar um layout de tamanho proporcional, crie um container com os atributos “layout_width” e “layout_height” setados para “fill_parent”; atribua os valores dos itens de height e width para zero.

74 TableLayout TableLayout posiciona seus componentes em linhas e colunas. Os espaços desse layout não mostram as bordas das linhas, colunas e células. A quantidade de colunas na tabela será determinada pelo linha com o maior número de células. Uma tabela pode ter células vazias. TableRow são sub-elementos de TableLayout, onde cada um deles define uma linha na tabela). Cada linha possui zero ou mais células, onde cada uma define uma outra View ImageView, TextView, etc), ou ainda, outro ViewGroup aninhado (outro TableLayout, por exemplo).

75 TableLayout

76 TableLayout <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns: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>

77 TableLayout <View         android:layout_height="2dip"         android:background="#FF909090" />     <TableRow>         <TextView             android:text="X"             android:padding="3dip" />         <TextView             android:text="Import..."             android:padding="3dip" />     </TableRow>

78 TableLayout <View         android:layout_height="2dip"         android:background="#FF909090" />     <TableRow>         <TextView             android:text="X"             android:padding="3dip" />         <TextView             android:text="Import..."             android:padding="3dip" />     </TableRow>

79 TableLayout <View         android:layout_height="2dip"         android:background="#FF909090" />     <TableRow>         <TextView             android:text="X"             android:padding="3dip" />         <TextView             android:text="Import..."             android:padding="3dip" />     </TableRow> <TableRow>         <TextView             android:text="X"             android:padding="3dip" />

80 TableLayout         <TextView             android:text="Export..."             android:padding="3dip" />         <TextView             android:text="Ctrl-E"             android:gravity="right"             android:padding="3dip" />     </TableRow>     <View android:layout_height="2dip"         android:background="#FF909090" />TableRow>         <TextView             android:layout_column="1"             android:text="Quit"             android:padding="3dip" />     </TableRow> </TableLayout>

81 TableLayout TableRow>         <TextView             android:layout_column="1"             android:text="Quit"             android:padding="3dip" />     </TableRow> </TableLayout>

82 RelativeLayout RelativeLayout faz com que as posições dos componentes sejam determinadas relativamente ao layout ou a outro componente. Então, é possível alinhar dois elementos a margem direita, ou colocar um abaixo do outro, centralizado na tela, etc. Os elementos são renderizados na ordem fornecida, então, se o primeiro elemento for centralizado na tela, outros elementos alinham-se relativamente ao primeiro. Também, por conta dessa ordenação, se for usado XML para especificar o layout, o elemento que o desenvolvedor irá usar como referencia tem que estar listado primeiro que os outros.

83 RelativeLayout

84 RelativeLayout <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="     android:layout_width="fill_parent"     android:layout_height="fill_parent">     <TextView                 android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="Type here:"/>     <EditText                 android:layout_width="fill_parent"         android:layout_height="wrap_content"                

85 RelativeLayout <Button                 android:layout_width="wrap_content"         android:layout_height="wrap_content"                 android:layout_alignParentRight="true"         android:layout_marginLeft="10dip"         android:text="OK" />     <Button         android:layout_width="wrap_content"         android:layout_height="wrap_content"                         android:text="Cancel" /> </RelativeLayout>


Carregar ppt "Treinamento em Android"

Apresentações semelhantes


Anúncios Google