Qual é a diferença entre "px", "dip", "dp" e "sp"?

5815

Qual é a diferença entre as unidades de medida do Android?

  • px
  • mergulho
  • dp
  • sp
capecrawler
fonte
65
esta é usar diferença total entre px, mergulho, dp e sp em andróide [ developer.android.com/guide/topics/resources/...
NagarjunaReddy
20
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.
Paul Lammertsma 01/07/2014
9
nova descrição no Google Design Unidades e medidas
Arnav M.
1
Design de material com pixel densidade material.io/design/layout/...
Shomu

Respostas:

5771

Na documentação do desenvolvedor do Android :

  1. px
    Pixels - corresponde aos pixels reais na tela.

  2. em
    Polegadas - com base no tamanho físico da tela.
    1 Polegada = 2,54 centímetros

  3. mm
    Milímetros - com base no tamanho físico da tela.

  4. pt
    Pontos - 1/72 de polegada com base no tamanho físico da tela.

  5. 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".

  6. 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.

De compreensão da independência de densidade no Android :

+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size                    | 
+----------------+----------------+---------------+-------------------------------+
| ldpi           | 120 dpi        | 0.5 x 0.5 in  | 0.5 in * 120 dpi = 60x60 px   | 
+----------------+----------------+---------------+-------------------------------+
| mdpi           | 160 dpi        | 0.5 x 0.5 in  | 0.5 in * 160 dpi = 80x80 px   | 
+----------------+----------------+---------------+-------------------------------+
| hdpi           | 240 dpi        | 0.5 x 0.5 in  | 0.5 in * 240 dpi = 120x120 px | 
+----------------+----------------+---------------+-------------------------------+
| xhdpi          | 320 dpi        | 0.5 x 0.5 in  | 0.5 in * 320 dpi = 160x160 px | 
+----------------+----------------+---------------+-------------------------------+
| xxhdpi         | 480 dpi        | 0.5 x 0.5 in  | 0.5 in * 480 dpi = 240x240 px | 
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi        | 640 dpi        | 0.5 x 0.5 in  | 0.5 in * 640 dpi = 320x320 px | 
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Mais informações também podem ser encontradas na documentação do Google Design .

Steven Byle
fonte
17
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.

Bruiser
fonte
41
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:

  • 100 * 100 px imagem para mdpi
  • 150 * 150 px imagem para hdpi
  • 200 * 200 px imagem para xhdpi
devmiles.com
fonte
2
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
Physical Width                      1.5 inches                        1.5 inches
Dots Per Inch (“dpi”)               160                               240
Pixels (=width*dpi)                 240                               360
Density (factor of baseline 160)    1.0                               1.5

Density-independent pixels          240                               240
(“dip or dp or dps”)

Scale-independent pixels 
 (“sip or sp”)                  Depends on user font size settings    same
Amit Gajera
fonte
234

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.

Referência: site de desenvolvedores Android

Sazzad Hissain Khan
fonte
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.

Digite a descrição da imagem aqui

Fonte: Programação Android: The Big Nerd Ranch Guide

Mina Gabriel
fonte
144

Eu calculei a fórmula abaixo para fazer as conversões dpipara dpesp insira a descrição da imagem aqui

chaitanya
fonte
10
Deve ser ppi em vez de dpi
Prateek
142

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

  • ldpi (baixo) ~ 120dpi
  • mdpi (médio) ~ 160dpi
  • hdpi (alta) ~ 240dpi
    • a maioria dos dispositivos em 2015 está aqui
  • xhdpi (extra-alto) ~ 320dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (extra-extra-alto) ~ 480dpi
    • Nexus 5
  • xxxhdpi (extra-extra-extra-alto) ~ 640dpi

mergulho ou dp são pixels de densidade-indenpendant , ou seja, eles correspondem a mais ou menos pixels dependendo da densidade física.

  • 1dp = 1px no mdpi

insira a descrição da imagem aqui

sp ou sip é um pixel independente da escala . Eles são redimensionados quando a opção Texto Grande é ativada em Settings>Accessibility

  • 1sp = 1dp
  • 1sp = 1.2dp com acessibilidade Texto Grande

O que usar?

Use sp para o tamanho do texto.

Use dp para todo o resto.

rds
fonte
129

Fonte 1

Fonte 2

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.

sms247
fonte
9
Além disso: qual é o valor agregado desta resposta? Parece não haver nada que ainda não tenha sido mencionado em outras respostas.
laalto
119

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.

Joe Plante
fonte
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.

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

Nirav Ranpara
fonte
98

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)

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 Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 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 or 320dpi)
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.

