Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Suporte múltiplas telas no Android

GDG Aracaju
February 28, 2015

Suporte múltiplas telas no Android

Talk by @italomss
Watch it https://www.youtube.com/watch?v=EwqC13BBRQU

GDG Aracaju

February 28, 2015
Tweet

More Decks by GDG Aracaju

Other Decks in Programming

Transcript

  1. Intro • O Android pode rodar em uma grande variedade

    de dispositivos que podem ter diferentes tamanhos e densidades de tela; • Vantagens e desvantagens; • Ferramentas do SDK; • Tamanhos das telas; • Dispositivos xing-ling.
  2. Termos e conceitos • Screen size ◦ Tamanho atual da

    tela, medida pela diagonal. Para simplificar, o Android agrupa todos os tamanhos de tela em quatro tamanhos gerais: small, normal, large, and extra large. • Screen density ◦ A quantidade de pixels dentro de uma área física da tela; normalmente é referenciada pela unidade dpi (dots per inch). Por exemplo, uma densidade de tela baixa possui poucos pixels em uma área física, comparada a uma densidade normal ou alta. Para simplificar, o Android agrupa todas as densidades em quatro densidades gerais: low, medium, high, and extra high. • Orientation ◦ A orientação da tela do ponto de vista do usuário. Pode ser retrato ou paisagem, o que significa que o aspecto será vertical ou horizontal.
  3. Termos e conceitos • Resolution ◦ O número total de

    pixels físicos da tela. Quando adicionar suporte a múltiplas telas, as aplicações não trabalham diretamente com a resolução; • Density-independent pixel (dp) ◦ Uma unidade virtual de pixel que você deveria usar quando definir um layout, para expressar dimensão e posição de forma indenpendente da densidade. ◦ A conversão de uma unidade dp para pixel é simples: px = dp * (dpi / 160). Por exemplo, em uma tela de 240 dpi, 1 dp é igual a 1.5 pixels físicos.
  4. Faixa de telas suportadas • O Android fornece suporte para

    múltiplos tamanhos e densidades de tela, que refletem as diversas configurações de tela que os dispositivos podem ter. • Para simplificar a maneira de desenhar suas interfaces para múltiplas telas, o Android divide a faixa de tamanhos e densidades de tela em: ◦ Um conjunto de quatro tamanhos gerais: small, normal, large, andxlarge. ◦ Um conjunto de densidades gerais: ldpi (baixa), mdpi (média), hdpi (alta), and xhdpi (extra alta) • Os tamanhos e densidades gerais são arranjadas em torno de um configuração base que é tamanho normal e densidade mdpi (média).
  5. Independência de densidade • Sua aplicação alcança “independência de densidade”

    quando preserva o tamanho físico (do ponto de vista do usuário) dos elementos da interface quando exibidos em telas de densidades diferentes. • Vejamos a seguir dois testes com imagem e botão:
  6. Como suportar múltiplas telas • Explicitamente declarar no manifesto quais

    tamanhos de tela sua aplicação suporta ◦ <supports-screens> • Forneça layouts diferentes para tamanhos de tela diferentes ◦ layout-xlarge/ layout-sw600dp/ • Forneça bitmaps diferentes para telas de densidade diferentes ◦ Por padrão, o Android escala os bitmaps (arquivos .png, .jpg, and.gif) e desenhos Nine-Patch (arquivos .9.png) de modo que eles sejam renderizados para o tamanho físico adequado para cada dispositivo.
  7. Como suportar múltiplas telas • O sistema usa recursos alternativos

    adequados ◦ Dependendo das alternativas de recursos disponiveis, um diretório com o qualificador hdpi (como drawable-hdpi/) pode ser a melhor escolha, assim o sistema usa os desenhos desse diretório. • Se nenhum recurso adequado for encontrado, o sistema usa os recursos padrão e estica-os ou comprime-os como for necessário para caber no tamanho da tela ◦ drawable/
  8. Como suportar múltiplas telas res/layout/my_layout.xml // layout for normal screen

    size ("default") res/layout-small/my_layout.xml // layout for small screen size res/layout-large/my_layout.xml // layout for large screen size res/layout-xlarge/my_layout.xml // layout for extra large screen size res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation res/drawable-mdpi/my_icon.png // bitmap for medium density res/drawable-hdpi/my_icon.png // bitmap for high density res/drawable-xhdpi/my_icon.png // bitmap for extra high density
  9. Boas práticas • Quando definir android:layout_width e android:layout_height para as

    views no arquivo XML do layout, use "wrap_content", "fill_parent" ou unidades dp para garantir que a view receba um tamanho apropriado na tela do dispositivo atual. • Não use valores fixos de pixel no código de sua aplicação • Use os recursos especificos de tamanho e densidade • Utilize o 9 patch