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

Qual é a diferença entre unidades de medida android?

  • px
  • dip
  • dp
  • sp
Author: Lazy Ninja, 2010-01-08

30 answers

Da documentação de desenvolvimento do Android:

  1. Px
    Pixels - corresponde aos pixels reais no ecrã.

  2. Em
    com base no tamanho físico do ecrã.
    1 polegada = 2, 54 centímetros

  3. Mm
    milímetros {[[12]} - baseado no tamanho físico do ecrã.

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

  5. Dp ou dip
    densidade - Pixels independentes - uma unidade abstracta que se baseia na densidade física do ecrã. Estas unidades são relativas a 160 tela de PPP, então um dp é um pixel em uma tela de 160 dpi. A proporção de dp-A-pixel irá mudar com a densidade da tela, mas não necessariamente em directo proporcao. Nota: o compilador aceita " dip " e "dp", embora" dp "seja mais consistente com"sp".

  6. Sp
    Scale - Pixels independentes - isto é como a unidade dp, mas também é dimensionada pela preferência do tamanho de letra do utilizador. Recomenda-se a use esta unidade ao indicar os tamanhos de letra, para que estes sejam ajustados para a densidade da tela e a preferência do Usuário.

De Acordo Independência De Densidade Em 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      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

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

Para calcular as dimensões no dispositivo real este pode ser usado.

 5276
Author: Steven Byle, 2018-04-28 13:51:02

Praticamente tudo sobre isto e como conseguir o melhor suporte para várias telas com tamanhos e densidades diferentes está muito bem documentado aqui:

Tamanho do ecrã
Tamanho físico real, medido como diagonal do ecrã. Por uma questão de simplicidade, o Android agrupa todos os tamanhos reais de tela em quatro tamanhos generalizados: pequenos, normais, grandes e extra-grandes.

Ecrã densidade
A quantidade de pixels dentro de uma área física do screen; geralmente referido como PPP (pontos por polegada). Por exemplo, um tela de baixa densidade tem menos pixels dentro de uma determinada área física, comparado com uma tela de" normal "ou" alta " densidade. Por simplicidade, O Android agrupa todas as densidades reais do ecrã em seis generalizadascomment densidades: baixa, média, alta, extra-alta, extra-alta, e extra-extra-extra-alto.

Orientação
O orientação do ecrã a partir do ponto de visualizar. Isto é paisagem ou retrato, o que significa que a tela as proporções são largas ou altas, respectivamente. Esteja ciente de que não apenas os diferentes dispositivos operam em diferentes orientações por por omissão, mas a orientação pode mudar no tempo de execução quando o utilizador roda o dispositivo.

Resolução
O número total de pixels físicos em ecra. Ao adicionar suporte para vários ecrãs, aplicações fazer não trabalhar directamente com a resolução; as aplicações devem estar preocupadas apenas com tamanho e densidade do ecrã, conforme especificado pela generalização grupos de tamanho e densidade.

Pixel independente da densidade (dp))
um virtual unidade de pixels que deverá usar ao definir a disposição UI, para expressar dimensões da disposição ou posição de forma independente da densidade. O pixel independente da densidade é equivalente a um pixel físico em um 160 ecrã de PPP, que é a densidade de referência assumido pelo sistema para um ecrã de densidade "médio". No tempo de execução, o sistema lida de forma transparente qualquer escala das unidades dp, conforme necessário, com base na densidade real da tela em uso. A conversão de unidades dp para pixels de ecrã é simples: px = dp * (dpi / 160). Por exemplo, numa tela de 240 PPP, 1 dp igual a 1, 5 pixels físicos. Deve utilizar sempre unidades de dp quando definir a UI da sua aplicação, para garantir a exibição adequada da sua UI em ecrãs com diferentes densidade.

Se você é sério sobre o desenvolvimento de um aplicativo Android para mais de um tipo de dispositivo, você deve ter lido o documento de desenvolvimento de suporte de telas pelo menos uma vez. Além disso, é sempre uma coisa boa saber o número real de dispositivos ativos que têm uma configuração de tela particular.

 624
Author: Bruiser, 2017-05-01 20:59:46

Vou elaborar mais sobre como exactamente dp se converte para px:

  • Se estiver a correr num dispositivo mdpi, uma imagem 150 x 150 px irá ocupar 150 * 150 dp o espaço do ecrã.
  • Se estiver a correr num dispositivo hdpi, uma imagem 150 x 150 px irá ocupar 100 * 100 dp o espaço no ecrã.
  • Se estiver a correr num dispositivo xhdpi, uma imagem 150x150 px irá ocupar 75 * 75 dp o espaço no ecrã.

Ao contrário: diga, quer adicionar uma imagem à sua aplicação e precisa dela para preencher um controlo 100 * 100 dp. Tu vais ... necessidade de criar imagens de tamanho diferente para os tamanhos de ecrã suportados:

  • 100 * 100 px imagem para mdpi
  • 150 * 150 px imagem para hdpi
  • 200 * 200 px imagem para xhdpi
 295