Arunjyothis
fonte
90

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.

insira a descrição da imagem aqui

Zephyr
fonte
3
@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.

Você pode usar os dois dpe dipem seus lugares.

Atish Agrawal
fonte
69

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.

Bharal
fonte
1
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:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

Toast.makeText(
    this,
    "4:" + metrics.heightPixels + "," + metrics.density + ","
    + metrics.densityDpi, Toast.LENGTH_LONG).show();
Kushal
fonte
Muito bom tutorial para entendimento é: http: /vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer
Kushal
5
"Devemos evitar usar sp" Por que isso? Você deve usar sp quando se lida com tamanhos de fonte, porque leva em conta do usuário tamanho do texto preferido, developer.android.com/training/multiscreen/screendensities.html
LN_
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.

private static final float LARGE_FONT_SCALE = 1.3f;

Obviamente, isso pode depender do fornecedor, pois está em pacotes / aplicativos / configurações .

auselen
fonte
52

dpi -

  • Pontos por polegadas
  • Medindo a densidade de pixels da tela.

px - pixel

  • Para mapear pixels da tela

pt - pontos

  • Cerca de 1/72 de polegada, com relação ao tamanho físico da tela.

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.

  • Com base na preferência do tamanho da fonte do usuário.
  • A fonte deve estar em 'sp'.

dip -

  • dip == dp
  • Pixel independente da densidade.
  • Varia de acordo com a densidade da tela.
  • Na tela de 160 dpi, 1 dp = 1 pixel.
  • Use dp, exceto o tamanho da fonte do texto.

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:

px = dp * (dpi / 160);

Density Bucket -> Screen Display => Physical Size        => Pixel Size                   

ldpi         -> 120 dpi          => 0.5 x 0.5 in         => 0.5 in * 120 dpi = 60x60 px   

mdpi         -> 160 dpi          => 0.5 x 0.5 in         => 0.5 in * 160 dpi = 80x80 px   

hdpi         -> 240 dpi          => 0.5 x 0.5 in         => 0.5 in * 240 dpi = 120x120 px  

xhdpi        -> 320 dpi          => 0.5 x 0.5 in         => 0.5 in * 320 dpi = 160x160 px  

xxhdpi       -> 480 dpi          => 0.5 x 0.5 in         => 0.5 in * 480 dpi = 240x240 px 

xxxhdpi      -> 640 dpi          => 0.5 x 0.5 in         => 0.5 in * 640 dpi = 320x320 px  
Arunendra
fonte
De acordo com a documentação O compilador aceita tanto "mergulho" e "dp", apesar de "dp" é mais consistente com "sp”.
Arunendra
46

Aqui está a fórmula usada pelo Android:

px = dp * (dpi / 160)

Onde dpi é uma das seguintes densidades de tela. Para uma lista de todas as densidades possíveis, clique aqui

Ele define as constantes "DENSITY_ *".

  • ldpi (baixo) ~ 120dpi
  • mdpi (médio) ~ 160dpi
  • hdpi (alta) ~ 240dpi
  • xhdpi (extra-alto) ~ 320dpi
  • xxhdpi (extra-extra-alto) ~ 480dpi
  • xxxhdpi (extra-extra-extra-alto) ~ 640dpi

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 é:

