Erisvaldo Gadelha Saraiva Júnior
Faculdade de Tecnologia de João Pessoa (FATEC-JP)Especialização em Desenvolvimento para Dispositivos MóveisDisciplina: Tecnologias para Dispositivos Móveis
Android (Parte 5)
E-mail: [email protected]: http://erisvaldojunior.com
Twitter: @erisvaldojunior
Roteiro da Aula
Introdução ao Android 3.0, UI avançada e Tendências do mundo mobile
ANDROID 3.0
GRÁFICOS E ANIMAÇÕES
TENDÊNCIAS
ANDROID 3.0
Visão geral e recursos do Android 3.0
No
vid
ade
s d
o A
nd
roid
3.0
Novos recursos para o UsuárioNova interface, otimizada para os tablets
• System Bar• Action Bar• 5 Homes Customizáveis• Aplicações recentes
No
vid
ade
s d
o A
nd
roid
3.0
Novos recursos para o Usuário
• Novo Teclado• Manipulação de Textos• Mais conectividade• Aplicações-chave melhores
No
vid
ade
s d
o A
nd
roid
3.0
Novos recursos para o UsuárioAplicações-chave foram aperfeiçoadas
No
vid
ade
s d
o A
nd
roid
3.0
Novos recursos para o DesenvolvedorNovo framework de UI, refinado para tablets
• Activity Fragments• Widgets remodelados• Action Bar customizável• Notificações mais ricas• Seleção múltipla, clipboarde recurso de drag-and-drop
No
vid
ade
s d
o A
nd
roid
3.0
Novos recursos para o Desenvolvedor
• Novo e flexível Framework de animação• 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
AP
I Le
vel 1
1
FragmentsComponente que permite a separação de elementos distintos deuma Activity em módulos com interfaces e ciclos de vida próprios.
Pode-se combinar múltiplos fragmentos em uma única Activity paraconstruir uma interface de vários painéis na qual cada painelgerencia seu próprio ciclo de vida e entradas do usuário.
• Fragments podem ser reusados em múltiplas Activitys;
• Pode-se adicionar, remover, substituir e animarFragments dentro de uma Activity;
• Por meio de layouts alternativos, pode-se combinarFragments baseado no tamanho e orientação da tela;
• Fragments tem acesso direto a sua Activity e podeacessar a Action Bar da Activity.
AP
I Le
vel 1
1
LoadersPermitem, de maneira assíncrona, facilmente carregar dados emum Activity ou Fragment.
• Estão disponíveis em qualquer Activity ou Fragment;
• Provêem carregamento assíncrono de dados;
• Monitoram a fonte dos dados e entregam novosresultados a medida que o conteúdo muda;
• Reconectam-se automaticamente ao último cursor doLoader quando são recriados após uma mudança deconfiguração. Assim, não necessitam reconsultar os dados.
AP
I Le
vel 1
1
Action BarSubstitui a barra de título na parte superior da Activity. Mostra oícone da aplicação e provê uma nova interface para os itens domenu 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 umacaixa de pesquisa (Action View);
• Adicionar uma ação para o ícone da aplicação bem comosubstituí-lo por um ícone personalizado;
• Opções de navegação para os fragmentos da Activity;
• Personalizar a Action Bar com temas e fundos.
AP
I Le
vel 1
1
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 umContent Provider. Dados complexos como imagens ou estruturas podemser 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 classeClipData, que possui métodos como newPlainText(), newUri() enewIntent();
• Através do método setPrimaryClip(), atribui-se um ClipData a umClipboard. O conteúdo pode ser obtido através do getPrimaryClip();
• O Clipboard armazena possui apenas um objeto ClipData mas esseobjeto pode ser composto por vários itens (ClipData.Item).
AP
I Le
vel 1
1
Drag and DropDados podem ser transferidos de um lugar para outro
• Traduzindo para o desenvolvedor: objetos ClipData podem ser movidosde uma View para outra;
• Cada operação Drag and Drop é definida por um objeto DragEvent, comestados como ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED eACTION_DROP definindo seu ciclo de vida;
• O método startDrag() pode ser chamado em uma View provendo umClipData que representa a informação a ser transferida;
• O método setOnDragListener() permite que a View registre umOnDragListener que permitirá a recepção de objetos Drag and Drop. Olistener obriga a implementação do método onDrag().
AP
I Le
vel 1
1
Framework de AnimaçãoNovo e flexível framework de animação para objetos comoFragment, View e Drawable.
• Pode-se definir duração, quantidade de repetições, taxa deatualização, atraso, etc;
• Através da classe LayoutTransition é possível estabelecer animaçõesautomáticas para mudanças que foram realizadas no layout da Activity;
• Para definir animações personalizadas, usa-se o métodosetAnimation() de LayoutTransition, passando-se um animadorpersonalizado (objeto da classe ValueAnimator ou ObjectAnimator).
AP
I Le
vel 1
1
Framework estendido de UIDiversas novidades para o framework de interface gráfica
• Seleção múltipla para ListView e GridView através do métodosetChoiceMode() e o modo CHOICE_MODE_MULTIPLE_MODAL, alémde registrar-se um MultiChoiceModeListener;
• Novas APIs para transformar Views 2D e 3D, através de métodoscomo setAlpha(), setPivotX(), setRotationX() e setScaleX();
• Novos temas holográficos que são atribuídos como base padrãoquando android:minSdkVersion ou android:targetSdkVersion estãosetados para “11” no AndroidManifest.xml;
• Novos widgets como AdapterViewAnimation, AdapterViewFlipper,CalendarView, ListPopupWindow, NumberPicker, PopupMenu,SearchView e StackView.
AP
I Le
vel 1
1
Suporte aprimorado ao JSONClasses JsonReader e JsonWriter adicionados ao pacote org.json.
• Cria-se uma instância de JsonReader passando umInputStreamReader como parâmetro;
• A leitura começa com beginObject() e o nome da chave é lido comnextName(). O valor é lido de acordo com o tipo, ex: nextInt(),nextString(), etc;
• Esse processo é repetido enquanto hasNext() retorna verdadeiro.
AP
I Le
vel 1
1
Pacotes adicionados
• android.animation – Novo framework de animação;
• android.drm – API para gerenciamento de direitos digitais;
• android.renderscript – engine para renderização 3D.
Oti
miz
and
oap
licaç
õe
s
Otimizando Apps para o Android 3.0
• Ambiente de desenvolvimento• 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 oandroid:sdkTargetVersion=“11” no AndroidManifest,fazendo com que a aplicação use o novo tema holográficoquando estiver rodando em dispositivos Android 3.0. Não énecessário alterar o android:minSdkVersion.
Qualquer aplicação, por padrão, é compatível com dispositivos querodam Android 3.0, uma vez que as aplicações Android são “forward-
compatible”.
Oti
miz
and
oap
licaç
õe
s
Otimizando Apps para o Android 3.0
• Prover layouts alternativos para telas extra-grandes(xlarge)
• Certificar-se que existe um layout otimizado na aplicação paraorientação landscape (considerada normal nos tablets);
• Usa-se o qualificador xlarge para telas extra-grandes (tablets) eland para a orientação landscape. Pode-se prover imagens, porexemplo, para res/layout-xlarge-land/;
• Reconsiderar posicionamento dos botões para adequar-se aousuá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 asmelhores práticas para independência de tela.
De
sen
volv
en
do
par
aA
nd
roid
3.0 Atualizando ou desenvolvendo uma nova
aplicação para Android 3.0
• Declarar android:minSdkVersion=“11” na tag <uses-sdk> doAndroidManifest.xml, habilitando o novo tema holográfico e Action Bar nasActivities;
• 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 deClipboard, Renderscript, etc;
• Publicar a aplicação para telas extra grandes (xlarge), decidindo se a mesmaserá portável para smartphones ou funcionará apenas nos tablets.
De
sen
volv
en
do
par
aTa
ble
ts
AndroidManifest.xml
Versão mínima do SDK: API Level 11 (Android 3.0)
Suportar apenas telas extra grandes
Gráficos e Animações
Property Animation e Renderscript
Pro
pe
rty
An
imat
ion
Property Animation X View AnimationProperty Animation foi introduzido no Android 3.0 e é maispoderoso e flexível que o View Animation.
• View Animation é capaz apenas de animar objetos View em certos aspectoscomo escala e rotação. A cor de fundo da View, por exemplo, não poderia seralterada;
• Property Animation é capaz de animar qualquer objeto e, como o próprionome diz, modifica uma propriedade (atributo) desse objeto de acordo com otempo;
• 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 calculadosem termos de uma função do tempo corrente de animação;• Contador de repetições e comportamento: repetir a animação umadeterminada quantidade de vezes. Pode-se executar de trás para frente;• Conjuntos de animações: agrupar animações em conjuntos lógicos quesão executados em conjunto ou sequencialmente após certos atrasos;• Taxa de atualização: com que frequência os frames da animação sãoatualizados.C
Pro
pe
rty
An
imat
ion
Como funcionaUtilizando o framework Property Animation para fazer animações
Animação linear
Animação não-linear
Pro
pe
rty
An
imat
ion
Como funcionaValueAnimator rastreia o tempo de animação e o valor dapropriedade que está sendo animada.
No exemplo da Animação Não-Linear
TimeInterpolator : AccelerateDecelerateInterpolatorTypeEvaluator : IntEvaluator
Para iniciar uma animação, cria-se um objeto ValueAnimator passando osvalores 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.
Pro
pe
rty
An
imat
ion
Classes que compõem o framework
ValueAnimator – calcula os valores da animação e contém detalhes do tempode cada animação, informação sobre quando a animação se repete, listenersque recebem eventos de atualização e possibilidade de atualização dapropriedade por tipo.
É importante notar que o ValueAnimator não modifica o valor da propriedadeque 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 apropriedade de acordo com a lógica desejada.
ObjectAnimator – herda de ValueAnimator e permitedefinir um objeto e propriedade para animar. Ao contráriodo ValueAnimator, essa classe atualiza a propriedade assimque computa um novo valor para a animação. Usa-seObjectAnimator na maior parte do tempo, por questões defacilidade.
AnimatorSet – agrupa animações e permite que possam ser executadassequencialmente ou com atrasos específicos.
Pro
pe
rty
An
imat
ion
Evaluators e Interpolators
Pro
pe
rty
An
imat
ion
Animando com ValueAnimator
No exemplo abaixo, calcula valores entre 0 e 1 durante 1000 milisegundosquando o método start() é executado.
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.
Pro
pe
rty
An
imat
ion
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 écancelada.
• ValueAnimator.AnimatorUpdateListener• onAnimationUpdate() – chamado em cada frame da animação.Pode-se capturar o valor calculado através do métodogetAnimatedValue() 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 durante250ms. Ao término da animação, objeto é removido da lista.
Pro
pe
rty
An
imat
ion
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” do 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 queo especificado no ObjectAnimator. No exemplo acima,teríamos na classe do objeto foo:
• public void setAlpha(Float alpha);• public Float getAlpha();
Pro
pe
rty
An
imat
ion
Múltiplas animações com AnimatorSet
Pro
pe
rty
An
imat
ion
Animando Views
• Propriedades da classe View que facilitamanimações:
• translationX e translationY;• rotation, rotationX e rotationY;• scaleX e scaleY;• pivotX e pivotY;• x e y;• alpha.
Exemplo de uso: rotacionar a View “myView” em 360 graus.
Pro
pe
rty
An
imat
ion
Declarando as Animações em XML
Grá
fico
s2
D e
3D
V
iew
An
imat
ion
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ão1.3 do OpenGL. Muito utilizado para jogos.http://developer.android.com/guide/topics/graphics/opengl.html;
• Gráficos 2D – Atráves de objetos Drawable, é possível desenhar na telado 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 comoescala e rotação. No Android 3.0 pode ser substituído pelo framework deProperty Animation.http://developer.android.com/guide/topics/graphics/view-animation.html
Tendências
Tendências do mundo mobile
In-A
pp
Bill
ing
Android Market oferece serviço de In-App BillingPode-se vender conteúdo digital dentro do aplicativo, comoitens ou fases de jogos e funcionalidades extras paraaplicativos. O share é de 70% para o desenvolvedor e 30% paraa Google em cima do valor da venda.
In-A
pp
Bill
ing
Como funcionaAplicação envia requisição de pagamento para a aplicação doAndroid Market via IPC e recebe respostas na forma deBroadcast Intents.
A implementação do serviço de In-App Billing se baseia, de modo geral, emtrês componentes:
• Um Service que processa as requisições de pagamento da aplicação e repassaessas requisições para o serviço de In-App Billing;
• Um BroadcastReceiver que recebe as respostas de pagamento da aplicaçãoAndroid Market;
• Um componente de segurança que realiza tarefas relacionadas a segurançado 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 interfacecom o andamento da compra e informaçòes extras.
In-A
pp
Bill
ing
Como funcionaAplicação envia requisição de pagamento para a aplicação doAndroid Market via IPC e recebe respostas na forma deBroadcast Intents.
• Aplicação chama o método IPCsendBillingRequest(), disponível nainterface MarketBillingService,passando um Bundle como parâmetro;
• O Bundle contém vários pares dechave-valor contendo informaçõescomo tipo de requisição, item que estásendo comprado e aplicação que estáfazendo a requisição.
In-A
pp
Bill
ing
Como funcionaIn-App Billing Requests: cada Bundle precisa ter uma chaveBILLING_REQUEST que especifica o tipo de requisição que estásendo feita. São cinco tipos suportados:
In-A
pp
Bill
ing
Como funcionaIn-App Billing Responses: a resposta síncrona é um Bundle comas seguintes chaves:
As mensagens de resposta assíncronas são enviadas na forma de Broadcast Intents e incluem as seguintes:
In-A
pp
Bill
ing
Como funcionaO intent ACTION_PURCHASE_STATE_CHANGED provê para asua aplicação detalhes de uma ou mais transações. Eis umexemplo da string JSON que é enviada:
In-A
pp
Bill
ing
Sequências de mensagensExemplos de requisições realizadas pela aplicação e respostasque são enviadas pela aplicação Android Market.
NFC
(N
ear
Fie
ld C
om
mu
nic
atio
n)
Pacote android.nfcPermite a comunicação entre dispositivos (iniciador e alvo) comdistância de centímetros. O alvo é uma tag RFID ou peer-to-peer.É uma das tecnologias mais promissoras no mundo mobile.
Pagamento pelo celular
NFC
(N
ear
Fie
ld C
om
mu
nic
atio
n)
Troca de informações
Casos de Uso
NFC
(N
ear
Fie
ld C
om
mu
nic
atio
n)
Ingressos para shows
Casos de Uso
NFC
(N
ear
Fie
ld C
om
mu
nic
atio
n)
Chaves
Casos de Uso
SIP
(Se
ssio
n In
itia
tio
n P
roto
col) Pacote android.net.sip
Android provê uma API que permite a realização de chamadasatravés do protocolo SIP. Pode ser usado para videochamadasou mensageiros instantâneos.
• Para desenvolver uma aplicação SIP, é necessário que odispositivo 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 comunicapor SIP deve possuir uma conta SIP. Existem muitosprovedores SIP que oferecem planos diversos.
What’s Your Message?OBRIGADO!
Top Related