Author: devmiles.com, 2018-04-06 19:03:33

Px Pixels - o ponto por escala corresponde aos pixels reais no ecrã.

Em Com base no tamanho físico do ecrã.

Mm Milímetros {[[10]} - baseado no tamanho físico do ecrã.

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

Dp Densidade - Pixels independentes - uma unidade abstracta que se baseia na densidade física do ecrã. Estas unidades são: em relação a uma tela de 160 PPP, então um dp é um pixel em uma tela de 160 PPP. A proporção de dp-para-pixel irá mudar com a densidade do ecrã, mas não necessariamente em proporção directa. Nota: o compilador Aceita dip e dp, embora dp seja mais consistente com sp.

Sp -Scale-independent Pixels - isto é como a Unidade dp , mas também é dimensionado pela preferência do tamanho de letra do Usuário. Recomenda-se que use esta unidade ao indicar os tamanhos de letra, assim serão ajustado para a densidade da tela e a preferência do Usuário.

Tome o exemplo de duas telas que são do mesmo tamanho, mas uma tem uma densidade de tela de 160 dpi (pontos por polegada, ou seja, pixels por polegada) e a outra é de 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
 242
Author: Amit Gajera, 2017-11-01 03:55:30

Além disso, você deve ter uma compreensão clara sobre os seguintes conceitos:

Tamanho do ecrã:

Tamanho físico real, medido como diagonal do ecrã. Por uma questão de simplicidade, o Android agrupa todos os tamanhos reais de tela em quatro tamanhos generalizados: pequeno, normal, grande e extra grande.

Densidade do ecrã:

A quantidade de pixels dentro de uma área física do ecrã; normalmente referido como dpi (pontos por polegada). Por exemplo, um tela de baixa densidade tem menos pixels dentro de uma determinada área física, comparado com uma tela de" normal "ou" alta " densidade. Por simplicidade, O Android agrupa todas as densidades reais do ecrã em quatro generalizadascomment densidades: baixa, média, alta e extra alta.

Orientação:

A orientação do ecrã do ponto de vista do utilizador. Isto é paisagem ou retrato, o que significa que o a proporção de aspecto do ecrã é larga ou alta, respectivamente. Atenção. que não só os diferentes dispositivos operam em diferentes orientações por padrão, mas a orientação pode mudar no tempo de execução quando o usuário roda o dispositivo.

Resolução:

O número total de pixels físicos num ecrã. Ao adicionar suporte para vários ecrãs, as aplicações não funcionam directamente com resolução; as aplicações devem se preocupar apenas com tela dimensão e densidade, conforme especificado pela dimensão generalizada e densidade grupo.

Pixel independente da densidade (dp)):

Uma unidade de pixels virtual que deverá usar ao definir a disposição da interface, para expressar as dimensões da disposição ou posição de forma independente da densidade. O pixel independente da densidade é equivalente a um pixel físico num ecrã de 160 PPP, que é o densidade de base assumida pelo sistema para um ecrã de "média" densidade. No tempo de execução, o sistema lida de forma transparente com qualquer escala do dp unidades, as necessário, com base na densidade real da tela em uso. A conversão de unidades dp para pixels de tela é simples: px = dp * (dpi / 160). Por exemplo, numa tela de 240 PPP, 1 dp é igual a 1, 5 física ponto. Deve sempre utilizar unidades de dp ao definir o seu UI da aplicação, para garantir a exibição adequada de sua UI em telas com densidades diferentes.

Referência: site de desenvolvimento do Android

 190
Author: Sazzad Hissain Khan, 2017-03-23 14:58:40

dp riz[1]}. Use-o para tudo (margem, estofamento, etc.).

Utilizar sp apenas para {tamanho do texto}.


Para obter o mesmo tamanho em diferentes densidades de Tela, O Android traduz essas unidades em pixels em tempo de execução, então não há matemática complicada para você fazer.

Ver a diferença entre px, dp e {[2] } em diferentes tamanhos de ecrã.

Enter image description here

Fonte: Programação Android: The Big Nerd Ranch Guide
 176
Author: Mina Gabriel, 2015-08-11 20:53:46

Calculei a fórmula abaixo para fazer as conversões dpi para dp e sp enter image description here

 124
Author: chaitanya, 2017-04-06 10:24:04

Definições

Px ou ponto é um pixel no ecrã físico.

Os PPP são pixels por polegada no ecrã físico e representam a densidade do ecrã.

Android dá nomes alternativos a várias densidades

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

Mergulho ou dp são densidade-indenpendant pixels, i.e. a que correspondem mais ou menos pixels, dependendo da densidade física.

  • 1dp = 1px no mdpi

