Este conversor bacana demonstra melhor , na minha opinião. Também é extremamente útil para exportar sprites do Photoshop ou projetar seu layout para uma dimensão física.
em Polegadas - com base no tamanho físico da tela.
1 Polegada = 2,54 centímetros
mm Milímetros - com base no tamanho físico da tela.
pt Pontos - 1/72 de polegada com base no tamanho físico da tela.
Pixels independentes da densidade dp ou dip - uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi, portanto, um dp é um pixel em uma tela de 160 dpi. A proporção de dp para pixel mudará com a densidade da tela, mas não necessariamente na proporção direta. Nota: O compilador aceita "dip" e "dp", embora "dp" seja mais consistente com "sp".
sp Pixels independentes de escala - é como a unidade dp, mas também é dimensionada pela preferência do tamanho da fonte do usuário. É recomendável que você use esta unidade ao especificar tamanhos de fonte, para que sejam ajustados para a densidade da tela e a preferência do usuário.
mesmo que deve ser a mesma coisa que eu tendem a ter muitos problemas com dp enquanto tudo funciona bem com mergulho
Dallarosa
247
Uma observação sobre db / sp que não é totalmente óbvia: a escala que ocorre para eles depende não da densidade real do dispositivo (dpi), mas de qual "bloco" de densidades ele se enquadra: os intervalos disponíveis são: 120.160.240.320. Isso pode causar alguns problemas ao lidar com telas significativamente diferentes, mas que são iguais.
precisa
15
Observe que a documentação não menciona mais "dip", apenas "dp", embora o compilador ainda pareça aceitar "dip".
Adam Rosenfield 28/05
15
@android_developer (5 comentários acima) dpque não têm exatamente o mesmo comprimento físico. (Embora esteja próximo.) Consulte o comentário do @ Fraggle sobre o bucket. O que isto significa é que 48dp terá aproximadamente 8 mm (0,3 polegadas), mas poderá variar até 11 mm.
Intrepidis
11
O motivo do depósito é para que os desenvolvedores possam testar seus aplicativos em alguns dispositivos de densidades diferentes e ter certeza de que os layouts terão a mesma aparência em vários dispositivos. Portanto, mesmo que o tamanho físico dos botões, etc, mude um pouco, a aparência geral de uma atividade será a mesma.
Intrepidis
685
Praticamente tudo sobre isso e como obter o melhor suporte para várias telas de diferentes tamanhos e densidades está muito bem documentado aqui:
Tamanho da tela Tamanho
físico real, medido como a diagonal da tela. Para simplificar, o Android agrupa todos os tamanhos de tela reais em quatro tamanhos generalizados: pequeno, normal, grande e extra-grande.
Densidade de tela
O número de pixels dentro de uma área física da tela; geralmente chamado de dpi (pontos por polegada). Por exemplo, uma tela de densidade "baixa" possui menos pixels em uma determinada área física, em comparação com uma tela de densidade "normal" ou "alta". Por simplicidade, o Android agrupa todas as densidades de tela reais em seis densidades generalizadas: baixa, média, alta, extra-alta, extra-extra-alta e extra-extra-extra-alta.
Orientação A orientação da tela do ponto de vista do usuário. É paisagem ou retrato, o que significa que a proporção da tela é ampla ou alta, respectivamente. Esteja ciente de que não apenas dispositivos diferentes operam em orientações diferentes por padrão, mas a orientação pode mudar em tempo de execução quando o usuário gira o dispositivo.
Resolução O número total de pixels físicos em uma tela. Ao adicionar suporte para várias telas, os aplicativos não funcionam diretamente com a resolução; os aplicativos devem se preocupar apenas com o tamanho e a densidade da tela, conforme especificado pelos grupos de tamanho e densidade generalizados.
Pixel independente da densidade (dp) Uma unidade virtual de pixels que você deve usar ao definir o layout da interface do usuário para expressar dimensões ou posição do layout de maneira independente da densidade. O pixel independente da densidade é equivalente a um pixel físico em uma tela de 160 dpi, que é a densidade da linha de base assumida pelo sistema para uma tela de densidade "média". No tempo de execução, o sistema lida com qualquer escalonamento transparente das unidades dp, conforme necessário, com base na densidade real da tela em uso. A conversão de unidades DP pixels da tela é simples:
px = dp * (dpi / 160). Por exemplo, em uma tela de 240 dpi, 1 dp é igual a 1,5 pixels físicos. Você sempre deve usar unidades dp ao definir a interface do usuário do aplicativo, para garantir a exibição adequada da interface do usuário em telas com densidades diferentes.
Se você é sério sobre o desenvolvimento de um aplicativo Android para mais de um tipo de dispositivo, deve ler o documento de desenvolvimento de suporte de telas pelo menos uma vez. Além disso, é sempre bom saber o número real de dispositivos ativos que possuem uma configuração de tela específica.
Portanto, se você usa dp para um botão e sp para o tamanho da fonte do texto do botão, o que acontece quando o usuário começa a dimensionar? O texto será ampliado, mas o botão acomodará isso também?
Wytze 5/10/12
11
@ Wytze, não. Para coisas em que o ajuste do texto pode ser um problema, eu usaria apenas dip para que as coisas não transbordem.
Eski
12
@ Wytze E eu, pelo contrário, uso sp para o texto e o que quer que ele contenha. Por exemplo, se eu tiver um botão com um tamanho fixo e um texto dentro dele, atribuiria o tamanho do botão em sp para que ele também seja dimensionado quando necessário. Caso contrário, o usuário ficará irritado por ter aumentado o tamanho do texto, e isso não aumentou. Obviamente, o layout deve ser flexível o suficiente para permitir isso.
Malcolm
2
Se seus designers não deixarem espaço para que os elementos baseados em texto sejam dimensionados de acordo com o tamanho de sp, uma opção é alternar para o layout que você usaria para um dispositivo mais estreito e então dimensionar tudo uniformemente com (DisplayMetrics.scaledDensity / DisplayMetrics. densidade).
John Mellor
@Sam carecem de qualquer espaço livre irá também causa problemas durante i18n
redução da actividade de
347
Vou elaborar mais sobre como exatamente o dp converte em px:
Se estiver executando em um dispositivo mdpi, uma 150 x 150 pximagem ocupará 150 * 150 dpespaço na tela.
Se estiver executando em um dispositivo hdpi, uma 150 x 150 pximagem ocupará 100 * 100 dpespaço na tela.
Se estiver executando em um dispositivo xhdpi, uma 150x150 pximagem ocupará 75 * 75 dpespaço na tela.
O contrário: digamos, você deseja adicionar uma imagem ao seu aplicativo e precisa preencher um 100 * 100 dpcontrole. Você precisará criar imagens de tamanhos diferentes para os tamanhos de tela compatíveis:
Como calculamos os pixels para hdpi, ldpi, mdpi, etc. Ouvi dizer que usamos esta fórmula ... px = dp * (dpi / 160); você pode me explicar com esta fórmula plz?
precisa saber é o seguinte
@Rakeshpatanga Com uma densidade de 160 dpi, 1 px = 1 dp (o pixel físico e a abstração dp são os mesmos). Ou seja, para um único dp, temos (1) * (160/160) = 1 ou exatamente 1 px. Na densidade mais alta de 320 dpi, um único dp é (1) * (320/160) = 2 pixels e dois dp são (2) * (320/160) = 4 px.
samis 6/09/19
Alinhe-os em espaço simples para ver: | 1dp |, | ___ | ___ | 160, | _ | _ | _ | _ | 320 (colocar quebras de linha após as vírgulas). | _ | = 1 p i x el.
samis 6/09/17
re "Você precisará criar imagens de tamanhos diferentes para os tamanhos de tela compatíveis:" Isso depende. Para imagens pequenas de alto contraste , por exemplo, ícones, é aconselhável criar pelo menos o tamanho menor (para ter certeza de que ficará claro) mais um tamanho bastante grande (para que versões grandes não pareçam tremidas). Mas mesmo para ícones, você pode permitir que uma imagem seja dimensionada em vários tamanhos, em densidades mais altas. Para fotografias, basta especificar a área de exibição que deseja preencher e confiar na escala do dispositivo.
Home
286
px - Pixels - o ponto por escala corresponde aos pixels reais na tela.
i - Polegadas - com base no tamanho físico da tela.
mm - milímetros - com base no tamanho físico da tela.
pt - Pontos - 1/72 de polegada com base no tamanho físico da tela.
dp - Pixels independentes da densidade - uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi, portanto, um dpé um pixel em uma tela de 160 dpi. A proporção de dp para pixel mudará com a densidade da tela, mas não necessariamente na proporção direta. Nota: O compilador aceita ambos dipe dp, embora dpseja mais consistente com sp.
sp - Pixels independentes de escala - é como a dpunidade, mas também é dimensionada pela preferência do tamanho da fonte do usuário. É recomendável que você use esta unidade ao especificar tamanhos de fonte, para que sejam ajustados para a densidade da tela e a preferência do usuário.
Tomemos o exemplo de duas telas com o mesmo tamanho, mas uma com densidade de tela de 160 dpi (pontos por polegada, ou seja, pixels por polegada) e a outra com 240 dpi.
Lower resolution screen Higher resolution, same size
PhysicalWidth1.5 inches 1.5 inches
DotsPerInch(“dpi”)160240Pixels(=width*dpi)240360Density(factor of baseline 160)1.01.5Density-independent pixels 240240(“dip”or“dp”or“dps”)Scale-independent pixels
(“sip”or“sp”)Depends on user font size settings same
Além disso, você deve ter um entendimento claro sobre os seguintes conceitos:
Tamanho da tela:
Tamanho físico real, medido como a diagonal da tela. Para simplificar, o Android agrupa todos os tamanhos de tela reais em quatro tamanhos generalizados: pequeno, normal, grande e extra grande.
Densidade da tela:
A quantidade de pixels dentro de uma área física da tela; geralmente chamado de dpi (pontos por polegada). Por exemplo, uma tela de densidade "baixa" possui menos pixels em uma determinada área física, em comparação com uma tela de densidade "normal" ou "alta". Para simplificar, o Android agrupa todas as densidades de tela reais em quatro densidades generalizadas: baixa, média, alta e extra alta.
Orientação:
A orientação da tela do ponto de vista do usuário. É paisagem ou retrato, o que significa que a proporção da tela é ampla ou alta, respectivamente. Esteja ciente de que não apenas dispositivos diferentes operam em orientações diferentes por padrão, mas a orientação pode mudar em tempo de execução quando o usuário gira o dispositivo.
Resolução:
O número total de pixels físicos em uma tela. Ao adicionar suporte para várias telas, os aplicativos não funcionam diretamente com a resolução; os aplicativos devem se preocupar apenas com o tamanho e a densidade da tela, conforme especificado pelos grupos de tamanho e densidade generalizados.
Pixel independente da densidade (dp):
Uma unidade virtual de pixels que você deve usar ao definir o layout da interface do usuário para expressar dimensões ou posição do layout de maneira independente da densidade. O pixel independente da densidade é equivalente a um pixel físico em uma tela de 160 dpi, que é a densidade da linha de base assumida pelo sistema para uma tela de densidade "média". No tempo de execução, o sistema lida com qualquer escalonamento transparente das unidades dp, conforme necessário, com base na densidade real da tela em uso. A conversão de unidades dp em pixels da tela é simples: px = dp * (dpi / 160). Por exemplo, em uma tela de 240 dpi, 1 dp é igual a 1,5 pixels físicos. Você sempre deve usar unidades dp ao definir a interface do usuário do aplicativo, para garantir a exibição adequada da interface do usuário em telas com densidades diferentes.
Isso significa que qualquer coisa que você criar usando as unidades dp sempre ocupará a mesma% da tela, independentemente da densidade de pixels do dispositivo? Assumindo proporções idênticas.
DBIT 18/09/19
199
dpé dip. Use-o para tudo (margem, preenchimento, etc.).
Use spsomente para {tamanho do texto}.
Para obter o mesmo tamanho em diferentes densidades de tela, o Android converte essas unidades em pixels em tempo de execução, para que não exista uma matemática complicada.
Veja a diferença entre px, dpe spem diferentes tamanhos de tela.
Fonte 3 : (dados da fonte 3 são fornecidos abaixo)
Esses são valores de dimensão definidos em XML. Uma dimensão é especificada com um número seguido por uma unidade de medida. Por exemplo: 10px, 2in, 5sp. As seguintes unidades de medida são suportadas pelo Android:
dp
Pixels independentes da densidade - Uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi (pontos por polegada), na qual 1dp é aproximadamente igual a 1px. Ao executar em uma tela de densidade mais alta, o número de pixels usados para desenhar 1dp é aumentado por um fator apropriado para o dpi da tela. Da mesma forma, quando em uma tela de densidade mais baixa, o número de pixels usados para 1dp é reduzido. A proporção de dp para pixel mudará com a densidade da tela, mas não necessariamente na proporção direta. O uso de unidades de DP (em vez de unidades de px) é uma solução simples para fazer com que as dimensões da vista em seu layout sejam redimensionadas corretamente para diferentes densidades de tela. Em outras palavras, ele fornece consistência para os tamanhos reais dos elementos da interface do usuário em diferentes dispositivos.
sp
Pixels independentes de escala - É como a unidade dp, mas também é dimensionada pela preferência do tamanho da fonte do usuário. É recomendável que você use esta unidade ao especificar tamanhos de fonte, para que sejam ajustados para a densidade da tela e a preferência do usuário.
pt
Pontos - 1/72 de polegada com base no tamanho físico da tela.
px
Pixels - corresponde aos pixels reais na tela. Esta unidade de medida não é recomendada porque a representação real pode variar entre dispositivos; cada dispositivo pode ter um número diferente de pixels por polegada e pode ter mais ou menos pixels totais disponíveis na tela.
milímetros
Milímetros - Com base no tamanho físico da tela.
no
Polegadas - com base no tamanho físico da tela.
Nota: Uma dimensão é um recurso simples que é referenciado usando o valor fornecido no atributo name (não o nome do arquivo XML). Assim, você pode combinar recursos de dimensão com outros recursos simples em um arquivo XML, em um elemento.
getDimensionPixelOffset arredonda para baixo, getDimensionPixelSize arredonda para cima.
Eugen Pechanec
102
px
Pixels - corresponde aos pixels reais na tela.
dp ou dip
Pixels independentes da densidade - uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi, portanto, um dp é um pixel em uma tela de 160 dpi.
Uso de dp:
Independência de densidade - Seu aplicativo obtém "independência de densidade" quando preserva o tamanho físico (do ponto de vista do usuário) dos elementos da interface do usuário quando exibido em telas com densidades diferentes. (ou seja) A imagem deve ter o mesmo tamanho (não ampliada ou reduzida) em diferentes tipos de tela.
sp
Pixels independentes de escala - é como a unidade dp, mas também é dimensionada pela preferência do tamanho da fonte do usuário.
Uma unidade virtual de pixels que você deve usar ao definir o layout da interface do usuário para expressar dimensões ou posição do layout de maneira independente da densidade. Como descrito acima, o pixel independente da densidade é equivalente a um pixel físico em uma tela de 160 dpi, que é a densidade da linha de base assumida pelo sistema para uma tela de densidade "média". No tempo de execução, o sistema lida com qualquer escalonamento transparente das unidades dp, conforme necessário, com base na densidade real da tela em uso. A conversão de unidades dp em pixels da tela é simples:
px = dp * (dpi / 160).
Por exemplo, em uma tela de 240 dpi, 1 dp é igual a 1,5 pixels físicos. Você sempre deve usar unidades dp ao definir a interface do usuário do aplicativo, para garantir a exibição adequada da interface do usuário em telas com densidades diferentes.
Compreender pixel para dp e vice-versa é muito essencial (especialmente para fornecer valores exatos de dp à equipe criativa)
dp = px *160/ dpi
MDPI =160 dpi ||Therefore, on MDPI 1 px =1 dp
For example,if you want to convert 20 pixel to dp,use the above formula,
dp =20*160/160=20.So,20 pixel =20 dp.
HDPI =240 dpi -So, on HDPI 1.5 px =1 dp
XHDPI =320 dpi -So, on XHDPI 2 px =1 dp
XXHDPI =480 dpi -So, on XXHDPI 3 px =1 dp
For example,let us consider Nexus4.If24 pixels to be converted to dp andif it is a Nexus4 screen, developers can
convert it to dp easily by the following calculation :
dp =24*160/320=12 dp
Screen dimension:768 x 1280 pixel resolution (320 ppi or320dpi)Optional(screen size):4.7" diagonal
Tente obter todos os valores de pixel em números pares da equipe criativa. Caso contrário, a perda de precisão ocorrerá ao multiplicar por 0,5.
px
É explicado acima. Tente evitar nos arquivos de layout. Mas existem alguns casos em que px é necessário. por exemplo, linha divisora do ListView. px é melhor aqui para fornecer uma linha de um pixel como divisor para todas as resoluções de tela.
sp
Use sp para tamanhos de fonte. Somente a fonte dentro do aplicativo será alterada enquanto o tamanho das fontes do dispositivo for alterado (ou seja, Vídeo -> Fontes no dispositivo). Se você deseja manter uma fonte de tamanho estático dentro do aplicativo, é possível fornecer a dimensão da fonte no dp. Nesse caso, isso nunca mudará. Os desenvolvedores podem obter esse requisito para algumas telas específicas; para isso, os desenvolvedores podem usar dp em vez de sp. Em todos os outros casos, sp é recomendado.
Você pode ver a diferença entre pxe dpda imagem abaixo, e também pode descobrir que o pxe dpnão pode garantir os mesmos tamanhos físicos nas diferentes telas.
@EnesBattal, acho que porque o dp não é um tamanho físico agudo, é um valor aproximado. Citando CapTech: "dp - Esta é uma unidade independente de densidade, no entanto, o tamanho físico de um único" dp "é aproximadamente o mesmo em todas as densidades de tela. Existem aproximadamente 160" dp "em uma polegada. Um fator de escala, dependendo no intervalo de densidade do dispositivo, é aplicado para converter "dp" para o número de pixels em 160 dpi.O número de pixels que um único "dp" traduz varia dependendo do pixel na densidade da tela e do intervalo de densidade em que o dispositivo cai para dentro."
Zephyr
3
@RuchirBaronia, acho que o DP ou DIP ainda está lá dentro do apk, porque o apk ainda não sabe com que tipo de densidade de tela ele será executado, então a independência do dispositivo ainda deve ser mantida.
Zephyr
79
Qualquer coisa relacionada ao tamanho do texto e aparência deve usar spou pt. Visto que qualquer coisa relacionada ao tamanho dos controles, layouts etc. deve ser usada com dp.
Fala-se muito em usar "sp" para tamanhos de fonte e, embora eu aprecie o argumento, não acho que seja a coisa certa a fazer do ponto de vista do design. Você pode acabar quebrando seu design se o usuário tiver alguma seleção de tamanho de fonte instável e acabar culpando o aplicativo , e não suas próprias escolhas de vida.
Além disso, se você usar um aplicativo de fonte sp em um tablet de 160 dpi, verá que tudo aumenta ... mas sua fonte, que parecerá pequena em comparação. Não é uma boa aparência.
Embora a idéia de fontes "sp" tenha um bom coração, é uma má idéia. Ficar com dp para tudo.
Você sabe que o fator de escala da fonte aplicado spé um fator, certo? Tudo o que afeta dptambém afeta sp. Dito isso, ainda é preferível especificar tamanhos de fonte usando, em dpvez de spse o seu layout for muito apertado e os tamanhos maiores não couberem - é melhor ter um texto menor do que o usuário deseja que um layout completamente bagunçado. Mas, em primeiro lugar, você sempre deve respeitar a preferência de tamanho de fonte do usuário - mesmo a maior configuração não é TÃO grande.
Karu
67
sp = pixel independente da escala
dp = dip = pixels independentes da densidade
dpi = pontos por polegada
Devemos evitar usar sp .
Devemos usar o dp para suportar várias telas.
Android suporta diferentes resoluções de tela
ldpi (baixa) ~ 120 dpi
mdpi (médio) ~ 160 dpi
hdpi (alta) ~ 240 dpi
xhdpi (muito alta) ~ 320 dpi
xxhdpi (extra-extra-alto) ~ 480 dpi
xxxhdpi (extra-extra-extra-alto) ~ 640 dpi
Um dispositivo ldpi de 120 dp tem 120 pixels em tamanho de 1 polegada.
O mesmo para outras densidades ...
Nós, engenheiros de software, devemos usar esta fórmula de conversão:
pixel = dp * (densidade / 160)
Portanto, o 1 dp do dispositivo de 240 dpi terá = 1 * (240/160) = 3/2 = 1,5 pixels.
E o 1 dp do dispositivo de 480 dpi terá = 1 * (480/160) = 3 pixels.
Usando esse conhecimento de 1,5 e 3 pixels, um engenheiro de software pode projetar layouts para diferentes densidades.
Para verificar os parâmetros da tela de qualquer dispositivo:
Eu respondi em relação à perspectiva do layout. Por favor, leia o link fornecido "para que você use esta unidade de medida ao definir o tamanho do texto (mas nunca para os tamanhos do layout)".
Kushal
A pergunta era "Diferença entre px, dp, dip e sp no Android?" sua resposta dizia "Devemos evitar o uso de sp". Não houve menção à "perspectiva de layout" em nenhum lugar.
LN_
Sim .. dp e dip são os mesmos ... usados de forma intercambiável ... A minha resposta resolve sua pergunta?
Kushal #
61
A diferença entre dpe as spunidades mencionadas como " preferência de tamanho de fonte do usuário " pelas respostas copiadas da documentação oficial pode ser vista em tempo de execução, alterando a Settings->Accessibility->Large Textopção.
Large TextA opção força o texto a se tornar 1.3cada vez maior.
Tamanho da tela em Androidsão agrupados em categorias small, medium,large , extra large, double-extrae triple-extra. Densidade da tela é a quantidade de pixels dentro de uma área (como polegadas) da tela. Geralmente é medido em pontos por polegada (dpi). A densidade da tela é agrupada em baixa, média, alta e extra alta. Resolução é o número total de pixels na tela.
dp: Pixel independente de densidade, varia de acordo com a densidade da tela. Na tela de 160 dpi, 1 dp = 1 pixel. Exceto pelo tamanho da fonte, use dp sempre.
dip: dip == dp. Nas versões anteriores do Android, o dip era usado e posteriormente alterado para dp.
sp: Pixel independente de escala, dimensionado com base na preferência de tamanho de fonte do usuário. As fontes devem usar sp.
px: nosso pixel padrão usual, que é mapeado para o pixel da tela.
no: polegadas, com relação ao tamanho físico da tela.
milímetros: milímetros, em relação ao tamanho físico da tela.
pt: 1/72 de polegada, em relação ao tamanho físico da tela.
Fórmula para conversão entre unidades
px = dp *(dpi /160)
dp para px no dispositivo
O exemplo a seguir pode ajudar a entender melhor. A escala ocorre com base no tamanho do bucket de 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) e 640 (xxxhdpi). A proporção sugerida pelo Google para o design é 3: 4: 6: 8: 12 para ldpi: mdpi: hdpi: xhdpi: xxhdpi
Uma imagem de 150px x 150px ocupará,
150 dp X 150 dp de espaço na tela em mdpi
100 dp X espaço de tela de 100 dp em hdpi
75 dp X 75 dp de espaço na tela em xhdpi
Você pode usar a seguinte calculadora de DPI para corrigir os tamanhos de imagem e outras dimensões quando desejar ter um design de interface do usuário uniforme em todos os dispositivos Android.
Por favor, leia a resposta do wiki da comunidade. Abaixo mencionadas estão algumas informações a serem consideradas, além das respostas acima. A maioria dos desenvolvedores do Android sente falta disso ao desenvolver aplicativos, por isso estou adicionando esses pontos.
sp = pixel independente da escala
dp = pixels independentes da densidade
dpi = pixels de densidade
Passei pelas respostas acima ... não as encontrei exatamente corretas. sp para tamanho do texto, dp para limites de layout - padrão. Mas sp para o tamanho do texto interromperá o layout se usado de forma descuidada na maioria dos dispositivos.
sp leva o tamanho do texto do dispositivo, enquanto dp leva o padrão de densidade do dispositivo (nunca mude em um dispositivo). Diga 100sp texto pode ocupar 80% da tela ou 100% da tela, dependendo do tamanho da fonte definido no dispositivo
Você pode usar sp para limites de layout também, ele funcionará :)
Nenhum aplicativo padrão usa sp para todo o texto
Use sp e dp para o tamanho do texto, considerando o UX.
Não use sp para texto na barra de ferramentas (pode usar dimens do Android disponíveis para diferentes tamanhos de tela com dp)
Não use sp para texto em pequenos botões delimitados, texto muito menor etc.
Algumas pessoas usam um tamanho enorme de FONT em seu telefone para obter mais legibilidade, fornecendo um texto pequeno e com código embutido será um problema de UX. Coloque sp para texto sempre que necessário, mas certifique-se de que ele não interrompa o layout quando o usuário alterar suas configurações.
Da mesma forma, se você tiver um único aplicativo compatível com todas as dimensões, a adição de recursos xxxhdpi aumenta muito o tamanho do aplicativo. Mas agora os telefones xxxhdpi são comuns, portanto, temos de incluir ativos xxxhdpi para ícones na barra lateral, barra de ferramentas e barra inferior. É melhor mudar para imagens vetoriais para ter imagens uniformes e de melhor qualidade para todos os tamanhos de tela.
Observe também que as pessoas usam fontes personalizadas em seus telefones. Portanto, a falta de uma fonte pode causar problemas de espaçamento e tudo. Digamos que o tamanho do texto 12sp para uma fonte personalizada possa levar alguns pixels a mais que a fonte padrão.
Encontrei um bom artigo sobre como projetar a interface do usuário de aplicativos Android para diferentes resoluções de tela e gostaria de deixá-lo aqui apenas para alguém que pesquisa nesta área. Sim, eu sei que isso é descrito de alguma forma nos documentos do Google (e mencionado nas postagens acima), eu li isso, mas não foi bom para mim (sim, posso ser muito estúpido). Não ficou claro para mim como criar layouts capazes de lidar com diferentes tamanhos de tela. Eu odeio o conceito de DP e assim por diante, quando preciso implementar um layout de interface do usuário "flexível" para telas diferentes. (Hey desenvolvedores do iOS - sim, você está certo, é o conceito do Storyboard).
O Android não tem um conceito ruim de interface do usuário, mas carece de recursos do iOS Storyboard, infelizmente. Projetar UI flexível no Android não é algo fácil (na melhor das hipóteses).
Aqui está o artigo que me ajudou a entender o que fazer no Android para criar layouts para diferentes tamanhos de tela:
Como criar interface do usuário para aplicativos Android para diferentes tamanhos de tela
Para projetar uma interface do usuário do aplicativo para diferentes tamanhos de tela, nosso design inicial precisa atender a um espaço mínimo necessário para cada tamanho de tela. O Android define um tamanho mínimo (em dp) para cada tipo de tela generalizado. Aqui está uma diretriz de tamanho de tela para Android.
Quando obtemos o tamanho da tela no dp, não basta projetar a interface do usuário do aplicativo Android. Para cada tamanho de tela, precisamos preparar gráficos e imagens de bitmap para cada densidade. Aqui está uma diretriz de densidade de tela do Android.
Para facilitar o cálculo, podemos seguir a taxa de escala 3: 4: 6: 8 entre as quatro densidades generalizadas. Se criarmos uma imagem de 36 × 36 pixels para o dispositivo ldpi, o tamanho das imagens das densidades restantes será 48 × 48 para mdpi, 72 × 72 para hdpi e 96 × 96 para xhdpi.
Como criar uma interface do usuário de aplicativos Android no Photoshop
Muitos designers têm problemas para projetar a interface do usuário do aplicativo Android no photoshop ou outras ferramentas de design gráfico baseadas em pixel por causa da unidade independente de densidade, dp. Designers não sabem como mapear dp para pixel. O Google também não fornece um guia claro de design da interface do usuário do Android para eles, apesar de fornecer uma fórmula básica para tradução de pixels e dp.
Como definição do Android, 1pd é igual a 1px no dispositivo de 160 dpi (mdpi). Por isso, queremos projetar um aplicativo Android para um dispositivo Android xlarge com densidade mdpi, podemos definir o tamanho da nossa interface do usuário em pixels como 960 pixels de largura e 720px de altura; Siga a mesma regra de mapeamento, podemos seguir as diretrizes de design da interface do usuário do tamanho da tela do aplicativo Android:
O número de pixels representados em uma unidade de dp aumentará à medida que a resolução da tela aumentar (quando você tiver mais pontos / pixels por polegada). Por outro lado, em dispositivos com resolução mais baixa, o número de pixels representados na unidade de dp diminuirá. Como esta é uma unidade relativa, ela precisa ter uma linha de base para ser comparada. Essa linha de base é uma tela de 160 dpi. Esta é a equação:px = dp * (dpi / 160).
2) sp: (scale independent pixels)
Esta unidade é dimensionada de acordo com o dpi da tela (semelhante ao dp), bem como a preferência do tamanho da fonte do usuário.
Tamanho da tela no Android são agrupados em categorias ldpi, mdpi, hdpi, xhdpi, xxhdpie xxxhdpi. Densidade da tela é a quantidade de pixels dentro de uma área (como polegadas) da tela. Geralmente é medido em pontos por polegada ( dpi).
PX(Pixels):
nosso pixel padrão usual que mapeia para o pixel da tela. pxé destinado a pixels absolutos. Isso é usado se você deseja fornecer em termos de pixels absolutos para largura ou altura. Não recomendado.
DP/DIP(Density pixels / Density independent pixels):
dip == dp. Nas versões anteriores do Android, o dip era usado e posteriormente alterado para dp. Esta é uma alternativa de px.
Geralmente, nunca usamos pxporque é um valor absoluto. Se você pxdefinir a largura ou a altura e se o aplicativo estiver sendo baixado em diferentes dispositivos de tamanho de tela, essa exibição não será ampliada conforme o tamanho original da tela.
dpé altamente recomendável usar no lugar de px. Use dpse você quiser mencionar largura e altura para aumentar e encolher dinamicamente com base nos tamanhos da tela.
se dermos dp/dip, o Android calculará automaticamente o tamanho do pixel com base na tela de 160 pixels.
SP(Scale independent pixels):
dimensionado com base na preferência de tamanho de fonte do usuário. As fontes devem usar sp.
ao mencionar os tamanhos de fonte adequados para vários tamanhos de tela, use sp. Isso é semelhante ao dp.Utilize spespecialmente para tamanhos de fonte aumentarem e encolherem dinamicamente com base nos tamanhos de tela
A documentação do Android diz:
ao especificar dimensões, sempre use uma dpou spunidades. A dpé um pixel independente da densidade que corresponde ao tamanho físico de um pixel em 160 dpi. An spé a mesma unidade base, mas é dimensionada pelo tamanho de texto preferido do usuário (é um pixel independente da escala), portanto, você deve usar essa unidade de medida ao definir o tamanho do texto
A tela de um celular é composta de milhares de pequenos pontos conhecidos como pixels (px) . Um pixel é o menor elemento que faz a imagem. Quanto mais o número de pixels para criar uma imagem ou texto, mais nítido se torna e torna a tela do smartphone mais facilmente legível.
A resolução da tela é medida em termos de número de pixels na tela. A resolução da tela é uma especificação comumente usada na compra de um dispositivo, mas na verdade não é tão útil ao projetar para Android porque pensar em telas em termos de pixels ignora a noção de tamanho físico, o que para um dispositivo de toque é realmente muito importante.
Pixel independente de densidade (dp ou dip) permitem ao designer criar ativos que aparecem da maneira esperada, independentemente da resolução ou densidade do dispositivo de destino.
Um pixel independente da densidade (dp ou dip) é igual a um pixel na densidade da linha de base ou 160 dpi (pontos por polegada).
1 px / 1dp = 160 dpi / 160 dpi
2 px / 1dp = 320 dpi (2x) / 160 dpi
Onde,
dpi é pontos por polegada
Assim, a 320 dpi, 1 dp é igual a 2 px.
Fórmula
px / dp = dpi / 160 dpi
Pontos por polegada (dpi) é uma medida da nitidez (ou seja, a densidade dos pontos iluminados) em uma tela. Os pontos por polegada para uma determinada resolução de imagem diferem com base no tamanho geral da tela, pois o mesmo número de pixels está sendo espalhado por um espaço diferente.
Trabalhar com pixels independentes da densidade nos ajuda a lidar com uma situação como onde você tem dois dispositivos com a mesma resolução de pixels, mas com uma quantidade diferente de espaço. Suponha que, em um caso, um tablet e telefone tenham a mesma resolução de pixel de 1280 por 800 pixels (160 dpi) e 800 por 1280 pixels (320 dpi), respectivamente.
Agora, como um tablet possui densidade de linha de base (160 dpi), seus tamanhos de pixels físicos e independentes de densidade são os mesmos, 1280 por 800. O telefone, por outro lado, tem uma densidade de pixels mais alta, portanto, possui metade do número de pixels independentes de densidade que físico píxeis. Portanto, um telefone tem 400 por 640 pixels independentes de densidade. Portanto, o uso de um pixel independente da densidade facilita a imagem mental desse tablet com muito mais espaço do que o telefone.
Da mesma forma, se você tiver dois dispositivos com tamanho de tela semelhante, mas com densidade de pixels diferente, digamos que um seja de 800 por 1280 pixels (320 dpi) e o outro de 400 por 640 pixels (160 dpi), não precisamos definir totalmente layouts diferentes para esses dois dispositivos, pois podemos medir ativos em termos de pixel independente da densidade, o mesmo para os dois dispositivos.
800 por 1280 pixels (320 dpi) = 400 por 640 pixels independentes de densidade (dp)
400 por 640 pixels (160 dpi) = 400 por 640 pixels independentes de densidade (dp)
Dimensionar pixels independentes (sp) é a unidade preferida para o tamanho da fonte. Para fins de acessibilidade, o Android permite que os usuários personalizem o tamanho da fonte do dispositivo. Os usuários que têm problemas para ler o texto podem aumentar o tamanho da fonte do dispositivo. Normalmente, você pode encontrar essa opção na configuração de exibição em seu telefone ou tablet, em tamanho da fonte. Muitas vezes, também está disponível nas configurações de acessibilidade.
Com pixels independentes de escala, 16 sp é exatamente igual a 16 dp quando o tamanho da fonte do dispositivo é normal ou 100%. Porém, quando o tamanho da fonte do dispositivo for grande, por exemplo, 125%, 16 sp serão convertidos para 20 dp ou 1,25 vezes 16.
Se você usar dp como a unidade para o tamanho da fonte, esse pedaço de texto terá um tamanho físico específico, independentemente de o usuário personalizar o tamanho da fonte do dispositivo. O uso de unidades sp proporcionará uma experiência melhor para pessoas com deficiência visual.
Você deve usá-lo com textos, pois é dimensionado automaticamente de acordo com o tamanho da fonte que está sendo usada pelo usuário em seu dispositivo.
px: elemento de pixel ou imagem é o ponto único na tela
A densidade e a resolução dos pixels da tela variam de acordo com a plataforma. Pixels independentes de dispositivo e pixels escalonáveis são unidades que fornecem uma maneira flexível de acomodar um design entre plataformas.
Cálculo da densidade de pixels
O número de pixels que cabem em uma polegada é chamado de densidade de pixels. As telas de alta densidade têm mais pixels por polegada do que as de baixa densidade ....
O número de pixels que cabem em uma polegada é chamado de densidade de pixels. Telas de alta densidade têm mais pixels por polegada do que as de baixa densidade. Como resultado, os elementos da interface do usuário com as mesmas dimensões de pixel parecem maiores em telas de baixa densidade e menores em telas de alta densidade.
Para calcular a densidade da tela, você pode usar esta equação:
Densidade da tela = Largura (ou altura) da tela em pixels / Largura (ou altura) da tela em polegadas
Independência da densidade
A densidade e a resolução dos pixels da tela variam de acordo com a plataforma. Pixels independentes de dispositivo e pixels escalonáveis são unidades que fornecem uma maneira flexível de acomodar um design entre plataformas.
Calculando a densidade de pixels O número de pixels que cabem em uma polegada é chamado de densidade de pixels . As telas de alta densidade têm mais pixels por polegada do que as de baixa densidade ....
Independência de densidade refere-se à exibição uniforme de elementos da interface do usuário em telas com densidades diferentes.
Pixels independentes da densidade , escritos como dp (pronuncia-se " dips "), são unidades flexíveis que são dimensionadas para ter dimensões uniformes em qualquer tela. As UIs de materiais usam pixels independentes da densidade para exibir elementos de maneira consistente em telas com densidades diferentes.
Tela de baixa densidade exibida com independência de densidade
Tela de alta densidade exibida com independência de densidade
Pixels (px) - corresponde aos pixels reais na tela. Isso é usado se você deseja fornecer em termos de pixels absolutos para largura ou altura.
Pixels independentes da densidade (dp ou dip) - uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi, portanto, um dp é um pixel em uma tela de 160 dpi. A proporção de dp para pixel mudará com a densidade da tela, mas não necessariamente na proporção direta. Nota: O compilador aceita "dip" e "dp", embora "dp" seja mais consistente com "sp".
Pixels independentes de escala (sp) - é como a unidade dp, mas também é dimensionada pela preferência do tamanho da fonte do usuário. É recomendável usar esta unidade ao especificar tamanhos de fonte, para que sejam ajustados para a densidade da tela e a preferência do usuário.
Quero fornecer uma maneira fácil de entender dp. Na verdade, acho que dpé o mais fácil de entender. dpé apenas uma unidade de comprimento físico. É da mesma dimensão que mmou inch. É apenas conveniente escrever 50dp, em 60dpvez de 50/160 inchou 60/160 inchporque um dpé exatamente 1/160 incho tamanho ou a resolução da tela.
O único problema é que, o dpi android de algumas telas não é preciso. Por exemplo, uma tela classificada em 160 dpi pode ter 170 dpi. Portanto, o resultado da computação dpé nebuloso. Deve ser aproximadamente o mesmo que 1/160 inch.
px
,dp
esp
Respostas:
Na documentação do desenvolvedor do Android :
De compreensão da independência de densidade no Android :
Mais informações também podem ser encontradas na documentação do Google Design .
fonte
dp
que não têm exatamente o mesmo comprimento físico. (Embora esteja próximo.) Consulte o comentário do @ Fraggle sobre o bucket. O que isto significa é que 48dp terá aproximadamente 8 mm (0,3 polegadas), mas poderá variar até 11 mm.Praticamente tudo sobre isso e como obter o melhor suporte para várias telas de diferentes tamanhos e densidades está muito bem documentado aqui:
Se você é sério sobre o desenvolvimento de um aplicativo Android para mais de um tipo de dispositivo, deve ler o documento de desenvolvimento de suporte de telas pelo menos uma vez. Além disso, é sempre bom saber o número real de dispositivos ativos que possuem uma configuração de tela específica.
fonte
Vou elaborar mais sobre como exatamente o dp converte em px:
150 x 150 px
imagem ocupará150 * 150 dp
espaço na tela.150 x 150 px
imagem ocupará100 * 100 dp
espaço na tela.150x150 px
imagem ocupará75 * 75 dp
espaço na tela.O contrário: digamos, você deseja adicionar uma imagem ao seu aplicativo e precisa preencher um
100 * 100 dp
controle. Você precisará criar imagens de tamanhos diferentes para os tamanhos de tela compatíveis:100 * 100 px
imagem para mdpi150 * 150 px
imagem para hdpi200 * 200 px
imagem para xhdpifonte
px - Pixels - o ponto por escala corresponde aos pixels reais na tela.
i - Polegadas - com base no tamanho físico da tela.
mm - milímetros - com base no tamanho físico da tela.
pt - Pontos - 1/72 de polegada com base no tamanho físico da tela.
dp - Pixels independentes da densidade - uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi, portanto, um
dp
é um pixel em uma tela de 160 dpi. A proporção de dp para pixel mudará com a densidade da tela, mas não necessariamente na proporção direta. Nota: O compilador aceita ambosdip
edp
, emboradp
seja mais consistente comsp
.sp - Pixels independentes de escala - é como a
dp
unidade, mas também é dimensionada pela preferência do tamanho da fonte do usuário. É recomendável que você use esta unidade ao especificar tamanhos de fonte, para que sejam ajustados para a densidade da tela e a preferência do usuário.Tomemos o exemplo de duas telas com o mesmo tamanho, mas uma com densidade de tela de 160 dpi (pontos por polegada, ou seja, pixels por polegada) e a outra com 240 dpi.
fonte
Além disso, você deve ter um entendimento claro sobre os seguintes conceitos:
Tamanho da tela:
Densidade da tela:
Orientação:
Resolução:
Pixel independente da densidade (dp):
Referência: site de desenvolvedores Android
fonte
dp
édip
. Use-o para tudo (margem, preenchimento, etc.).Use
sp
somente para {tamanho do texto}.Para obter o mesmo tamanho em diferentes densidades de tela, o Android converte essas unidades em pixels em tempo de execução, para que não exista uma matemática complicada.
Veja a diferença entre
px
,dp
esp
em diferentes tamanhos de tela.Fonte: Programação Android: The Big Nerd Ranch Guide
fonte
Eu calculei a fórmula abaixo para fazer as conversões
dpi
paradp
esp
fonte
Definições
px ou ponto é um pixel na tela física.
dpi são pixels por polegada na tela física e representam a densidade da tela.
O Android fornece nomes alternativos para várias densidades
mergulho ou dp são pixels de densidade-indenpendant , ou seja, eles correspondem a mais ou menos pixels dependendo da densidade física.
sp ou sip é um pixel independente da escala . Eles são redimensionados quando a opção Texto Grande é ativada em Settings>Accessibility
O que usar?
fonte
Fonte 1
Fonte 2
Fonte 3 : (dados da fonte 3 são fornecidos abaixo)
Nota: Uma dimensão é um recurso simples que é referenciado usando o valor fornecido no atributo name (não o nome do arquivo XML). Assim, você pode combinar recursos de dimensão com outros recursos simples em um arquivo XML, em um elemento.
fonte
Basicamente, o único momento em que o px se aplica é um px, e se você quiser exatamente um pixel na tela, como no caso de um divisor:
Em> 160 dpi, você pode obter 2 a 3 pixels,
Em> 120 dpi, arredonda para 0.
fonte
px
Pixels - corresponde aos pixels reais na tela.
dp ou dip
Pixels independentes da densidade - uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi, portanto, um dp é um pixel em uma tela de 160 dpi.
Uso de dp:
Independência de densidade - Seu aplicativo obtém "independência de densidade" quando preserva o tamanho físico (do ponto de vista do usuário) dos elementos da interface do usuário quando exibido em telas com densidades diferentes. (ou seja) A imagem deve ter o mesmo tamanho (não ampliada ou reduzida) em diferentes tipos de tela.
sp
Pixels independentes de escala - é como a unidade dp, mas também é dimensionada pela preferência do tamanho da fonte do usuário.
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
fonte
Onde usar o que e a relação entre px e dp?
Pixel independente da densidade (dp)
Uma unidade virtual de pixels que você deve usar ao definir o layout da interface do usuário para expressar dimensões ou posição do layout de maneira independente da densidade. Como descrito acima, o pixel independente da densidade é equivalente a um pixel físico em uma tela de 160 dpi, que é a densidade da linha de base assumida pelo sistema para uma tela de densidade "média". No tempo de execução, o sistema lida com qualquer escalonamento transparente das unidades dp, conforme necessário, com base na densidade real da tela em uso. A conversão de unidades dp em pixels da tela é simples:
px = dp * (dpi / 160).
Por exemplo, em uma tela de 240 dpi, 1 dp é igual a 1,5 pixels físicos. Você sempre deve usar unidades dp ao definir a interface do usuário do aplicativo, para garantir a exibição adequada da interface do usuário em telas com densidades diferentes.
Compreender pixel para dp e vice-versa é muito essencial (especialmente para fornecer valores exatos de dp à equipe criativa)
px
É explicado acima. Tente evitar nos arquivos de layout. Mas existem alguns casos em que px é necessário. por exemplo, linha divisora do ListView. px é melhor aqui para fornecer uma linha de um pixel como divisor para todas as resoluções de tela.
sp
Use sp para tamanhos de fonte. Somente a fonte dentro do aplicativo será alterada enquanto o tamanho das fontes do dispositivo for alterado (ou seja, Vídeo -> Fontes no dispositivo). Se você deseja manter uma fonte de tamanho estático dentro do aplicativo, é possível fornecer a dimensão da fonte no dp. Nesse caso, isso nunca mudará. Os desenvolvedores podem obter esse requisito para algumas telas específicas; para isso, os desenvolvedores podem usar dp em vez de sp. Em todos os outros casos, sp é recomendado.
fonte
Você pode ver a diferença entre
px
edp
da imagem abaixo, e também pode descobrir que opx
edp
não pode garantir os mesmos tamanhos físicos nas diferentes telas.fonte
Qualquer coisa relacionada ao tamanho do texto e aparência deve usar
sp
oupt
. Visto que qualquer coisa relacionada ao tamanho dos controles, layouts etc. deve ser usada comdp
.Você pode usar os dois
dp
edip
em seus lugares.fonte
Eu usaria apenas dp.
Fala-se muito em usar "sp" para tamanhos de fonte e, embora eu aprecie o argumento, não acho que seja a coisa certa a fazer do ponto de vista do design. Você pode acabar quebrando seu design se o usuário tiver alguma seleção de tamanho de fonte instável e acabar culpando o aplicativo , e não suas próprias escolhas de vida.
Além disso, se você usar um aplicativo de fonte sp em um tablet de 160 dpi, verá que tudo aumenta ... mas sua fonte, que parecerá pequena em comparação. Não é uma boa aparência.
Embora a idéia de fontes "sp" tenha um bom coração, é uma má idéia. Ficar com dp para tudo.
fonte
sp
é um fator, certo? Tudo o que afetadp
também afetasp
. Dito isso, ainda é preferível especificar tamanhos de fonte usando, emdp
vez desp
se o seu layout for muito apertado e os tamanhos maiores não couberem - é melhor ter um texto menor do que o usuário deseja que um layout completamente bagunçado. Mas, em primeiro lugar, você sempre deve respeitar a preferência de tamanho de fonte do usuário - mesmo a maior configuração não é TÃO grande.sp = pixel independente da escala
dp = dip = pixels independentes da densidade
dpi = pontos por polegada
Android suporta diferentes resoluções de tela
Um dispositivo ldpi de 120 dp tem 120 pixels em tamanho de 1 polegada.
O mesmo para outras densidades ...
Nós, engenheiros de software, devemos usar esta fórmula de conversão:
Portanto, o 1 dp do dispositivo de 240 dpi terá = 1 * (240/160) = 3/2 = 1,5 pixels.
E o 1 dp do dispositivo de 480 dpi terá = 1 * (480/160) = 3 pixels.
Usando esse conhecimento de 1,5 e 3 pixels, um engenheiro de software pode projetar layouts para diferentes densidades.
Para verificar os parâmetros da tela de qualquer dispositivo:
fonte
A diferença entre
dp
e assp
unidades mencionadas como " preferência de tamanho de fonte do usuário " pelas respostas copiadas da documentação oficial pode ser vista em tempo de execução, alterando aSettings->Accessibility->Large Text
opção.Large Text
A opção força o texto a se tornar1.3
cada vez maior.Obviamente, isso pode depender do fornecedor, pois está em pacotes / aplicativos / configurações .
fonte
dpi -
px - pixel
pt - pontos
polegadas - em relação ao tamanho físico da tela (1 polegada = 2,54 cm).
mm-milímetro - em relação ao tamanho físico da tela.
sp - pixel independente da escala.
dip -
No padrão, dp e sp são usados. sp para o tamanho da fonte e dp para todo o resto.
Fórmula para conversão de unidades:
fonte
Aqui está a fórmula usada pelo Android:
Onde dpi é uma das seguintes densidades de tela. Para uma lista de todas as densidades possíveis, clique aqui
Ele define as constantes "DENSITY_ *".
Tomado daqui .
Isso resolverá muita confusão ao traduzir entre px e dp, se você souber o dpi da tela.
Então, digamos que você queira uma imagem de 60 dp para uma tela hdpi, o tamanho físico do pixel de 60 dp é:
fonte
Tamanho da tela em
Android
são agrupados em categoriassmall
,medium
,large
,extra large
,double-extra
etriple-extra
. Densidade da tela é a quantidade de pixels dentro de uma área (como polegadas) da tela. Geralmente é medido em pontos por polegada (dpi). A densidade da tela é agrupada em baixa, média, alta e extra alta. Resolução é o número total de pixels na tela.Fórmula para conversão entre unidades
dp para px no dispositivo
O exemplo a seguir pode ajudar a entender melhor. A escala ocorre com base no tamanho do bucket de 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) e 640 (xxxhdpi). A proporção sugerida pelo Google para o design é 3: 4: 6: 8: 12 para ldpi: mdpi: hdpi: xhdpi: xxhdpi
Uma imagem de 150px x 150px ocupará,
Você pode usar a seguinte calculadora de DPI para corrigir os tamanhos de imagem e outras dimensões quando desejar ter um design de interface do usuário uniforme em todos os dispositivos Android.
Calculadora DPI em Java
Mais informações consulte o link a seguir.
http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/
fonte
Por favor, leia a resposta do wiki da comunidade. Abaixo mencionadas estão algumas informações a serem consideradas, além das respostas acima. A maioria dos desenvolvedores do Android sente falta disso ao desenvolver aplicativos, por isso estou adicionando esses pontos.
sp = pixel independente da escala
dp = pixels independentes da densidade
dpi = pixels de densidade
Passei pelas respostas acima ... não as encontrei exatamente corretas. sp para tamanho do texto, dp para limites de layout - padrão. Mas sp para o tamanho do texto interromperá o layout se usado de forma descuidada na maioria dos dispositivos.
sp leva o tamanho do texto do dispositivo, enquanto dp leva o padrão de densidade do dispositivo (nunca mude em um dispositivo). Diga 100sp texto pode ocupar 80% da tela ou 100% da tela, dependendo do tamanho da fonte definido no dispositivo
Você pode usar sp para limites de layout também, ele funcionará :) Nenhum aplicativo padrão usa sp para todo o texto
Use sp e dp para o tamanho do texto, considerando o UX.
Algumas pessoas usam um tamanho enorme de FONT em seu telefone para obter mais legibilidade, fornecendo um texto pequeno e com código embutido será um problema de UX. Coloque sp para texto sempre que necessário, mas certifique-se de que ele não interrompa o layout quando o usuário alterar suas configurações.
Da mesma forma, se você tiver um único aplicativo compatível com todas as dimensões, a adição de recursos xxxhdpi aumenta muito o tamanho do aplicativo. Mas agora os telefones xxxhdpi são comuns, portanto, temos de incluir ativos xxxhdpi para ícones na barra lateral, barra de ferramentas e barra inferior. É melhor mudar para imagens vetoriais para ter imagens uniformes e de melhor qualidade para todos os tamanhos de tela.
Observe também que as pessoas usam fontes personalizadas em seus telefones. Portanto, a falta de uma fonte pode causar problemas de espaçamento e tudo. Digamos que o tamanho do texto 12sp para uma fonte personalizada possa levar alguns pixels a mais que a fonte padrão.
Consulte o site do desenvolvedor do Google para obter screendensities e detalhes de basedensity para android. https://developer.android.com/training/multiscreen/screendensities
fonte
Normalmente, sp é usado para tamanhos de fonte, enquanto dip é usado (também chamado dp) para outros.
fonte
Encontrei um bom artigo sobre como projetar a interface do usuário de aplicativos Android para diferentes resoluções de tela e gostaria de deixá-lo aqui apenas para alguém que pesquisa nesta área. Sim, eu sei que isso é descrito de alguma forma nos documentos do Google (e mencionado nas postagens acima), eu li isso, mas não foi bom para mim (sim, posso ser muito estúpido). Não ficou claro para mim como criar layouts capazes de lidar com diferentes tamanhos de tela. Eu odeio o conceito de DP e assim por diante, quando preciso implementar um layout de interface do usuário "flexível" para telas diferentes. (Hey desenvolvedores do iOS - sim, você está certo, é o conceito do Storyboard).
O Android não tem um conceito ruim de interface do usuário, mas carece de recursos do iOS Storyboard, infelizmente. Projetar UI flexível no Android não é algo fácil (na melhor das hipóteses).
Aqui está o artigo que me ajudou a entender o que fazer no Android para criar layouts para diferentes tamanhos de tela:
JMSTUDIO Blog: - Decida o tamanho da tela do aplicativo Android
ADICIONADO : Se você também estiver interessado na interface do usuário "flexível", consulte esta biblioteca: Um SDK do Android que fornece uma nova unidade de tamanho - sdp (dp escalável). Essa unidade de tamanho é dimensionada com o tamanho da tela (isso também é mencionado em uma resposta aqui, sobre a
SDP
biblioteca)ADDED2 O Google finalmente entendeu a utilidade do conceito de interface do usuário da iOS Storeboard e aqui vai o
ConstraintLayout
mundo do Android: criar uma interface de usuário responsiva com o ConstraintLayoutfonte
1)
dp: (density independent pixels)
O número de pixels representados em uma unidade de dp aumentará à medida que a resolução da tela aumentar (quando você tiver mais pontos / pixels por polegada). Por outro lado, em dispositivos com resolução mais baixa, o número de pixels representados na unidade de dp diminuirá. Como esta é uma unidade relativa, ela precisa ter uma linha de base para ser comparada. Essa linha de base é uma tela de 160 dpi. Esta é a equação:
px = dp * (dpi / 160).
2)
sp: (scale independent pixels)
Esta unidade é dimensionada de acordo com o dpi da tela (semelhante ao dp), bem como a preferência do tamanho da fonte do usuário.
3)
px: (pixels)
Pixels ou pontos reais na tela.
Para mais detalhes você pode visitar
fonte
Tamanho da tela no Android são agrupados em categorias
ldpi
,mdpi
,hdpi
,xhdpi
,xxhdpi
exxxhdpi
. Densidade da tela é a quantidade de pixels dentro de uma área (como polegadas) da tela. Geralmente é medido em pontos por polegada (dpi
).PX(Pixels):
px
é destinado a pixels absolutos. Isso é usado se você deseja fornecer em termos de pixels absolutos para largura ou altura. Não recomendado.DP/DIP(Density pixels / Density independent pixels):
dip == dp
. Nas versões anteriores do Android, o dip era usado e posteriormente alterado paradp
. Esta é uma alternativa depx
.Geralmente, nunca usamos
px
porque é um valor absoluto. Se vocêpx
definir a largura ou a altura e se o aplicativo estiver sendo baixado em diferentes dispositivos de tamanho de tela, essa exibição não será ampliada conforme o tamanho original da tela.dp
é altamente recomendável usar no lugar depx
. Usedp
se você quiser mencionar largura e altura para aumentar e encolher dinamicamente com base nos tamanhos da tela.se dermos
dp/dip
, o Android calculará automaticamente o tamanho do pixel com base na tela de 160 pixels.SP(Scale independent pixels):
dimensionado com base na preferência de tamanho de fonte do usuário. As fontes devem usar
sp
.ao mencionar os tamanhos de fonte adequados para vários tamanhos de tela, use
sp
. Isso é semelhante aodp
.Utilizesp
especialmente para tamanhos de fonte aumentarem e encolherem dinamicamente com base nos tamanhos de telaA documentação do Android diz:
fonte
A tela de um celular é composta de milhares de pequenos pontos conhecidos como pixels (px) . Um pixel é o menor elemento que faz a imagem. Quanto mais o número de pixels para criar uma imagem ou texto, mais nítido se torna e torna a tela do smartphone mais facilmente legível.
A resolução da tela é medida em termos de número de pixels na tela. A resolução da tela é uma especificação comumente usada na compra de um dispositivo, mas na verdade não é tão útil ao projetar para Android porque pensar em telas em termos de pixels ignora a noção de tamanho físico, o que para um dispositivo de toque é realmente muito importante.
Pixel independente de densidade (dp ou dip) permitem ao designer criar ativos que aparecem da maneira esperada, independentemente da resolução ou densidade do dispositivo de destino.
Um pixel independente da densidade (dp ou dip) é igual a um pixel na densidade da linha de base ou 160 dpi (pontos por polegada).
1 px / 1dp = 160 dpi / 160 dpi
2 px / 1dp = 320 dpi (2x) / 160 dpi
Onde,
dpi é pontos por polegada
Assim, a 320 dpi, 1 dp é igual a 2 px.
Fórmula
px / dp = dpi / 160 dpi
Pontos por polegada (dpi) é uma medida da nitidez (ou seja, a densidade dos pontos iluminados) em uma tela. Os pontos por polegada para uma determinada resolução de imagem diferem com base no tamanho geral da tela, pois o mesmo número de pixels está sendo espalhado por um espaço diferente.
Trabalhar com pixels independentes da densidade nos ajuda a lidar com uma situação como onde você tem dois dispositivos com a mesma resolução de pixels, mas com uma quantidade diferente de espaço. Suponha que, em um caso, um tablet e telefone tenham a mesma resolução de pixel de 1280 por 800 pixels (160 dpi) e 800 por 1280 pixels (320 dpi), respectivamente.
Agora, como um tablet possui densidade de linha de base (160 dpi), seus tamanhos de pixels físicos e independentes de densidade são os mesmos, 1280 por 800. O telefone, por outro lado, tem uma densidade de pixels mais alta, portanto, possui metade do número de pixels independentes de densidade que físico píxeis. Portanto, um telefone tem 400 por 640 pixels independentes de densidade. Portanto, o uso de um pixel independente da densidade facilita a imagem mental desse tablet com muito mais espaço do que o telefone.
Da mesma forma, se você tiver dois dispositivos com tamanho de tela semelhante, mas com densidade de pixels diferente, digamos que um seja de 800 por 1280 pixels (320 dpi) e o outro de 400 por 640 pixels (160 dpi), não precisamos definir totalmente layouts diferentes para esses dois dispositivos, pois podemos medir ativos em termos de pixel independente da densidade, o mesmo para os dois dispositivos.
800 por 1280 pixels (320 dpi) = 400 por 640 pixels independentes de densidade (dp)
400 por 640 pixels (160 dpi) = 400 por 640 pixels independentes de densidade (dp)
Dimensionar pixels independentes (sp) é a unidade preferida para o tamanho da fonte. Para fins de acessibilidade, o Android permite que os usuários personalizem o tamanho da fonte do dispositivo. Os usuários que têm problemas para ler o texto podem aumentar o tamanho da fonte do dispositivo. Normalmente, você pode encontrar essa opção na configuração de exibição em seu telefone ou tablet, em tamanho da fonte. Muitas vezes, também está disponível nas configurações de acessibilidade.
Com pixels independentes de escala, 16 sp é exatamente igual a 16 dp quando o tamanho da fonte do dispositivo é normal ou 100%. Porém, quando o tamanho da fonte do dispositivo for grande, por exemplo, 125%, 16 sp serão convertidos para 20 dp ou 1,25 vezes 16.
Se você usar dp como a unidade para o tamanho da fonte, esse pedaço de texto terá um tamanho físico específico, independentemente de o usuário personalizar o tamanho da fonte do dispositivo. O uso de unidades sp proporcionará uma experiência melhor para pessoas com deficiência visual.
Referência : Udacity , Google
fonte
Você deve usá-lo com textos, pois é dimensionado automaticamente de acordo com o tamanho da fonte que está sendo usada pelo usuário em seu dispositivo.
fonte
Densidade de pixels
A densidade e a resolução dos pixels da tela variam de acordo com a plataforma. Pixels independentes de dispositivo e pixels escalonáveis são unidades que fornecem uma maneira flexível de acomodar um design entre plataformas.
Cálculo da densidade de pixels
O número de pixels que cabem em uma polegada é chamado de densidade de pixels. As telas de alta densidade têm mais pixels por polegada do que as de baixa densidade ....
O número de pixels que cabem em uma polegada é chamado de densidade de pixels. Telas de alta densidade têm mais pixels por polegada do que as de baixa densidade. Como resultado, os elementos da interface do usuário com as mesmas dimensões de pixel parecem maiores em telas de baixa densidade e menores em telas de alta densidade.
Para calcular a densidade da tela, você pode usar esta equação:
Densidade da tela = Largura (ou altura) da tela em pixels / Largura (ou altura) da tela em polegadas
Independência da densidade
A densidade e a resolução dos pixels da tela variam de acordo com a plataforma. Pixels independentes de dispositivo e pixels escalonáveis são unidades que fornecem uma maneira flexível de acomodar um design entre plataformas.
Calculando a densidade de pixels O número de pixels que cabem em uma polegada é chamado de densidade de pixels . As telas de alta densidade têm mais pixels por polegada do que as de baixa densidade ....
Independência de densidade refere-se à exibição uniforme de elementos da interface do usuário em telas com densidades diferentes.
Pixels independentes da densidade , escritos como dp (pronuncia-se " dips "), são unidades flexíveis que são dimensionadas para ter dimensões uniformes em qualquer tela. As UIs de materiais usam pixels independentes da densidade para exibir elementos de maneira consistente em telas com densidades diferentes.
Leia o texto completo https://material.io/design/layout/pixel-density.html
fonte
Pixels (px) - corresponde aos pixels reais na tela. Isso é usado se você deseja fornecer em termos de pixels absolutos para largura ou altura.
Pixels independentes da densidade (dp ou dip) - uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi, portanto, um dp é um pixel em uma tela de 160 dpi. A proporção de dp para pixel mudará com a densidade da tela, mas não necessariamente na proporção direta. Nota: O compilador aceita "dip" e "dp", embora "dp" seja mais consistente com "sp".
Pixels independentes de escala (sp) - é como a unidade dp, mas também é dimensionada pela preferência do tamanho da fonte do usuário. É recomendável usar esta unidade ao especificar tamanhos de fonte, para que sejam ajustados para a densidade da tela e a preferência do usuário.
Sempre use apenas dp e sp. sp para tamanhos de fonte e dp para todo o resto. Tornará a interface do usuário compatível para dispositivos Android com diferentes densidades. Você pode saber mais sobre pixel e dp em https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp-
URL de origem: - http://www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/
fonte
Quero fornecer uma maneira fácil de entender
dp
. Na verdade, acho quedp
é o mais fácil de entender.dp
é apenas uma unidade de comprimento físico. É da mesma dimensão quemm
ouinch
. É apenas conveniente escrever50dp
, em60dp
vez de50/160 inch
ou60/160 inch
porque umdp
é exatamente1/160 inch
o tamanho ou a resolução da tela.O único problema é que, o dpi android de algumas telas não é preciso. Por exemplo, uma tela classificada em 160 dpi pode ter 170 dpi. Portanto, o resultado da computação
dp
é nebuloso. Deve ser aproximadamente o mesmo que1/160 inch
.fonte