Your SlideShare is downloading. ×
Android Aula 5
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Android Aula 5

5,883
views

Published on

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

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
5,883
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
394
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. ANDROID 3.0 Visão geral e recursos do Android 3.0
  • 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. Novos recursos para o UsuárioNovidades do Android 3.0 • Novo Teclado • Manipulação de Textos • Mais conectividade • Aplicações-chave melhores
  • 6. Novos recursos para o UsuárioNovidades do Android 3.0 Aplicações-chave foram aperfeiçoadas
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. AndroidManifest.xmlDesenvolvendo para Tablets Versão mínima do SDK: API Level 11 (Android 3.0) Suportar apenas telas extra grandes
  • 22. Gráficos e Animações Property Animation e Renderscript
  • 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. Como funcionaProperty Animation Utilizando o framework Property Animation para fazer animações Animação linear Animação não-linear
  • 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. 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. Evaluators e InterpolatorsProperty Animation
  • 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. 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. 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. Múltiplas animações com AnimatorSetProperty Animation
  • 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. Declarando as Animações em XMLProperty Animation
  • 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. Tendências Tendências do mundo mobile
  • 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. 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. 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. 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. 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. 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. 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. 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. NFC (Near Field Communication) Casos de Uso Troca de informações
  • 45. NFC (Near Field Communication) Casos de Uso Ingressos para shows
  • 46. NFC (Near Field Communication) Casos de UsoChaves
  • 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. What’s Your Message?OBRIGADO!