enter image description here

Sp ou sip é um escala-pixel independente . Eles são dimensionados quando a opção de texto grande está ligada na configuração > acessibilidade

  • 1sp = 1dp
  • 1sp = 1, 2 dp com Acessibilidade Texto Grande

O que usar?

Utilizar sp para o tamanho do texto.

Utilizar dp para tudo o resto.

 117
Author: rds, 2016-03-02 09:39:05

Origem 1

Origem 2

Fonte 3 : (os dados da fonte 3 são apresentados a seguir)

Estes são valores dimensionais definidos em XML. É especificada uma dimensão com um número seguido de uma unidade de medida. Por exemplo: 10px, 2in, 5sp. As seguintes unidades de medida são suportadas pelo Android:

Dp

Densidade-Pixels independentes - uma unidade abstracta baseada na densidade física da tela. Estas unidades são relativas a 160 PPP (pontos por polegada) tela, na qual 1dp é aproximadamente igual a 1px. Quando rodando num ecrã de maior densidade, o número de pixels usados para desenhar 1dp é escalado por um fator apropriado para o PPP do ecrã. Da mesma forma, quando em uma tela de menor densidade, o número de pixels usados para 1dp é reduzido. A proporção de dp-para-pixel irá mudar com o densidade da tela, mas não necessariamente em proporção direta. Usar o dp unidades (em vez de unidades px) é um simples solução para fazer a vista as dimensões na sua disposição dimensionam correctamente para o ecrã diferente densidade. Por outras palavras, proporciona consistência ao mundo real. tamanhos dos seus elementos UI em diferentes dispositivos.

Sp

Escala-Pixels independentes - isto é como a unidade dp, mas também é dimensionado pela preferência do tamanho de letra do utilizador. Recomenda-se que use esta unidade ao indicar os tamanhos de letra, por isso serão ajustados para a densidade do ecrã e a preferência do utilizador.

Pt

Pontos-1/72 de polegada com base no tamanho físico do ecrã.

Px

Pixels-corresponde aos pixels reais no ecrã. Esta unidade de a 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.

Mm

Milímetros, com base no tamanho físico do ecrã.

Em

Com base no tamanho físico do ecrã.

Nota: uma dimensão é um recurso simples que é referenciado usando o valor fornecido no atributo name (não o nome do ficheiro XML). Como tal, você pode combinar recursos de dimensão com outros recursos simples no arquivo de um XML, sob um elemento.

 111
Author: sms247, 2016-02-10 09:19:33

Basicamente o único momento em que o px se aplica é um px, e isso é se você quiser exatamente um pixel na tela, como no caso de um divisor:

Em > 160 PPP, pode obter 2-3 pixels,

Em > 120 PPP, arredonda para 0.

 101
Author: Joe Plante, 2018-03-31 10:05:28

Px

Pixels-corresponde aos pixels reais no ecrã.

Dp ou dip

Densidade-Pixels independentes - uma unidade abstracta que se baseia na densidade física do ecrã. Estas unidades são relativas a uma tela de 160 dpi, então um dp é um pixel em uma tela de 160 dpi.

Utilização de dp:

Independência da densidade - A sua aplicação atinge a "independência de densidade" quando preserva o tamanho físico (do ponto de vista) dos elementos de interface do utilizador quando apresentados em ecrãs com densidades diferentes. (ie) A imagem deve ter o mesmo tamanho (não ampliada ou encolhida) em diferentes tipos de telas.

Sp

Escala-Pixels independentes - isto é como a unidade dp, mas também é dimensionado pela preferência do tamanho de letra do utilizador.

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

 85
Author: Nirav Ranpara, 2013-04-02 06:35:37

Onde usar qual a & relação entre px & dp?

Pixel independente da densidade (dp)

Uma unidade de pixels virtual que deverá usar ao definir a disposição UI, para expressar as dimensões ou a posição da disposição de uma forma independente da densidade. Como descrito acima, o pixel independente da densidade é equivalente a um pixel físico em uma tela de 160 PPP, que é a densidade de base assumida pelo sistema para uma tela de densidade "média". No tempo de execução, o sistema lida de forma transparente com qualquer escala das unidades dp, conforme necessário, com base na densidade real da tela em uso. A conversão de unidades dp para pixels de ecrã é simples:

Px = dp * (PPP / 160).

Por exemplo, num ecrã de 240 PPP, 1 dp é igual a 1, 5 pixels físicos. Você deve sempre usar unidades dp ao definir a UI da sua aplicação, para garantir exibição adequada da sua IU em telas com diferentes densidades.

