aviso Legal
Esta resposta é de 2013 e está seriamente desatualizada. A partir do Android 3.2, agora existem 6 grupos de densidade de tela. Esta resposta será atualizada assim que possível, mas sem ETA. Consulte a documentação oficial para todas as densidades no momento (embora seja sempre difícil encontrar informações sobre tamanhos de pixels específicos).
Aqui está a versão tl / dr
Crie 4 imagens, uma para cada densidade de tela:
- xlarge (xhdpi): 640x960
- grande (hdpi): 480 x 800
- médio (mdpi): 320x480
- pequeno (ldpi): 240x320
Leia a introdução da imagem com 9 correções no Guia do desenvolvedor do Android
- Crie imagens com áreas que podem ser esticadas com segurança sem comprometer o resultado final
Com isso, o Android selecionará o arquivo apropriado para a densidade de imagem do dispositivo e esticará a imagem de acordo com o padrão de 9 patches.
fim de tl; dr. Post completo à frente
Estou respondendo em relação ao aspecto relacionado ao design da pergunta. Como não sou desenvolvedor, não poderei fornecer código para implementar muitas das soluções fornecidas. Infelizmente, minha intenção é ajudar designers que estão tão perdidos quanto eu quando ajudei a desenvolver meu primeiro aplicativo Android.
Montagem de todos os tamanhos
Com o Android, as empresas podem desenvolver seus telefones celulares e mesas de quase qualquer tamanho, com praticamente qualquer resolução que desejarem. Por esse motivo, não há "tamanho de imagem correto" para uma tela inicial, pois não há resoluções de tela fixas. Isso representa um problema para as pessoas que desejam implementar uma tela inicial.
Seus usuários realmente querem ver uma tela inicial?
(Em uma nota lateral, as telas de abertura são um pouco desencorajadas entre os profissionais de usabilidade. Argumenta-se que o usuário já sabe em qual aplicativo ele tocou, e não é necessário marcar sua imagem com uma tela de abertura, pois apenas interrompe a experiência do usuário com um "anúncio". No entanto, ele deve ser usado em aplicativos que requerem um carregamento considerável quando inicializados (5s +), incluindo jogos e outros, para que o usuário não fique parado imaginando se o aplicativo travou ou não)
Densidade de tela; 4 aulas
Portanto, considerando tantas resoluções de tela diferentes nos telefones do mercado, o Google implementou algumas alternativas e soluções bacanas que podem ajudar. A primeira coisa que você precisa saber é que o Android separa TODAS as telas em 4 densidades distintas:
- Baixa densidade (ldpi ~ 120dpi)
- Densidade média (mdpi ~ 160dpi)
- Alta densidade (hdpi ~ 240dpi)
- Densidade extra-alta (xhdpi ~ 320dpi) (esses valores de dpi são aproximações, pois os dispositivos criados personalizados terão valores de dpi variáveis)
O que você (se você é um designer) precisa saber disso é que o Android basicamente escolhe entre 4 imagens para exibir, dependendo do dispositivo. Então, basicamente, é necessário projetar 4 imagens diferentes (embora mais possa ser desenvolvido para diferentes formatos, como widescreen, modo retrato / paisagem etc.).
Com isso em mente, saiba isso: a menos que você projete uma tela para cada resolução usada no Android, sua imagem será ampliada para se ajustar ao tamanho da tela. E, a menos que sua imagem seja basicamente um gradiente ou um borrão, você terá uma distorção indesejada com o alongamento. Portanto, você tem basicamente duas opções: crie uma imagem para cada combinação de tamanho / densidade da tela ou crie quatro imagens de 9 patches.
A solução mais difícil é projetar uma tela inicial diferente para cada resolução. Você pode começar seguindo as resoluções na tabela no final desta página (há mais. Exemplo: 960 x 720 não está listado lá). E supondo que você tenha alguns pequenos detalhes na imagem, como texto pequeno, é necessário criar mais de uma tela para cada resolução. Por exemplo, uma imagem de 480 x 800 exibida em uma tela média pode parecer boa, mas em uma tela menor (com densidade / dpi maior) o logotipo pode ficar muito pequeno ou algum texto pode ficar ilegível.
Imagem com 9 patches
A outra solução é criar uma imagem de 9 patches . É basicamente uma borda transparente de 1 pixel ao redor da sua imagem e, desenhando pixels pretos na área superior e esquerda dessa borda, você pode definir quais partes da sua imagem poderão esticar. Não vou entrar em detalhes de como as imagens com 9 patches funcionam, mas, em resumo, os pixels alinhados às marcações na área superior e esquerda são os pixels que serão repetidos para esticar a imagem.
Algumas regras básicas
- Você pode fazer essas imagens no photoshop (ou qualquer software de edição de imagens que possa criar com precisão pngs transparentes).
- A borda de 1 pixel deve ser TRANSPARENTE COMPLETA.
- A borda transparente de 1 pixel deve estar ao redor da imagem, não apenas superior e esquerda.
- você só pode desenhar pixels pretos (# 000000) nessa área.
- As bordas superior e esquerda (que definem o alongamento da imagem) podem ter apenas um ponto (1px x 1px), dois pontos (1px x 1px) ou UMA linha contínua (largura x 1px ou 1px x altura).
- Se você optar por usar 2 pontos, a imagem será expandida proporcionalmente (para que cada ponto se reveze em expansão até que a largura / altura final seja alcançada)
- A borda 1px deve ser uma adição às dimensões do arquivo base pretendidas. Portanto, uma imagem de 9 x 100 x 100 tem que ter 102 x 102 (100 x 100 + 1 px na parte superior, inferior, esquerda e direita)
- Imagens com 9 patches precisam terminar com * .9.png
Assim, você pode colocar 1 ponto em ambos os lados do seu logotipo (na borda superior) e 1 ponto acima e abaixo (na borda esquerda), e essas linhas e colunas marcadas serão os únicos pixels a serem esticados.
Exemplo
Aqui está uma imagem de 9 correções, 102x102px (tamanho final de 100x100, para fins de aplicativo):
Aqui está um zoom de 200% da mesma imagem:
Observe as marcas 1px na parte superior e esquerda dizendo quais linhas / colunas serão expandidas.
Veja como esta imagem ficaria em 100x100 dentro do aplicativo:
E aqui está o que ele gostaria se expandido para 460x140:
Uma última coisa a considerar. Essas imagens podem parecer bem na tela do monitor e na maioria dos celulares, mas se o dispositivo tiver uma densidade de imagem muito alta (dpi), a imagem parecerá muito pequena. Provavelmente ainda legível, mas em um tablet com resolução 1920x1200, a imagem apareceria como um quadrado muito pequeno no meio. Então, qual é a solução? Crie 4 imagens diferentes do iniciador de 9 patches, cada uma para um conjunto de densidades diferente. Para garantir que não ocorram encolhimentos, você deve criar a menor resolução comum para cada categoria de densidade. A redução é indesejável aqui porque o patch 9 é responsável apenas pelo alongamento; portanto, em um processo de redução, textos pequenos e outros elementos podem perder a legibilidade.
Aqui está uma lista das menores e mais comuns resoluções para cada categoria de densidade:
- xlarge (xhdpi): 640x960
- grande (hdpi): 480 x 800
- médio (mdpi): 320x480
- pequeno (ldpi): 240x320
Portanto, projete quatro telas iniciais nas resoluções acima, expanda as imagens, colocando uma borda transparente de 1px ao redor da tela e marque quais linhas / colunas serão esticáveis. Lembre-se de que essas imagens serão usadas para QUALQUER dispositivo na categoria de densidade; portanto, sua imagem ldpi (240 x 320) pode ser esticada para 1024x600 em um tablet extra grande com densidade de imagem pequena (~ 120 dpi). Portanto, o 9-patch é a melhor solução para o alongamento, desde que você não queira uma foto ou gráficos complicados para uma tela inicial (lembre-se dessas limitações ao criar o design).
Novamente, a única maneira de esse alongamento não acontecer é projetar uma tela a cada resolução (ou uma para cada combinação de densidade de resolução, se você quiser evitar que as imagens fiquem muito pequenas / grandes em dispositivos de alta / baixa densidade) ou informar a imagem para não esticar e exibir uma cor de fundo onde quer que ocorra o esticamento (lembre-se de que uma cor específica renderizada pelo mecanismo Android provavelmente parecerá diferente da mesma cor específica renderizada pelo photoshop, devido a perfis de cores).
Espero que isso faça algum sentido. Boa sorte!