Android Aula 5

6,435 views
6,318 views

Published on

Aula 5 de Android para a disciplina Tecnologias para Dispositivos Móveis da FATEC (João Pessoa - PB)

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,435
On SlideShare
0
From Embeds
0
Number of Embeds
378
Actions
Shares
0
Downloads
433
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Android Aula 5

  1. 1. Erisvaldo Gadelha Saraiva JúniorFaculdade de Tecnologia de João Pessoa (FATEC-JP)Especialização em Desenvolvimento para Dispositivos MóveisDisciplina: Tecnologias para Dispositivos MóveisAndroid (Parte 5) E-mail: erisvaldojunior@gmail.com Site: http://erisvaldojunior.com Twitter: @erisvaldojunior
  2. 2. Roteiro da Aula ANDROID GRÁFICOS E TENDÊNCIAS 3.0 ANIMAÇÕES Introdução ao Android 3.0, UI avançada e Tendências do mundo mobile
  3. 3. ANDROID 3.0 Visão geral e recursos do Android 3.0
  4. 4. Novos recursos para o UsuárioNovidades do Android 3.0 Nova interface, otimizada para os tablets • System Bar • Action Bar • 5 Homes Customizáveis • Aplicações recentes
  5. 5. Novos recursos para o UsuárioNovidades do Android 3.0 • Novo Teclado • Manipulação de Textos • Mais conectividade • Aplicações-chave melhores
  6. 6. Novos recursos para o UsuárioNovidades do Android 3.0 Aplicações-chave foram aperfeiçoadas
  7. 7. Novos recursos para o Desenvolvedor Novo framework de UI, refinado para tablets • Activity FragmentsNovidades do Android 3.0 • Widgets remodelados • Action Bar customizável • Notificações mais ricas • Seleção múltipla, clipboard e recurso de drag-and-drop
  8. 8. Novos recursos para o Desenvolvedor • Novo e flexível Framework de animaçãoNovidades do Android 3.0 • Aceleração gráfica 2D por hardware • Renderscript (engine 3D) • Suporte a múltiplos processadores • HTTP Live streaming (M3U) • Framework de DRM • Transferência de arquivos de mídia (MTP/PTP) • Mais opções de conectividade • Segurança para ambientes corporativos • Compatibilidade com aplicações existentes
  9. 9. Fragments Componente que permite a separação de elementos distintos de uma Activity em módulos com interfaces e ciclos de vida próprios. Pode-se combinar múltiplos fragmentos em uma única Activity para construir uma interface de vários painéis na qual cada painel gerencia seu próprio ciclo de vida e entradas do usuário. • Fragments podem ser reusados em múltiplas Activitys; • Pode-se adicionar, remover, substituirAPI Level 11 e animar Fragments dentro de uma Activity; • Por meio de layouts alternativos, pode-se combinar Fragments baseado no tamanho e orientação da tela; • Fragments tem acesso direto a sua Activity e pode acessar a Action Bar da Activity.
  10. 10. Loaders Permitem, de maneira assíncrona, facilmente carregar dados em um Activity ou Fragment. • Estão disponíveis em qualquer Activity ou Fragment; • Provêem carregamento assíncrono de dados;API Level 11 • Monitoram a fonte dos dados e entregam novos resultados a medida que o conteúdo muda; • Reconectam-se automaticamente ao último cursor do Loader quando são recriados após uma mudança de configuração. Assim, não necessitam reconsultar os dados.
  11. 11. Action Bar Substitui a barra de título na parte superior da Activity. Mostra o ícone da aplicação e provê uma nova interface para os itens do menu de opções. Além disso, permite ao desenvolvedor: • Adicionar itens de menu diretamente na Action Bar (Action Item); • Substituir um Action Item por um Widget, como uma caixa de pesquisa (Action View);API Level 11 • Adicionar uma ação para o ícone da aplicação bem como substituí-lo por um ícone personalizado; • Opções de navegação para os fragmentos da Activity; • Personalizar a Action Bar com temas e fundos.
  12. 12. System Clipboard Área de transferência entre aplicações (texto, endereços, intents) • Possibilita acesso a dados que o usuário deseja copiar por meio de um Content Provider. Dados complexos como imagens ou estruturas podem ser copiados de uma aplicação para outra; • Para obter o Clipboard, usa-se o seguinte método: ClipboardManager.getSystemService(CLIPBOARD_SERVICE); • Dados são adicionados ao Clipboard por meio de um objeto da classeAPI Level 11 ClipData, que possui métodos como newPlainText(), newUri() e newIntent(); • Através do método setPrimaryClip(), atribui-se um ClipData a um Clipboard. O conteúdo pode ser obtido através do getPrimaryClip(); • O Clipboard armazena possui apenas um objeto ClipData mas esse objeto pode ser composto por vários itens (ClipData.Item).
  13. 13. Drag and Drop Dados podem ser transferidos de um lugar para outro • Traduzindo para o desenvolvedor: objetos ClipData podem ser movidos de uma View para outra; • Cada operação Drag and Drop é definida por um objeto DragEvent, com estados como ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED e ACTION_DROP definindo seu ciclo de vida;API Level 11 • O método startDrag() pode ser chamado em uma View provendo um ClipData que representa a informação a ser transferida; • O método setOnDragListener() permite que a View registre um OnDragListener que permitirá a recepção de objetos Drag and Drop. O listener obriga a implementação do método onDrag().
  14. 14. Framework de Animação Novo e flexível framework de animação para objetos como Fragment, View e Drawable. • Pode-se definir duração, quantidade de repetições, taxa de atualização, atraso, etc; • Através da classe LayoutTransition é possível estabelecer animaçõesAPI Level 11 automáticas para mudanças que foram realizadas no layout da Activity; • Para definir animações personalizadas, usa-se o método setAnimation() de LayoutTransition, passando-se um animador personalizado (objeto da classe ValueAnimator ou ObjectAnimator).
  15. 15. Framework estendido de UI Diversas novidades para o framework de interface gráfica • Seleção múltipla para ListView e GridView através do método setChoiceMode() e o modo CHOICE_MODE_MULTIPLE_MODAL, além de registrar-se um MultiChoiceModeListener; • Novas APIs para transformar Views 2D e 3D, através de métodos como setAlpha(), setPivotX(), setRotationX() e setScaleX();API Level 11 • Novos temas holográficos que são atribuídos como base padrão quando android:minSdkVersion ou android:targetSdkVersion estão setados para “11” no AndroidManifest.xml; • Novos widgets como AdapterViewAnimation, AdapterViewFlipper, CalendarView, ListPopupWindow, NumberPicker, PopupMenu, SearchView e StackView.
  16. 16. Suporte aprimorado ao JSON Classes JsonReader e JsonWriter adicionados ao pacote org.json. • Cria-se uma instância de JsonReader passando um InputStreamReader como parâmetro; • A leitura começa com beginObject() e o nome da chave é lido comAPI Level 11 nextName(). O valor é lido de acordo com o tipo, ex: nextInt(), nextString(), etc; • Esse processo é repetido enquanto hasNext() retorna verdadeiro.
  17. 17. Pacotes adicionados • android.animation – Novo framework de animação; • android.drm – API para gerenciamento de direitos digitais; • android.renderscript – engine para renderização 3D.API Level 11
  18. 18. Otimizando Apps para o Android 3.0 Qualquer aplicação, por padrão, é compatível com dispositivos que rodam Android 3.0, uma vez que as aplicações Android são “forward- compatible”. • Ambiente de desenvolvimentoOtimizando aplicações • SDK Platform Android 3.0 • Android SDK Tools r10 • Android SDK Platform-Tools r3 • Documentação do Android SDK, API Level 11 • Exemplos do Android SDK, API Level 11 • Criar AVD com Android 3.0 e skin WXGA • Aplicar o novo tema holográfico – Defina o android:sdkTargetVersion=“11” no AndroidManifest, fazendo com que a aplicação use o novo tema holográfico quando estiver rodando em dispositivos Android 3.0. Não é necessário alterar o android:minSdkVersion.
  19. 19. Otimizando Apps para o Android 3.0 • Prover layouts alternativos para telas extra-grandes (xlarge)Otimizando aplicações • Certificar-se que existe um layout otimizado na aplicação para orientação landscape (considerada normal nos tablets); • Usa-se o qualificador xlarge para telas extra-grandes (tablets) e land para a orientação landscape. Pode-se prover imagens, por exemplo, para res/layout-xlarge-land/; • Reconsiderar posicionamento dos botões para adequar-se ao usuário que está segurando o tablet com as duas mãos; • Tamanhos de fonte devem usar unidades “sp”. Em alguns casos, pode-se usar fontes maiores para xlarge. Certificar-se de usar as melhores práticas para independência de tela.
  20. 20. Atualizando ou desenvolvendo uma novaDesenvolvendo para Android 3.0 aplicação para Android 3.0 • Declarar android:minSdkVersion=“11” na tag <uses-sdk> do AndroidManifest.xml, habilitando o novo tema holográfico e Action Bar nas Activities; • Usar a Action Bar; • Dividir as Activities em Fragments; • Usar o novo framework de animação para as transições; • Habilitar aceleração por hardware com android:hardwareAccelerated=“true” para cada <activity> ou para a <application> no AndroidManifest.xml; • Aprimorar os widgets com os novos recursos; • Usar os novos recursos (Drag and Drop), nova API de Bluetooth, sistema de Clipboard, Renderscript, etc; • Publicar a aplicação para telas extra grandes (xlarge), decidindo se a mesma será portável para smartphones ou funcionará apenas nos tablets.
  21. 21. AndroidManifest.xmlDesenvolvendo para Tablets Versão mínima do SDK: API Level 11 (Android 3.0) Suportar apenas telas extra grandes
  22. 22. Gráficos e Animações Property Animation e Renderscript
  23. 23. Property Animation X View Animation Property Animation foi introduzido no Android 3.0 e é mais poderoso e flexível que o View Animation. • View Animation é capaz apenas de animar objetos View em certos aspectos como escala e rotação. A cor de fundo da View, por exemplo, não poderia ser alterada;Property Animation • Property Animation é capaz de animar qualquer objeto e, como o próprio nome diz, modifica uma propriedade (atributo) desse objeto de acordo com o tempo; • Assim, Property Animation permite que se defina: • Duração: pode-se especificar a duração da animação; • Interpolação de tempo: como os valores da propriedade são calculados em termos de uma função do tempo corrente de animação; • Contador de repetições e comportamento: repetir a animação uma determinada quantidade de vezes. Pode-se executar de trás para frente; • Conjuntos de animações: agrupar animações em conjuntos lógicos que são executados em conjunto ou sequencialmente após certos atrasos; • Taxa de atualização: com que frequência os frames da animação são atualizados.C
  24. 24. Como funcionaProperty Animation Utilizando o framework Property Animation para fazer animações Animação linear Animação não-linear
  25. 25. Como funciona ValueAnimator rastreia o tempo de animação e o valor da propriedade que está sendo animada. No exemplo da Animação Não-Linear TimeInterpolator : AccelerateDecelerateInterpolatorProperty Animation TypeEvaluator : IntEvaluator Para iniciar uma animação, cria-se um objeto ValueAnimator passando os valores inicial e final da animação, bem como sua duração. Em seguida, invoca- se o método start() para que a animação possa começar.
  26. 26. Classes que compõem o framework ValueAnimator – calcula os valores da animação e contém detalhes do tempo de cada animação, informação sobre quando a animação se repete, listeners que recebem eventos de atualização e possibilidade de atualização da propriedade por tipo. É importante notar que o ValueAnimator não modifica o valor da propriedadeProperty Animation que está sendo animada, apenas calcula os valores de acordo com o tempo. Para isso, deve-se implementar o método de atualização para modificar a propriedade de acordo com a lógica desejada. ObjectAnimator – herda de ValueAnimator e permite definir um objeto e propriedade para animar. Ao contrário do ValueAnimator, essa classe atualiza a propriedade assim que computa um novo valor para a animação. Usa-se ObjectAnimator na maior parte do tempo, por questões de facilidade. AnimatorSet – agrupa animações e permite que possam ser executadas sequencialmente ou com atrasos específicos.
  27. 27. Evaluators e InterpolatorsProperty Animation
  28. 28. Animando com ValueAnimator No exemplo abaixo, calcula valores entre 0 e 1 durante 1000 milisegundos quando o método start() é executado.Property Animation No exemplo abaixo, calcula valores entre startPropertyValue e endPropertyValue, usando a lógica provida por MyTypeEvaluator durante 1000 milisegundos quando o método start() é executado.
  29. 29. Animando com ValueAnimator • Animator.AnimatorListener • onAnimationStart() – chamado quando a animação começa. • onAnimationEnd() – chamado quando a animação termina. • onAnimationRepeat() – chamado quando a animação se repete. • onAnimationCancel() – chamado quando a animação éProperty Animation cancelada. • ValueAnimator.AnimatorUpdateListener • onAnimationUpdate() – chamado em cada frame da animação. Pode-se capturar o valor calculado através do método getAnimatedValue() e atualizar a propriedade de acordo. Implementar esse listener é obrigatório se usar o ValueAnimator. Exemplo de uso: objeto newBall, propriedade “alpha”, variando de 1 a 0 durante 250ms. Ao término da animação, objeto é removido da lista.
  30. 30. Animando com ObjectAnimator ObjectAnimator facilita para o desenvolvedor que não é mais obrigado a implementar o AnimatorUpdateListener, uma vez que a propriedade animada é atualizada automaticamente. No exemplo abaixo, calcula valores entre 0 e 1 para a propriedade “alpha” doProperty Animation objeto foo durante 1000 milisegundos quando o método start() é executado. • Getter e Setter da propriedade que está sendo animada (“alpha”) precisam existir e devem ser do mesmo tipo que o especificado no ObjectAnimator. No exemplo acima, teríamos na classe do objeto foo: • public void setAlpha(Float alpha); • public Float getAlpha();
  31. 31. Múltiplas animações com AnimatorSetProperty Animation
  32. 32. Animando Views • Propriedades da classe View que facilitam animações: • translationX e translationY;Property Animation • rotation, rotationX e rotationY; • scaleX e scaleY; • pivotX e pivotY; • x e y; • alpha. Exemplo de uso: rotacionar a View “myView” em 360 graus.
  33. 33. Declarando as Animações em XMLProperty Animation
  34. 34. Veja também… • Renderscript – Oferece alto desempenho 3D em nível nativo. Disponível a partir do Android 3.0. http://developer.android.com/guide/topics/graphics/renderscript.html; • OpenGL ES API – Android suporta OpenGL ES 1.0, equivalente a versão 1.3 do OpenGL. Muito utilizado para jogos.View AnimationGráficos 2D e 3D http://developer.android.com/guide/topics/graphics/opengl.html; • Gráficos 2D – Atráves de objetos Drawable, é possível desenhar na tela do dispositivo Android, bem como adicionar imagens. http://developer.android.com/guide/topics/graphics/2d-graphics.html; • View Animation - Permite animar objetos View com operações como escala e rotação. No Android 3.0 pode ser substituído pelo framework de Property Animation. http://developer.android.com/guide/topics/graphics/view- animation.html
  35. 35. Tendências Tendências do mundo mobile
  36. 36. Android Market oferece serviço de In-App Billing Pode-se vender conteúdo digital dentro do aplicativo, como itens ou fases de jogos e funcionalidades extras para aplicativos. O share é de 70% para o desenvolvedor e 30% para a Google em cima do valor da venda.In-App Billing
  37. 37. Como funciona Aplicação envia requisição de pagamento para a aplicação do Android Market via IPC e recebe respostas na forma de Broadcast Intents. A implementação do serviço de In-App Billing se baseia, de modo geral, em três componentes: • Um Service que processa as requisições de pagamento da aplicação e repassa essas requisições para o serviço de In-App Billing; • Um BroadcastReceiver que recebe as respostas de pagamento da aplicaçãoIn-App Billing Android Market; • Um componente de segurança que realiza tarefas relacionadas a segurança do processo, como verificação da assinatura. Opcionalmente, pode-se adicionar mais dois componentes para melhorar a experiência: • Um Handler que processa notificações da compra, erros e status; • Um Observer que envia callbacks para a aplicação para atualizar a interface com o andamento da compra e informaçòes extras.
  38. 38. Como funciona Aplicação envia requisição de pagamento para a aplicação do Android Market via IPC e recebe respostas na forma de Broadcast Intents. • Aplicação chama o método IPCIn-App Billing sendBillingRequest(), disponível na interface MarketBillingService, passando um Bundle como parâmetro; • O Bundle contém vários pares de chave-valor contendo informações como tipo de requisição, item que está sendo comprado e aplicação que está fazendo a requisição.
  39. 39. Como funciona In-App Billing Requests: cada Bundle precisa ter uma chave BILLING_REQUEST que especifica o tipo de requisição que está sendo feita. São cinco tipos suportados:In-App Billing
  40. 40. Como funciona In-App Billing Responses: a resposta síncrona é um Bundle com as seguintes chaves:In-App Billing As mensagens de resposta assíncronas são enviadas na forma de Broadcast Intents e incluem as seguintes:
  41. 41. Como funciona O intent ACTION_PURCHASE_STATE_CHANGED provê para a sua aplicação detalhes de uma ou mais transações. Eis um exemplo da string JSON que é enviada:In-App Billing
  42. 42. Sequências de mensagens Exemplos de requisições realizadas pela aplicação e respostas que são enviadas pela aplicação Android Market.In-App Billing
  43. 43. NFC (Near Field Communication) Pacote android.nfc Permite a comunicação entre dispositivos (iniciador e alvo) com distância de centímetros. O alvo é uma tag RFID ou peer-to-peer. É uma das tecnologias mais promissoras no mundo mobile. Pagamento pelo celular
  44. 44. NFC (Near Field Communication) Casos de Uso Troca de informações
  45. 45. NFC (Near Field Communication) Casos de Uso Ingressos para shows
  46. 46. NFC (Near Field Communication) Casos de UsoChaves
  47. 47. SIP (Session Initiation Protocol) Pacote android.net.sip Android provê uma API que permite a realização de chamadas através do protocolo SIP. Pode ser usado para videochamadas ou mensageiros instantâneos. • Para desenvolver uma aplicação SIP, é necessário que o dispositivo esteja com o Android 2.3 ou superior; • SIP roda sobre uma conexão de dados, seja Wi-Fi ou 3G. Não há como testar SIP em um AVD; • Cada participante em uma aplicação que se comunica por SIP deve possuir uma conta SIP. Existem muitos provedores SIP que oferecem planos diversos.
  48. 48. What’s Your Message?OBRIGADO!

×