Compreender pixel a dp e vice-versa é muito essencial (especialmente para dar valores exactos de dp para a equipa 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
    Tenta obter todos os valores dos pixels em números pares da equipa criativa. Caso contrário, a perda de precisão vai acontecer ao multiplicar-se com 0,5.

Px

Está explicado acima. Tente evitar em arquivos de layout. Mas há alguns casos em que o px é necessário. por exemplo, linha divisória ListView. px é melhor aqui para dar uma linha de um pixel como um divisor para todas as resoluções do ecrã.

Sp

Usar sp para o tamanho da fonte. Apenas o tipo de letra dentro da aplicação irá mudar enquanto os tipos de letra do dispositivo mudam de TAMANHO (Isto é, o Display -> tipos de letra no dispositivo). Se quiser manter um tipo de letra de tamanho estático dentro da aplicação, poderá indicar a dimensão do tipo de letra em dp. Nesse caso, 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, recomenda-se sp.

 85
Author: Arunjyothis, 2015-06-06 14:31:47

Você pode ver a diferença entre px e dp a partir da imagem abaixo, e você também pode descobrir que {[[0]} e dp não poderia garantir os mesmos tamanhos físicos nos diferentes ecrãs.

enter image description here

 77
Author: Zephyr, 2015-02-13 18:50:12

Qualquer coisa relacionada com o tamanho do texto e a aparência deve usar {[[0]} ou pt. Considerando que, qualquer coisa relacionada com o tamanho dos controles, os layouts, etc. deve ser utilizado com dp.

Pode usar dp e dip nos seus lugares.

 69
Author: Atish Agrawal, 2015-07-01 14:30:11

Eu só usaria dp.

Fala-se muito sobre o uso de "sp" para tamanhos de letra, e embora aprecie o ponto, não acho que seja a coisa certa a fazer do ponto de vista do design. Você pode acabar por quebrar o seu desenho se o utilizador tiver alguma selecção de tamanho de letra, e o utilizador acabará por culpar a aplicação, e não as suas próprias escolhas de vida.

Além disso, se usar uma aplicação de tipo sp num tablet de 160 PPP, irá descobrir que tudo aumenta de escala... mas a tua fonte, que vai parecer minúscula em comparação. Não é um bom olhar.

Embora a ideia das fontes " sp " tenha um bom coração, é uma má ideia. Fica com o dp por tudo.
 62
Author: bharal, 2015-06-06 14:42:19

Sp = escala de pixels independentes

Dp = dip = densidade de pixels independentes

PPP = pontos por polegada

Devemos evitar utilizarsp .

Devemos usar o dp para suportar vários ecrãs.

O Android suporta diferentes resoluções de Ecrã

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

Um dispositivo ldpi de 120 dp tem 120 pixels de tamanho de 1 polegada.

O mesmo para outras densidades...

Nós, como engenheiros de software, devemos usar esta fórmula de conversão:

Pixel = dp * (densidade / 160)

Então o dispositivo de 240 PPP terá 1 dp= 1 * (240/160) = 3/2 = 1.5 pixels.

And 480 dpi device's 1 Dp will have = 1 * (480/160) = 3 pixels.

Utilizar este conhecimento de 1,5 e 3 pixels, um engenheiro de software pode projetar layouts para diferentes densidades.

Para verificar os parâmetros do ecrã 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();
 56
Author: Kushal, 2018-07-27 07:02:15

A diferença entre as unidades dp e sp mencionadas como "a preferência do tamanho da letra do utilizador" pelas respostas copiadas da documentação oficial pode ser vista em tempo de execução, alterando a opção Settings->Accessibility->Large Text.

Large Text a opção força o texto a tornar-se 1.3 vezes maior.

private static final float LARGE_FONT_SCALE = 1.3f;

Isto pode estar dependente do Fornecedor, uma vez que está em pacotes/apps/Configurações.

 54
Author: auselen, 2013-10-14 08:44:10

PPP -

  • pontos por polegada
  • A medir a densidade de pixels do ecrã.

Px-pixel

  • para os pixels do ecrã de mapeamento

Pt - points

    Cerca de 1/72 de polegada, em relação ao tamanho do ecrã físico.

In - inch - no que diz respeito ao tamanho físico do ecrã(1 polegada = 2,54 cm).

Mm-milímetro - em relação ao tamanho físico do ecrã.

Pixel independente à escala Sp.

  • com base em preferência do tamanho de letra do utilizador.
  • o tipo de letra deve estar em 'sp'.

Dip -

  • dip = = dp
  • pixel independente da densidade.
  • Varia com base na densidade do ecrã.
  • num ecrã de 160 PPP, 1 dp = 1 pixel.
  • usar o dp excepto o tamanho da letra do texto.

Na norma, são utilizados dp e sp. sp para o tamanho da letra e dp para tudo o resto.

Fórmula para a conversão de unidades:

Px = dp * (PPP / 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  
 47
Author: Arunendra, 2015-11-24 08:32:41
  • px-one pixel, igual ao que é usado em CSS, JavaScript, etc.
  • pixels independentes da escala sp
  • dip-density-independent pixels

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

 40
Author: DPC, 2015-06-06 14:41:25

Aqui está a fórmula usada pelo Android.:

Px = dp * (PPP / 160)

Onde o PPP é uma das seguintes densidades de ecrã. Para uma lista de todas as densidades possíveis vá aqui

Define as constantes " DENSITY_*".

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

Retirado deaqui .

Isto vai resolver muita da confusão ao traduzir entre px e dp, se você conhece o seu dpi de tela.

Então, digamos que você quer uma imagem de 60 dp para uma tela hdpi, então o tamanho físico de pixels de 60 dp é:
px = 60 * (240 / 160)
 39
Author: Dan Borza, 2018-03-09 06:24:59

O tamanho do ecrã em Android está agrupado em categorias small, medium, large, extra large, double-extra e triple-extra Densidade de tela é a quantidade de pixels dentro de uma área (como polegada) da tela. Geralmente é medida em pontos por polegada (PPP). A densidade da tela é agrupada como baixa, média, alta e extra alta. Resolução é o número total de pixels na tela.

  • dp: Pixel independente da densidade, varia com base na densidade do ecrã . Em 160 ecrãs de PPP, 1 dp = 1 ponto. Exceto para o tamanho da fonte, use dp sempre.
  • dip: dip = dp. Em versões anteriores do Android dip foi usado e mais tarde alterado para dp.
  • sp: Escala Pixel independente, dimensionado com base na preferência do tamanho da letra do utilizador. Os tipos de letra devem usar o sp.
  • px: o nosso pixel padrão habitual que mapeia para o pixel do ecrã.
  • Em: polegadas, em relação ao tamanho físico do ecrã.
  • mm: milímetros, em relação ao tamanho físico do ecrã.
  • pt: 1/72 de polegada, em relação ao tamanho do ecrã físico.

Fórmula para a conversão entre unidades

 px = dp * (dpi / 160)

DP para px no dispositivo

Seguir o exemplo pode ajudar a compreender melhor. A escala ocorre com base no tamanho do balde de 120(ldpi), 160(mdpi), 240(hdpi), 320(xhdpi), 480(xxhdpi) e 640(xxxhdpi). A razão sugerida pelo Google para o projeto é 3: 4: 6: 8: 12 para ldpi:mdpi:hdpi:xhdpi: xxhdpi

Uma imagem de 150px X 150px irá ocupar,

  • 150 DP X 150 DP espaço no ecrã mdpi
  • 100 dp X 100 DP espaço no ecrã em hdpi
  • 75 DP X 75 DP espaço de ecrã em xhdpi

Você pode usar a seguinte calculadora PPP para corrigir os seus tamanhos de imagem e outras dimensões quando quiser ter um design UI uniforme em todos os dispositivos Android.

Calculadora PPP 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 consultar o link.

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

 39
Author: Ravi Vaghela, 2018-03-28 10:24:14
Por favor, leia a resposta do wiki comunitário. Abaixo são mencionadas algumas informações a serem consideradas além das respostas acima.

Sp = escala de pixels independentes

Dp = pixels independentes da densidade

PPP = pontos de densidade

Já passei pelas respostas acima...não encontrá-los exactamente correctos. sp para o tamanho do texto, dp para os limites de disposição - padrão. Mas sp para o tamanho do texto irá quebrar a disposição se for usada sem cuidado na maioria dos dispositivos.

Sp tomar o tamanho do texto do dispositivo, enquanto dp tomar o padrão de densidade do dispositivo (nunca mudar em um dispositivo) Digamos que o texto 100sp pode ocupar 80% do ecrã ou 100% do ecrã, dependendo do tamanho da letra definido no dispositivo

enter image description here

Você pode usar sp para os limites de disposição também, ele vai funcionar:) nenhuma aplicação normal usar sp para texto completo

Usar sp e dp para o tamanho do texto considerando UX.

  • não usar o sp para o texto na barra de ferramentas( pode usar o android dimens available ou dp)
  • Não utilize sp para texto em pequenos botões delimitados, texto muito menor, etc

Algumas pessoas usam uma fonte enorme em seu telefone para maior legibilidade, dando-lhes um pequeno texto de tamanho hardcoded será um problema UX. Coloque sp para texto quando necessário, mas certifique-se de que ele não vai quebrar o layout.

Da mesma forma, se tiver uma única aplicação que suporte todas as dimensões, a adição de activos xxxhdpi aumenta muito o tamanho da aplicação. Mas agora os telefones xxxhdpi são comuns por isso temos que incluir os activos xxxhdpi pelo menos para os ícones na barra lateral, barra de ferramentas e barra inferior. É melhor mover-se para imagens vetoriais para ter uma imagem uniforme e de melhor qualidade para todos os tamanhos de tela.

 33
Author: shijin, 2018-09-01 14:32:38
Deparei - me com um bom artigo sobre a criação de aplicativos Android UI para diferentes resoluções de tela, e gostaria de deixá-lo aqui apenas para alguém que procura nesta área. Sim, eu sei que é de alguma forma descrito no Google docs (e mencionado nos posts acima), eu li isso, mas não foi bom para mim (sim, eu posso ser muito estúpido)). Não ficou claro para mim como desenhar layouts capazes de lidar com diferentes tamanhos de tela. Odeio conceito de DP e assim por diante, quando preciso implementar um"flexível" Disposição UI para ecrãs diferentes. (Hey iOS developers-yes, you're right it's Storyboard concept). O Android não tem um mau conceito de UI, mas, infelizmente, não tem características iOS Storyboard. Projetar UI flexíveis em Android não é coisa fácil (na melhor das hipóteses). Aqui vai o artigo que me ajudou a entender o que fazer no Android para fazer layouts para diferentes tamanhos de tela:

Jmstudio Blog: - decida o tamanho da tela do aplicativo Android

Como Projetar UI para aplicativos Android para diferentes tamanhos de tela

Para criar um aplicativo UI para diferentes tamanhos de tela, o nosso design inicial tem de preencher um espaço mínimo necessário para cada tamanho do ecrã. O Android define um tamanho mínimo (em dp) para cada tipo de ecrã generalizado. Aqui está um Android screen size guideline. Minimum Screen Size for Android in dp Quando temos o tamanho da tela em dp, não é suficiente para nós projetar o Android app UI. Para cada tamanho de tela, precisamos preparar gráficos e imagens bitmap para cada densidade. Aqui está uma densidade de tela Android orientacao. Android Density Guideline (dpi)

Para um cálculo fácil, podemos seguir a razão de escala 3:4:6:8 entre as quatro densidades generalizadas. Se criarmos uma imagem de 36×36 pixels para dispositivo ldpi, o tamanho das imagens de densidades de descanso será de 48×48 para mdpi, 72×72 para hdpi, e 96×96 para xhdpi.

Como criar aplicativos Android UI no Photoshop

Muitos designers têm problemas para projetar o Android app UI no photoshop ou noutro pixel ferramentas de design gráfico baseadas por causa da densidade-unidade independente, dp. Os Designers não sabem mapear dp para pixel. O Google também não dá um guia de Design Android claro para eles, embora eles dão um básico fórmula para a tradução dp e pixel.

Como definição do Android, 1pd é igual a 1px com 160 dpi (mdpi). Então nós queremos projetar um aplicativo Android para Xlarge Android dispositivo com densidade mdpi, podemos definir o nosso tamanho UI em pixel como 960 pixels em largura e 720px em altura; Siga a mesma regra de mapeamento, podemos obter seguindo a norma Android App screen size UI design:

Android App Screen Size in Pixel Guideline

Adicionado: se também estiver interessado em UI "flexíveis", dê uma vista de olhos nesta biblioteca: um SDK Android que oferece uma nova unidade - sdp (DP escalável). Esta escala de unidades de tamanho com o tamanho do ecrã (isto também mencionado numa resposta aqui, acerca da biblioteca SDP)

ADDED2 O Google tem finalmente entendi a utilidade do conceito iOS Storeboard UI, e aqui vai ConstraintLayout para o mundo Android: construir uma UI responsiva com restrições

 31
Author: Mixaz, 2018-09-14 15:03:37

O tamanho do ecrã no Android está agrupado em categorias ldpi, mdpi, hdpi, xhdpi, xxhdpi e xxxhdpi A densidade do ecrã é a quantidade de pixels dentro de uma área (como a polegada) do ecrã. Geralmente é medida em pontos por polegada (dpi).

PX(Pixels):

  • o nosso pixel padrão habitual que mapeia para o pixel do ecrã. {[8] } destina-se a pixels absolutos. Isto é usado se você quiser dar em termos de pixels absolutos para a largura ou altura. Nao recomendado.

DP/DIP(Density pixels / Density independent pixels):

  • dip == dp. Em versões anteriores do Android dip foi usado e posteriormente alterado para dp. Esta é a alternativa de px.

  • Geralmente nós nunca usamos px porque é valor absoluto. Se você usar px para definir a largura ou a altura, e se essa aplicação estiver a ser transferida para diferentes dispositivos do tamanho do ecrã, então essa janela não irá esticar de acordo com o tamanho original do ecrã.

  • dp é altamente recomendado para utilização no lugar de px. Use dp Se quiser mencionar a largura e a altura para crescer e encolher dinamicamente com base nos tamanhos do ecrã.

  • Se dermos dp/dip, o android irá calcular automaticamente o tamanho do pixel com base na tela de 160 pixels.

SP(Scale independent pixels):

  • Dimensionado com base na preferência do tamanho de letra do utilizador. Os tipos de letra devem usar sp.

  • Ao mencionar os tamanhos de letra para caber em vários ecrãs tamanhos, use sp. Isto é semelhante a dp.Usar sp especialmente para os tamanhos de letra crescerem e encolherem dinamicamente com base nos tamanhos do ecrã

A documentação do Android diz:

Ao especificar as dimensões, utilize sempre as unidades dp ou sp. A dp é um pixel independente da densidade que corresponde ao tamanho físico de um pixel a 160 dpi. Um sp é a mesma unidade base, mas é escalado pelo o tamanho de texto preferido do utilizador (é independente da escala pixel), então você deve utilizar esta unidade de medida para definir o tamanho do texto

 26
Author: Rajesh, 2015-10-07 08:47:56

1) dp: (density independent pixels)

O número de pixels representados numa unidade de dp irá aumentar à medida que a resolução do ecrã aumenta (quando tiver mais pontos/pixels por polegada). Inversamente, em dispositivos com menor resolução, o número de pixels representados na unidade de dp irá diminuir. Uma vez que esta é uma unidade relativa, ela precisa ter uma linha de base para ser comparada. Esta linha de base é uma tela de 160 PPP. Esta é a equação: px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Esta unidade escalas de acordo com o PPP do ecrã (semelhante ao dp), bem como a preferência do tamanho de letra do utilizador.


3) px: (pixels)

