Explorando o Application Resources do Android

Desenvolver para Android não é uma tarefa fácil. Hoje existem cerca de 700 dispositivos que rodam Android. Além de rodarem diversas versões do android, eles possuem hardwares, telas e tamanhos diferentes. Uma grande dor de cabeça para o desenvolvedor Android, a conhecida fragmentação da plataforma.

Para facilitar o desenvolvimento e  aliviar a dor de cabeça do desenvolvedor, a plataforma Android desenvolveu uma ferramenta fantástica: o Application Resources.

O Application Resources é muito útil no desenvolvimento de aplicativos que serão usados por diversos dispositivos, principalmente se for no caso para smartphones e tablets.

Fonte: http://developer.android.com/images/resources/resource_devices_diagram2.png

Para se utilizar do Application Resources, basta colocar qualifiers nas pastas de Resources (res/). Quando criamos um projeto Android ele já tem a pasta layout. Se, por exemplo, formos criar layouts diferentes (mais adequados) para dispositivos de telas pequenas, criaremos a pasta layout-small. Nesse caso, small é seu qualifier.

Quando sua aplicação é executada, ela carregará os resources de acordo com os qualifiers do seu dispositivo. Se você não utilizar nenhum qualifier, a aplicação utilizará os resources defaults (sem qualifiers. Ex: layout, values, etc.). Aplicações podem possuir diferentes diretórios para diferentes qualifiers, como a figura mostra:

Se você vai desenvolver sua aplicação para uma grande quantidade de dispositivos, é praticamente obrigatório o uso do Application Resources. Ele vai evitar que você faça arquivos de layouts desnecessários, ou seja, ao invés de ter um arquivo XML dentro da pasta layout para cada tipo de tela, você terá o arquivo com o mesmo nome em uma pasta layout e outro com o conteúdo diferente em layout-small. Com isso você pode aproveitar as capacidades (processamento, qualidade e tamanho de telas) dos dispositivos.

Uma curta aplicação de exemplo está disponível no github. Nela exibimos um texto diferente para cada tipo de dispositivo: dispositivo com telas pequenas, telas médias, telas médias em landscape, telas grandes e telas grandes com versão 14. O Application Resources não serve só para internacionalização, no exemplo a ideia é exibir qual o tipo de tela que o dispositivo tem alterando apenas o conteúdo do arquivo strings.xml de acordo com os qualifiers. Seguindo esta ideia, também podemos utilizar o Application resources principalmente no styles.xml, facilitando trabalhar com os diferentes tipos e orientações de telas.

Uma aplicação que tem muitos detalhes diferentes em dispositivos diferentes pode aparecer com diversos qualifiers grandes, como values-pt-large-v14-land.

Mas tome cuidado, não saia colocando qualifiers em tudo. Antes disso, procure usar o que realmente você vai precisar. Esperamos te encontrar aqui no curso de desenvolvimento para Android!

6 Comentários

  1. Caio Ribeiro Pereira 09/02/2012 at 10:56 #

    Bacana o post hein!

    Bem que vocês poderiam liberar para comunidade apostila do curso de Android! hehe

    Só um detalhe: a imagem de thumb desse post esta meio deformada na timeline do blog.

  2. Felipe Conde 09/02/2012 at 11:28 #

    Muitos resources podem nos levar a resources não utilizados!
    Muitas vezes fica complicado de descobrir quais estão em uso e aqueles que não são.

    Pra isso, apartir da ADT 16 foi introduzida a ferramenta Android Lint. http://tools.android.com/tips/lint

    Mão na roda!

  3. Thiago Marinho 02/03/2012 at 16:41 #

    Legal o post.

    vlw Felipe Conde, não conhecia o Lint.

  4. Marcos Franklin 23/05/2012 at 14:55 #

    Muito boa matéria André Silva, poderia me dizer se no curso completo é passado como criar menus otimizados, com tabhost por exemplo quando digo otimizado digo como os do aplicativo do groupon ou parecido? Obrigado

  5. André Silva 23/05/2012 at 15:21 #

    Opa Marcos Franklin,

    tudo bom?

    Desculpa, mas não entendi o ponto dos menus otimizados?

Deixe uma resposta