Neste artigo abordaremos de maneira teórica e prática os benefícios da utilização de padrões de interfaces gráficas em aplicativos Android explorando bibliotecas muito utilizadas em projetos Android. Para isso, o artigo faz uma introdução à criação de interfaces gráficas atraentes para dispositivos móveis com o OS Android. O objetivo é que o leitor se familiarize com os padrões de interfaces gráficas apresentados no Google IO de 2010.
Em que situação o tema é útil:
O artigo é útil para o profissional que possui alguma experiência no Android e que está interessado em aprender novos recursos relacionados a interfaces gráficas.
Resumo DevMan:
O Android é um sistema operacional para dispositivos móveis que atrai usuários e desenvolvedores no mundo inteiro. Esse artigo aborda os recursos dessa plataforma referentes à criação de interfaces gráficas (Activities) através de padrões de projeto.
O desenvolvimento de aplicativos móveis está crescendo em ritmo acelerado. Novos aparelhos e aplicativos são criados todos os dias. Este fato ocorre devido à imensa quantidade de pessoas que fazem uso de dispositivos móveis (celulares, tablets, PDA’s, entre outros) no seu dia-a-dia. O uso constante leva ao aprendizado, por isso os usuários estão mais cada vez mais exigentes. Sabendo desse cenário, os desenvolvedores devem se esforçar para criar aplicativos atraentes e simples de serem usados de modo a agradar o maior número de pessoas possível.
O Android oferece dois modos de criar interfaces gráficas para aplicativos móveis. O primeiro é definindo um arquivo xml que será carregado no início da aplicação, sendo que o desenho da tela é realizado em tempo de execução. Na segunda maneira, o desenho da interface acontece a partir da codificação dentro do próprio aplicativo, semelhante ao que acontece com outras plataformas de desenvolvimento móvel, como JavaME e .net mobile.
Para a plataforma Android, na maioria dos casos os desenvolvedores optam pelo uso do arquivo xml, por considerarem este mais simples.
Outra característica interessante da plataforma Android é a diferenciação entre componentes gerenciadores de layouts, esses chamados de ViewGroup, e os componentes visuais, chamados de View.
Os componentes da classe View, resumidamente, representam os componentes de uma interface gráfica. Uma View ocupa uma área retangular na tela e é responsável por desenhar e controlar os eventos de um componente, como por exemplo botões, caixas de texto, etc.
Já os componentes da classe ViewGroup são responsáveis pelo gerenciamento de layouts. O ViewGroup pode ser resumido a um container invisível que pode receber um ou mais Views (ou ainda outros ViewGroups). A estes podem ser atribuídas propriedades de layouts que permitem mudar a forma de visualização dos componentes. É semelhante às classes de Layout existentes em programas Java AWT e Swing (BorderLayout, FlowLayout, GridLayout, etc.).
Neste contexto, no decorrer desse artigo apresentaremos técnicas e padrões que serão muito úteis na hora de criar as interfaces gráficas dos aplicativos Android.
A plataforma Android foi concebida inicialmente pelo Google. A plataforma está sendo e será mantida pelo Open Handset Alliance, que é um grupo formado por mais de 30 empresas (de tecnologias de dispositivos móveis, provedoras de serviços móveis, fabricantes, etc) as quais se uniram para inovar e acelerar o desenvolvimento de aplicações, serviços, trazendo aos consumidores uma experiência mais rica em termos de recursos, menos dispendiosa em termos financeiros para o mercado móvel. Pode-se dizer que a plataforma Android é a primeira plataforma móvel completa, aberta e livre.
Esta plataforma foi desenvolvida utilizando o sistema operacional Linux. Sendo assim, todas as características intrínsecas deste sistema foram incorporadas, bem como sistema de arquivos, o kernel, os servidores de terminais (X server), etc.
A arquitetura da plataforma Android é dividida em várias camadas: Applications, Application Framework, Libraries e Android Runtime; e Linux Kernel.
Na camada Applications, está localizada uma lista de aplicações padrões que incluem um cliente de e-mail, programa de SMS, calendário, mapas, navegador, gerenciador de contatos, e outros que serão desenvolvidos pela comunidade, sendo todas essas aplicações escritas na linguagem Java.
Já na camada Application Framework estão os componentes que permitirão com que novas estruturas sejam utilizadas para futuras aplicações, enfatizando a reutilização de código. Os seguintes componentes fazem parte desta camada:
• Um rico e extensível conjunto de componentes gráficos que pode ser utilizado para construir uma aplicação, bem como listas, grids, caixas de textos, botões, e até um navegador web embutido.
• Provedores de conteúdo que habilitam às aplicações acessar dados de outras aplicações (como os Contatos, por exemplo) ou compartilhar seus próprios dados.
• Gerenciador de recursos que prove acesso a recursos não-codificados como strings, gráficos, e arquivos de layout.
• Um gerenciador de notificação que permite que todas as aplicações exibam mensagens de alerta personalizáveis na barra de status.
• Um gerenciador de atividade que gerencia o ciclo de vida das aplicações e permite controlar os recursos previamente alocados, sendo que caso eles não estejam sendo mais utilizados, os mesmos são desalocados para liberar memória.
A camada logo abaixo é subdivida no grupo das bibliotecas (libraries) e o ambiente de execução (runtime) da plataforma Android, composto pelas bibliotecas padrão e pela máquina virtual denominada Dalvik. No primeiro grupo estão as bibliotecas escritas em C/C++, que são compostas por uma coleção de bibliotecas que são utilizadas pela plataforma Android.
No que diz respeito ao ambiente de execução, a plataforma é composta pela máquina virtual Dalvik. Toda e qualquer aplicação em Android roda dentro de seu próprio processo, isto é, no contexto da sua instância de máquina virtual. Esta VM foi escrita para que os dispositivos possam suportar múltiplas máquinas virtuais eficientemente. A Dalvik executa arquivos no formato Dalvik Executable, com extensão .dex. Um arquivo .dex nada mais é do que uma espécie de bytecodes de Java (os famosos arquivos compilados .class) otimizados para a Android.
Por fim, na base está localizado o kernel Linux fornecendo serviços do núcleo do sistema como segurança, gerenciamento de memória, gerenciamento de processos, pilhas de redes, etc.
UI Design Patterns
Os padrões de projeto de interfaces gráficas têm o objetivo de oferecer uma solução geral para algum problema recorrente na parte de telas da aplicação. No Google IO de 2010, os palestrantes Richard Fulcher, Chris Nesladek, Jim Palmer e Christian Robertson realizaram uma interessante palestra relacionada a esse tema. Nesse evento, eles falaram sobre algumas particularidades na criação de interfaces gráficas para aplicativos Android. Dentre os assuntos discutidos, vamos destacar os UI design patterns que foram apresentados:
...