Pixels ou pontos reais no ecrã.


Para mais detalhes, pode visitar

Guia De Desenvolvimento Do Android > Dimensão
Guia De Desenvolvimento Do Android > Ecrãs

 25
Author: IntelliJ Amiya, 2018-04-02 13:58:40

O ecrã de um telemóvel é constituído por milhares de minúsculos pontos conhecidos como pixels (px). Um pixel é o menor elemento que vai fazer a imagem. Quanto mais o número de pixels para fazer uma imagem ou texto, mais nítido se torna e torna a tela de smartphone mais facilmente legível.

A resolução do ecrã é medida em termos de número de pixels no ecrã. Resolução de tela é uma especificação comumente usada quando se compra um dispositivo, mas na verdade não é que ú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 importante.

Pixel independente da densidade (dp ou dip) permite ao desenhador criar activos que aparecem de uma forma esperada, independentemente da resolução ou densidade do dispositivo-alvo.

Um pixel independente da densidade (dp ou dip) é igual a um pixel na densidade de base ou a 160 PPP (pontos por polegada).

1 px / 1dp = 160 PPP / 160 PPP

2 px / 1dp = 320 PPP (2x)/160 PPP

Onde,

O PPP é pontos por polegada

Então, a 320 PPP, 1 dp é igual a 2 px.