px = 60 * (240 / 160)
Dan Borza
fonte
45

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.

Calculadora DPI em Java

/*
Program output
LDPI: 165.0 X 60.0
MDPI: 220.0 X 80.0
HDPI: 330.0 X 120.0
XHDPI: 440.0 X 160.0
XXHDPI: 660.0 X 240.0
XXXHDPI: 880.0 X 320.0
*/


public class DPICalculator {

private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float XXHDPI = 480;
private final float XXXHDPI = 640;    

private float forDeviceDensity;
private float width;
private float height;

public DPICalculator(float forDeviceDensity, float width, float height){
    this.forDeviceDensity = forDeviceDensity;
    this.width = width;
    this.height = height;
}

public static void main(String... args) {
    DPICalculator dpiCalculator = new DPICalculator(240,330,120);
    dpiCalculator.calculateDPI();
}


private float getPx(float dp, float value) {
    float px = dp * (value / forDeviceDensity );        
    return px;
}

private void calculateDPI() {

    float ldpiW = getPx(LDPI,width);        
    float ldpiH =  getPx(LDPI,height);
    float mdpiW = getPx(MDPI,width);        
    float mdpiH =  getPx(MDPI,height);        
    float hdpiW = getPx(HDPI,width);        
    float hdpiH =  getPx(HDPI,height);       
    float xdpiW = getPx(XHDPI,width);        
    float xdpiH =  getPx(XHDPI,height);
    float xxdpiW = getPx(XXHDPI,width);        
    float xxdpiH =  getPx(XXHDPI,height);
    float xxxdpiW = getPx(XXXHDPI,width);        
    float xxxdpiH =  getPx(XXXHDPI,height);

    System.out.println("LDPI: " + ldpiW + " X " + ldpiH);
    System.out.println("MDPI: " + mdpiW + " X " + mdpiH);
    System.out.println("HDPI: " + hdpiW + " X " + hdpiH);
    System.out.println("XHDPI: " + xdpiW + " X " + xdpiH);
    System.out.println("XXHDPI: " + xxdpiW + " X " + xxdpiH);
    System.out.println("XXXHDPI: " + xxxdpiW + " X " + xxxdpiH);        
   }
}

Mais informações consulte o link a seguir.

http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/

Ravi Vaghela
fonte
45

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

insira a descrição da imagem aqui

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.

Consulte o site do desenvolvedor do Google para obter screendensities e detalhes de basedensity para android. https://developer.android.com/training/multiscreen/screendensities

shijin
fonte
43
  • px - um pixel, igual ao usado em CSS, JavaScript etc.
  • sp - pixels independentes de escala
  • dip - pixels independentes da densidade

Normalmente, sp é usado para tamanhos de fonte, enquanto dip é usado (também chamado dp) para outros.

DPC
fonte
39

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

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. Tamanho mínimo da tela para Android no dp 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. Diretriz de densidade do Android (dpi)

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:

Tamanho da tela do aplicativo Android na Diretriz de pixels

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 SDPbiblioteca)

ADDED2 O Google finalmente entendeu a utilidade do conceito de interface do usuário da iOS Storeboard e aqui vai o ConstraintLayoutmundo do Android: criar uma interface de usuário responsiva com o ConstraintLayout

Mixaz
fonte
32

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

Guia do desenvolvedor do Android> Guia do desenvolvedor para Android da Dimension
> Telas

IntelliJ Amiya
fonte
29

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

Rajesh
fonte
21

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

Desenvolvedor Android
fonte
19

sp: escala de pixel independente

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.Saini
fonte
19

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

Visores de alta densidade vs baixa densidade

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.

  1. Tela de baixa densidade exibida com independência de densidade
  2. Tela de alta densidade exibida com independência de densidade

Leia o texto completo https://material.io/design/layout/pixel-density.html

lava-lava
fonte
16

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/

lalit vasan
fonte
15

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.

ProtossShuttle
fonte