Fórmula

Px/dp = PPP/160dpi

Pontos por polegada (PPP) é uma medida da nitidez (ou seja, a densidade de pontos iluminados) em uma tela de exibição. Os pontos por polegada para uma determinada resolução da imagem será diferente com base no tamanho geral da tela, uma vez que o mesmo número de pixels estão sendo espalhados por um diferente espaco.

Trabalhar com pixels independentes da densidade ajuda-nos a lidar com uma situação como a de ter 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 tem a mesma resolução de pixels 1280 por 800 pixels (160 PPP) e 800 por 1280 pixels (320 PPP), respectivamente.

Agora porque um comprimido está na densidade de base (160 PPP), o seu tamanho físico e densidade independente de pixels são os mesmos, 1280 por 800. O telefone por outro lado tem uma maior densidade de pixels, por isso tem metade de pixels independentes de densidade como pixels físicos. Então um telefone tem 400 por 640 pixels independentes de densidade. Então, usar um pixel independente da densidade torna mais fácil imaginar mentalmente que o tablet tem muito mais espaço do que o telefone.

Da mesma forma, se você tiver dois dispositivos com tamanho de tela semelhante, mas densidade de pixels diferente, digamos que um é 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 estes dois dispositivos como podemos medir ativos em termos de densidade de pixel independente que é o mesmo para ambos os dispositivos.

800 por 1280 pixels (320ppp) = 400 por 640 pixels independentes de densidade (dp)

400 por 640 pixels (160 PPP) = 400 por 640 pixels independentes de densidade (dp)

O Scale independent pixels (sp) é a unidade preferida para o tamanho da letra. Para fins de acessibilidade, o Android permite que os usuários personalizem o tamanho de letra do seu dispositivo. Utilizadores com problemas ler texto pode aumentar o tamanho de letra do dispositivo. Normalmente, poderá encontrar esta opção no ecrã do seu telemóvel ou tablet sob o tamanho da letra. Muitas vezes também está disponível através das configurações de acessibilidade.

Com pixels independentes de escala, 16 sp é exatamente o mesmo que 16 dp quando o tamanho de letra do dispositivo é normal ou 100%. Mas quando o tamanho da fonte do dispositivo é grande, por exemplo 125%, 16 sp irá traduzir para 20 dp ou 1,25 vezes 16.

Se usar o dp como unidade para o tamanho da letra, então esse pedaço de texto tem um tamanho físico específico, não importa se o usuário tem personalizar o tamanho de letra do dispositivo. A utilização de unidades sp fará uma melhor experiência para pessoas com visão diminuída.

Referência: Udacity, Google

 18
Author: Bhuvnesh Varma, 2017-10-18 05:31:24

Sp: escala do pixel independente

Você deve usá-lo com textos porque ele é dimensionado automaticamente de acordo com o tamanho de letra que está sendo usado pelo usuário em seu dispositivo.

Px: pixel ou elemento de imagem é o ponto único no ecrã

 14
Author: A.Saini, 2018-03-09 08:59:48
Quero proporcionar uma maneira fácil de entender. Na verdade, acho que é o mais fácil de entender. dp é apenas uma unidade de comprimento físico. É da mesma dimensão que mm ou inch. É conveniente para nós escrevermos.50dp, 60dp em vez de 50/160 inch ou 60/160 inch, porque um {[[0]} é apenas 1/160 inch Qualquer que seja o tamanho ou resolução do ecrã. O único problema é que o android dpi de algumas telas não é preciso. Por exemplo, uma tela classificada a 160ppp pode tome 170ppp de fato. Então o resultado computacional de dp é difuso. Deve ser aproximadamente o mesmo que 1/160 inch.
 10
Author: ProtossShuttle, 2016-04-02 03:35:21

SDP - uma unidade de tamanho escalável-basicamente não é uma unidade, mas recursos de dimensão para diferentes tamanhos de tela.

Tenta a biblioteca sdp da Intuit. É muito útil para resolver problemas de unidade, e você pode suportar rapidamente várias telas .

Utilização

android:paddingBottom="@dimen/_15sdp" Para positivo e android:layout_marginTop="@dimen/_minus10sdp" para negativo sdp sdp

Tem um valor equivalente em dp para cada tamanho em values-sw<N>dp pastas (sw = smalestwidth).

Atenção

Usa-o com cuidado! Na maioria dos casos, você ainda precisa projetar um layout diferente para tablets.

Exemplo

<LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="@dimen/_minus10sdp"
          android:paddingBottom="@dimen/_15sdp"
          android:orientation="horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="♡"
                    android:textColor="#ED6C27"
                    android:textSize="@dimen/_70sdp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="U"
                    android:textColor="@android:color/black"
                    android:textSize="@dimen/_70sdp" />
            </LinearLayout>

Pode usar db para o tamanho do texto, mas eu prefiro ssp para o tamanho do texto.

Para mais detalhes, verifique a página do GitHub da biblioteca.

 10
Author: Qamar, 2017-10-18 05:26:33
Antes de responder a esta pergunta, deixe-me diminuir o número de unidades primeiro. Então aqui você vai: dp ou dip são ambos os mesmos e são conhecidos como densidade-pixels independentes .

1. px - significa pixels. Pixels são um único ponto, ponto em uma tela. Geralmente na indústria móvel é medido em ppi (pixels por polegada). A resolução do ecrã é directamente proporcional ao ppi, quanto maior for o número de pixels por polegada maior é a tela. resolucao.

Por exemplo, se desenhar uma imagem de um tamanho 200 px * 200 px , então a sua aparência deve ser diferente num dispositivo de alta resolução versus um dispositivo de baixa resolução. A razão é que uma imagem 200 px num telemóvel de baixa resolução será maior do que num dispositivo de alta resolução.

Abaixo as imagens mostram uma resolução da mesma imagem em diferentes telefones -

  • Telefone com ecrã elevado resolução

    Enter image description here

  • Telefone com resolução baixa do ecrã

    Enter image description here

2. dip ou dp - uma unidade abstrata que é baseada na densidade física da tela. Estas unidades são relativas a 160 ecrã PPP, por isso um dp é um pixel num 160 ecrã PPP. A proporção de dp-para-pixel irá mudar com a densidade da tela, mas não necessariamente em proporção direta. "Independência da densidade" refere-se à exibição uniforme de elementos UI em telas com diferentes densidades.

  • imagem que mostra 80px (imagem do lado esquerdo) e 80 dp (Imagem do lado direito) . Diferença de caixa.

Enter image description here

Um dp é igual a um pixel físico num ecrã com uma densidade de 160. Para calcular o dp:

Dp = (largura em pixels * 160) / densidade do ecrã

3. sp - significa pixels escaláveis. Geralmente o sp é usado para textos na UI, e o sp preserva a configuração da fonte. Por exemplo, se um usuário selecionou um tipo de letra maior que 30 sp, ele irá escalar automaticamente para parecer grande de acordo com uma preferência do Usuário.

 10
Author: Rahul, 2017-12-07 17:58:56