Pergunta

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

  • px
  • dip
  • dp
  • sp
Foi útil?

Solução

A partir da Android Developer Documentation :

  1. px
    Pixels -. Corresponde a pixels reais na tela

  2. em
    polegadas -. baseado no tamanho físico da tela
    1 polegada = 2,54 centímetros

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

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

  5. dp ou dip
    Densidade independentes de Pixels - uma unidade abstrata que é baseada na densidade física da tela. Estas unidades são em relação a um 160 tela dpi, assim que um dp é um pixel em uma tela de 160 dpi. A proporção de dp-se a pixel vai mudar com a densidade da tela, mas não necessariamente em proporção direta. Nota: O compilador aceita tanto "mergulho" e "Dp", apesar de "dp" é mais consistente com "sp".

  6. sp
    Escala independentes de Pixels - isto é como a unidade dp, mas também é escalado por preferência o tamanho da fonte do usuário. É recomendado que você utilizar esta unidade quando especificar tamanhos de fonte, então eles vão ser ajustado tanto para a densidade da tela e da preferência do usuário.

A partir Entendimento Densidade Independência 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      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Mais informações também podem ser encontradas no Google Projeto de Documentação .

Outras dicas

Quase tudo sobre este e como conseguir o melhor suporte para múltiplas telas de diferentes tamanhos e densidades é muito bem documentado aqui:

Tamanho da tela
tamanho físico real, medida diagonal da tela. Para simplificar, grupos Android tudo tela real tamanhos em quatro tamanhos generalizadas:. pequenos, normais, grandes e extra-grandes

densidade Tela
O número de pixels dentro de uma área física do tela; normalmente referido como dpi (pontos por polegada). Por exemplo, uma tela "baixo" densidade tem menos pixels dentro de uma determinada área física, em comparação com uma tela de "normal" ou "alta" densidade. Pela simplicidade, grupos Android todas as densidades de tela reais em seis generalizadas densidades: baixa, média, alta e extra alta, extra-extra-elevada, e extra-extra-extra-alta.

Orientação
A orientação da tela do ponto do usuário Visão. Esta é paisagem ou retrato, o que significa que a tela é relação de aspecto é qualquer largura ou altura, respectivamente. Esteja ciente de que não só os diferentes dispositivos operam em diferentes orientações por padrão, mas a orientação pode mudar em tempo de execução quando o usuário faz rodar o dispositivo.

Resolução
O número total de pixels físicos na uma tela. Ao adicionar suporte para múltiplas telas, aplicações fazer não trabalhar diretamente com resolução; aplicações devem se preocupar somente com o tamanho da tela e densidade, como especificado pela generalizada de tamanho e densidade de grupos.

de pixels independente de Densidade (dp)
um Virtual unidade de pixel que você deve usar ao definir o layout da interface do usuário, para expressar dimensões da disposição ou posição de uma forma independente de densidade. O pixel independente de densidade é equivalente a um pixel físico sobre um 160 tela dpi, que é a densidade de linha de base assumida pelo sistema para uma tela densidade "médio". Em tempo de execução, o sistema transparente alças qualquer escala das unidades de DP, como 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ê deve sempre usar dp unidades quando definição de interface do usuário do seu aplicativo, para garantir a exibição adequada do seu interface do usuário no telas com diferentes densidades.

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

Vou elaborar mais sobre como faz exatamente convertido dp para px:

  • Se executado em um dispositivo mdpi, uma imagem de 150 x 150 px vai ocupar 150 * 150 dp de espaço na tela.
  • Se executado em um dispositivo hdpi, uma imagem de 150 x 150 px vai ocupar 100 * 100 dp de espaço na tela.
  • Se executado em um dispositivo xhdpi, uma imagem de 150x150 px vai ocupar 75 * 75 dp de espaço na tela.

O outro caminho: por exemplo, você quiser adicionar uma imagem ao seu aplicativo e você precisa dele para preencher um controle 100 * 100 dp. Você vai precisar para criar diferentes imagens em tamanho para tamanhos de tela suportados:

  • imagem 100 * 100 px para mdpi
  • imagem 150 * 150 px para hdpi
  • imagem 200 * 200 px para xhdpi

px Pixels -. Ponto por corresponde escala de pixels reais na tela

em Polegadas -. Baseado no tamanho físico da tela

mm Milímetros -. Baseado no tamanho físico da tela

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

dp Densidade - Pixels independentes - uma unidade abstrata que é baseada na densidade física da tela. Estas unidades são relativos a uma tela de 160 dpi, para que se dp é um pixel em uma tela de 160 dpi. A proporção de DP-a-pixel mudar com a densidade da tela, mas não necessariamente em proporção direta. Nota:. O compilador aceita tanto dip e dp, embora dp é mais consistente com sp

sp Pixels -scale independente - este é como a unidade dp, mas também é escalado por preferência o tamanho da fonte do usuário. É recomendado que você utilize esta unidade ao especificar tamanhos de fonte, assim eles vão ser ajustado tanto para a densidade da tela e da preferência do usuário.

Tomemos o exemplo de duas telas que são do mesmo tamanho, mas uma tela tem uma densidade de 160 DPI (pontos por polegada, isto é 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

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

tamanho da tela:

tamanho físico real, medida diagonal da tela. Para simplificar, grupos Android tudo tela real tamanhos em quatro tamanhos generalizadas:. pequenos, normais, grandes e extra grande

densidade da tela:

A quantidade de pixels dentro de uma área física da tela; normalmente referido como dpi (pontos por polegada). Por exemplo, uma tela "baixo" densidade tem menos pixels dentro de uma determinada área física, em comparação com uma tela de "normal" ou "alta" densidade. Pela simplicidade, grupos Android todas as densidades de tela reais em quatro generalizadas densidades:. baixa, média, alta e extra alta

Orientação:

A orientação da tela do ponto de vista do usuário. Esta é paisagem ou retrato, o que significa que a relação de aspecto da tela ou é de largura ou altura, respectivamente. Estar ciente que não só diferentes dispositivos operam em diferentes orientações por padrão, mas a orientação pode mudar em tempo de execução quando o usuário roda o dispositivo.

Solução:

O número total de pixels físicos em uma tela. Ao adicionar suporte para múltiplas telas, as aplicações não trabalham diretamente com resolução; aplicações devem se preocupar apenas com a tela tamanho e densidade, como especificado pelo tamanho e densidade generalizada grupos.

de pixels independente de Densidade (dp):

Uma unidade de pixel virtual que você deve usar ao definir o layout da interface do usuário, para expressar dimensões do esquema ou posição de uma forma independente de densidade. O pixel independente densidade é equivalente a um pixel físico em uma tela de 160 dpi, que é a densidade de linha de base assumida pelo sistema para uma tela de densidade "médio". Em tempo de execução, o sistema transparente lida com qualquer descamação da dp unidades, conforme necessário, com base na densidade real da tela em utilização. 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 físico píxeis. Você deve sempre usar dp unidades ao definir o seu UI do aplicativo, para garantir a exibição adequada do seu UI em telas com densidades diferentes.

Referência: Android desenvolvedores local

dp é dip. Use-o para tudo (margem, estofamento, etc.).

Use sp para {text-size} somente.


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


Veja a diferença entre px, dp e sp em diferentes tamanhos de tela.

Digite os detalhes da imagem aqui

Fonte: Android programação: O Big Nerd Guia Ranch

Eu calculei a fórmula abaixo para fazer as conversões dpi para dp e sp enter descrição da imagem aqui

Definições

px ou ponto é uma Pixel na tela física.

dpi são pixels por polegada na tela física e representar a densidade da tela.

nomes de alias a várias densidades

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

dip ou dp pixels densidade-indenpendant , isto é, eles correspondem a mais ou menos pixels, dependendo da densidade física.

  • 1DP = 1px em mdpi

 enter descrição da imagem aqui

sp ou gole é um Pixel escala independente . Eles são escalados quando o Texto Grande opção é ativada em Configurações > Acessibilidade

  • 1SP = 1DP
  • 1SP = 1.2dp com Acessibilidade Texto Grande

O que usar?

Use sp Tamanho do texto.

Use dp para tudo o resto.

Fonte 1

Fonte 2

Fonte 3 : (dados de fonte 3 é dada abaixo)

Estes são valores de dimensão definidas no XML. Uma dimensão é especificado com um número seguido por uma unidade de medida. Por exemplo: 10px, 2in, 5sp. As seguintes unidades de medida são suportados pelo Android:

dp

Pixels independentes de Densidade - Uma unidade abstrata que se baseia na densidade física da tela. Estas unidades são em relação a um 160 dpi (pontos por polegada) de tela, em que 1DP é aproximadamente igual ao 1px. Quando correndo sobre uma tela de densidade mais elevada, o número de pixels usado para desenhar 1DP é escalado por um fator apropriado para dpi da tela. Do mesmo modo, quando em uma tela de densidade mais baixa, o número de pixels usado para 1DP é reduzida. A proporção de dp-a-pixel mudará com o densidade de tela, mas não necessariamente em proporção direta. usando dp unidades (em vez de unidades de pixel) é uma solução simples para fazer o ponto de vista dimensões em seu layout redimensionar corretamente para tela diferente densidades. Em outras palavras, ele fornece consistência para o mundo real tamanhos de seus elementos de interface do usuário em diferentes dispositivos.

sp

Pixels independentes escala - Isto é como a unidade dp, mas também é escalados por preferência o tamanho da fonte do usuário. Recomenda-se que você usa esta unidade ao especificar tamanhos de fonte, então eles vão ser ajustado para tanto a densidade da tela e da preferência do usuário.

pt

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

px

Pixels - corresponde pixels reais na tela. Esta unidade de medida não é recomendado porque a representação real pode variar em todos os dispositivos; cada um dos dispositivos podem ter um número diferente de pixels por polegadas e pode ter mais ou menos pixels totais disponíveis na tela.

mm

Milímetros -. Com base no tamanho físico da tela

em

polegadas -. Com base no tamanho físico da tela

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

Basicamente a única vez em que px aplica é uma px, e que, se você quer exatamente um pixel na tela, como no caso de um divisor:

Na> 160 dpi, você pode obter 2-3 pixels,

Na> 120 dpi, arredonda para 0.

px

Pixels -. Corresponde a pixels reais na tela

dp ou dip

independente de densidade Pixels - uma unidade abstrata que é baseada na densidade física da tela. Estas unidades são relativos a uma tela de 160 dpi, para que um dp é um pixel em uma tela de 160 dpi.

Use of dp:

independência Densidade - Sua aplicação alcança “independência densidade” quando se preserva o tamanho físico (do ponto de vista do usuário) de elementos de interface do usuário quando exibido em telas com diferentes densidades. (Ie) A imagem deve ficar do mesmo tamanho (não ampliado ou shrinked) em diferentes tipos de telas.

sp

Pixels Scale-independentes -. Isto é como a unidade dp, mas também é escalado por preferência o tamanho da fonte do usuário

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

Onde usar o & relação entre px e dp?

Pixel independente de Densidade (dp)

Uma unidade de pixel virtual que você deve usar ao definir o layout da interface do usuário, para expressar dimensões layout ou posição de uma forma independente de densidade. Como descrito acima, o elemento de imagem independente de densidade é equivalente a um pixel físico em uma tela de 160 dpi, que é a densidade de linha de base assumida pelo sistema para uma tela de densidade "médio". Em tempo de execução, o sistema transparente lida com qualquer escala 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ê deve sempre usar dp unidades na definição de interface do usuário do seu aplicativo, para garantir boa exibição de sua interface do usuário em telas com diferentes densidades.

Pixel Entendimento para PD e vice-versa é muito essencial (especialmente para dar valores exatos dp a 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 precisão perder vai acontecer enquanto multiplicando com 0,5.

px

É explicado acima. Tente evitar em arquivos de layout. Mas existem alguns casos, em que é necessária px. por exemplo, ListView linha divisória. px é melhor aqui para dar uma linha de um pixel como um divisor para todo resoluções de tela.

sp

Use sp para tamanhos de fonte. Só então a fonte dentro do aplicativo irá mudar enquanto as alterações de tamanho de fontes de dispositivo (ou seja, Display -> Fontes no dispositivo). Se você quer manter uma fonte de tamanho estática dentro do aplicativo, você pode dar a dimensão da fonte no dp. Nesse caso, isso nunca vai mudar. Os desenvolvedores podem obter tal exigência uma para algumas telas específicas, para isso, os desenvolvedores podem usar dp vez de sp. Em todos os outros casos, sp é recomendado.

Você pode ver a diferença entre px e dp da imagem abaixo, e você também pode achar que o px e dp não podia garantir os mesmos tamanhos físicos sobre as diferentes telas.

enter descrição da imagem aqui

Qualquer coisa relacionada com o tamanho do texto e aparência deve usar sp ou pt. Considerando que, qualquer coisa relacionada ao tamanho dos controles, os layouts, etc., devem ser usados ??com dp.

Você pode usar tanto dp e dip em seus lugares.

Eu só iria usar dp.

Há muita conversa sobre o uso de "sp" para tamanhos de fonte, e enquanto eu aprecio o ponto, eu não acho que é a coisa certa a fazer, do ponto de vista do design. Você pode acabar quebrando seu projeto se o usuário tem alguma seleção tamanho da fonte wonky, eo usuário vai acabar culpando o aplicativo , e não as suas próprias escolhas de vida.

Além disso, se você tomar um app sp-fonte em um tablet 160 dpi, você vai achar que tudo dimensiona-se ... mas a sua fonte, que vai olhar minúsculo em comparação. Não é uma boa olhada.

Embora a idéia de fontes "SP" tem um bom coração, é uma má idéia. Vara com dp para tudo.

sp = escala de pixels independente

dp = mergulho = densidade pixels independentes

dpi = dots per inch

Devemos evitar a utilização sp .

Devemos usar dp para suportar múltiplas telas.

Android suporta diferentes resoluções de tela

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

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

O mesmo para outras densidades ...

Nós, como engenheiros de software deve usar essa fórmula de conversão:

de pixel = dp * (densidade / 160)

Assim 1 dp 240 dpi do dispositivo terá = 1 * (240/160) = 3/2 = 1,5 pixels.

E 1 dp 480 dpi do dispositivo terá = 1 * (480/160) = 3 pixels.

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

Para verificar 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();

Diferença entre unidades dp e sp mencionados como " preferência o tamanho da fonte do usuário " pelas respostas copiadas de documentação oficial pode ser visto em tempo de execução por opção Settings->Accessibility->Large Text mudando.

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

private static final float LARGE_FONT_SCALE = 1.3f;

Isso pode ser bem claro dependente do fornecedor, uma vez que encontra-se em pacotes / apps / configurações .

dpi -

  • Dots per polegadas
  • Medir a densidade de pixels da tela.

px - pixels

  • Para pixels da tela de mapeamento

pt - pontos

  • Sobre 1/72 de polegada, com respeito ao tamanho da tela física.

in - polegadas -., Com respeito ao tamanho da tela física (1 polegada = 2,54 cm)

mm- milimeter -. Em relação ao tamanho da tela física

sp - pixel de escala independente

.
  • Com base user`s fonte preferência de tamanho.
  • Fonte deve estar em 'sp'.

dip -

  • dip == dp
  • densidade de pixels independente.
  • Ela varia com base na densidade da tela.
  • Em 160 ecrã dpi, 1 dp = 1 pixel.
  • Use dp, exceto o tamanho da fonte do texto.

Em standard, dp e sp são usados. sp para o tamanho da fonte e dp para tudo o resto.

Fórmula para a 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  

Aqui está a fórmula usada pelo Android:

px = dp * (dpi / 160)

Onde dpi é um dos seguintes densidades de tela. Para obter uma lista de todas as densidades possíveis aqui

Ele define os "DENSITY_ *" constantes.

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

aqui .

Isto irá resolver um monte de confusão na tradução entre px e dp, se você sabe que seu dpi tela.

Então, vamos dizer que você quer uma imagem de 60 dp para um ecrã hdpi em seguida, o tamanho do pixel física de 60 dp é:

px = 60 * (240 / 160)

Tamanho da tela em Android são agrupados em categorias small, medium, large, extra large, double-extra e triple-extra. densidade da tela, é a quantidade de pixels dentro de uma área (como polegada) da tela. Geralmente, é medida em pontos por polegada (dpi). densidade tela é agrupado como baixa, média, alta e extra alta. Resolução é o número total de pixels na tela.

  • dp: Densidade Independent Pixel, que varia de acordo com a densidade da tela. Em 160 ecrã dpi, 1 dp = 1 pixel. Exceto para o tamanho da fonte, use dp sempre.
  • dip: dip == dp. Em versões anteriores Android mergulho foi usado e posteriormente alterado para dp.
  • sp: Escala Independent Pixel, dimensionados com base na preferência do tamanho da fonte do usuário. Fontes deve usar sp.
  • px:. nosso costume de pixel padrão que mapeia para o pixel da tela
  • em:. polegadas, com respeito ao tamanho da tela física
  • mm:. milímetros, com relação ao tamanho da tela física
  • pt:. 1/72 de polegada, com respeito ao tamanho da tela física

Fórmula para a conversão entre unidades

 px = dp * (dpi / 160)

dp para px no dispositivo

Seguindo o exemplo pode ajudar a compreender melhor. O dimensionamento ocorre com base no tamanho do balde 120 (ldpi), 160 (MDPI), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) e 640 (xxxhdpi). O Google sugeriu razão para a concepção é de 3: 4: 6: 8: 12 para ldpi: mdpi: hdpi: xhdpi: xxhdpi

A 150px X 150px imagem ocupará,

  • 150 dp X 150 dp espaço na tela em mdpi
  • 100 dp X 100 dp espaço na tela em hdpi
  • 75 dp X 75 dp espaço na tela em xhdpi

Você pode usar o seguinte calculadora DPI para corrigir seus tamanhos de imagem e outras dimensões quando você deseja ter um design de interface uniforme em todos os dispositivos Android.

DPI Calculator 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 seguinte link.

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

  • px -. Um pixel, mesmo quanto ao que é usado em CSS, JavaScript, etc
  • sp - pixels independente de escala
  • dip - independente de densidade pixels

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

Por favor, leia a resposta da comunidade wiki. são algumas informações a serem consideradas, além das respostas acima mencionados abaixo.

sp = escala de pixels independente

pixels

dp = independentes densidade

pixels

dpi = densidade

Eu tenho ido através das respostas acima ... não encontrá-los exatamente correto. sp para o tamanho do texto, dp para limites de layout - padrão. Mas sp para o tamanho do texto irá quebrar o layout se usado descuidada na maioria dos dispositivos.

sp tomar a textsize do dispositivo, enquanto que dp tomada de densidade padrão dispositivo (nunca mudam em um dispositivo) Say 100sp lata texto ocupa 80% da tela ou 100% da tela dependendo do set tamanho da fonte no dispositivo

enter descrição da imagem aqui

Você pode usar sp para limites de layout também, que vai funcionar :) Sem padrão uso aplicativo sp para o texto todo

Use sp e dp para tamanho de texto considerando UX.

  • Não uso sp texto em barra de ferramentas (pode usar dimens android disponíveis para diferentes tamanhos de tela com dp)
  • Não uso sp texto em botões pequenos limitada, texto muito menor, etc

Algumas pessoas usam enorme tamanho da fonte em seu telefone para obter mais legibilidade, dando-lhes texto pequeno porte codificado será um problema UX. Coloque sp para o texto, sempre que necessário, mas certifique-se que não vai quebrar o layout.

Da mesma forma, se você tiver um aplicativo único apoiando todas as dimensões, acrescentando ativos xxxhdpi aumenta o tamanho do aplicativo muito. Mas agora telefones xxxhdpi são comuns por isso temos de incluir xxxhdpi ativos pelo menos para ícones na barra lateral, barra de ferramentas e barra inferior. O seu melhor para mover-se para imagens vetoriais ter um uniforme e imagens de melhor qualidade para todos os tamanhos de tela.

Observe também que as pessoas usam fonte personalizada em seu telefone. Assim, a falta de uma fonte pode causar problemas em relação espaçamento e tudo. Say 12sp tamanho do texto para uma fonte personalizada pode levar alguns pixels extras de fonte padrão.

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

Eu vim através de um bom artigo sobre a criação de aplicativos Android UI para diferentes resoluções de tela, e eu gostaria de deixá-lo aqui apenas para pesquisa alguém nesta área. Sim, eu sei que ele está de alguma forma descrita no Google docs (e mencionado nos posts acima), eu li isso, mas não era bom para mim (yeah, eu posso ser muito estúpido)). Não ficou claro para mim como projetar layouts capazes de lidar com tamanho de tela diferente. Eu odeio conceito DP e assim por diante, quando eu preciso implementar um layout UI "flexível" para telas diferentes. (Hey desenvolvedores iOS - sim, você está certo, do conceito Storyboard)

.

Android tem conceito de interface do usuário não é ruim, mas não tem iOS Storyboard apresenta, infelizmente. Projetando UI flexível no 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: - Decidir App Android Tamanho da tela

Como projetar UI por Aplicativos Android para diferentes tamanhos de tela

Para criar uma interface de usuário de aplicativos para diferentes tamanhos de tela, nosso projeto inicial deve encontrar um espaço mínimo exigido para cada tamanho de tela. Android define um tamanho mínimo (em DP) para cada tipo de tela generalizada. Aqui está um Android diretriz tamanho da tela. Tamanho da tela mínima para Android no dp Quando chegarmos ao tamanho do ecrã na dp, não é o suficiente para nós para projeto o aplicativo UI Android. Para cada tamanho de tela, precisamos preparar gráficos e imagens de mapa de bits para cada densidade. Aqui está uma densidade de tela Android diretriz. Densidade Android Guideline (dpi)

Para facilitar o cálculo, podemos seguir a proporção de 3: 8 escala entre: 4: 6 os quatro densidades generalizadas. Se criarmos uma imagem 36 × 36 pixels para dispositivo ldpi, as densidades de descanso fotos tamanho será 48 × 48 para mdpi, 72 × 72 para hdpi, e 96 × 96 para xhdpi.

Como projetar os apps Android UI em Photoshop

Muitos designers têm problemas para conceber Android app UI no photoshop ou outro pixels baseados ferramentas de design gráfico por causa de unidade independente densidade, dp. Designers não sei como mapear dp a pixel. O Google também não dá um guia de design de interface do usuário Android clara para eles, embora eles dão uma básica fórmula para a tradução dp e pixel.

A definição de como Android, 1PD igual a 1px sob 160 dispositivo de dpi (mdpi). Por isso, queremos projetar um aplicativo Android para xlarge dispositivo Android com mdpi densidade, podemos definir nosso tamanho UI em pixel como 960 pixels de largura e 720px em altura; Seguem a mesma regra de mapeamento, podemos obter seguinte App Android tela de tamanho UI diretriz de design:

 Tamanho da tela App Android em Pixel Guideline

ADICIONADO : Se você está interessado em "flexível" UI também, ter um olhar para esta biblioteca: um SDK Android que fornece uma nova unidade de tamanho - SDP (dp escalável). Esta unidade tamanho escalas com o tamanho da tela (isso também mencionados em uma resposta aqui, sobre a biblioteca SDP)

ADDED2 utilidade Google finalmente entendido de conceito iOS Storeboard UI, e aqui vai ConstraintLayout para o mundo Android: Criar uma UI Responsive com ConstraintLayout

1) dp: (density independent pixels)

O número de pixels representados em uma unidade de dp vai aumentar à medida que aumenta resolução de tela (quando você tem mais pontos / pixels por polegada). Inversamente em dispositivos com uma resolução mais baixa, o número de pixels representados no na unidade de dp irá diminuir. Uma vez que esta é uma unidade relativa, ele precisa ter uma linha de base para comparar com. Esta linha de base é uma tela de 160 dpi. Esta é a equação: px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Esta unidade escalas de acordo com o dpi tela (semelhante ao dp), bem como preferência o tamanho da fonte do usuário.


3) px: (pixels)

pixels reais ou pontos na tela.


Para mais informações você pode visitar

Android Developer Guia> Dimension
desenvolvedor Android Guia> Telas

Tamanho da tela no Android são agrupados em categorias ldpi, mdpi, hdpi, xhdpi, xxhdpi e xxxhdpi. densidade Tela é a quantidade de pixels dentro de uma área (como polegadas) da tela. Geralmente, é medida em pontos por polegada (dpi).

PX(Pixels):

  • nosso costume de pixel padrão que mapeia para o pixel da tela. px é para pixels absolutos. Isto é usado se você quer dar em termos de pixels absolutos para largura ou altura. Não recomendado.

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

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

  • Geralmente nós nunca usamos px porque é valor absoluto. Se você usar px a largura definida ou altura, e se que a aplicação está a ser transferido para a tela dispositivos de diferentes tamanhos, em seguida, que a visão não vai esticar conforme o tamanho original tela.

  • dp é altamente recomendado para uso no lugar de px. Use dp se você quiser falar largura e altura para crescer e encolher dinamicamente com base nos tamanhos de tela.

  • se dermos dp/dip, android calculará automaticamente o tamanho do pixel com base em tela de tamanho 160 pixel.

SP(Scale independent pixels):

  • dimensionados com base na preferência do tamanho da fonte do usuário. Fontes deve usar sp.

  • Ao mencionar as fontes com tamanho para caber em vários tamanhos de tela, uso sp. Isto é semelhante ao dp.Use sp especialmente para tamanhos de fonte para crescer e encolher com base na tela dinamicamente tamanhos

Documentação Android diz:

quando especificar dimensões, sempre usar tanto dp ou sp unidades. Um dp é Um pixel independente de densidade que corresponde ao tamanho físico de um pixel em 160 dpi. Um sp representa a mesma unidade de base, mas é dimensionado pela tamanho do texto preferido do usuário (é um pixel independente de escala), para que deve utilizar esta unidade de medida ao definir o tamanho do texto

A tela de um telefone celular é composta de milhares de minúsculos pontos conhecidos como pixels (px) . Um pixel é o menor elemento que vai para tornar a imagem. Quanto mais o número de pixels para fazer uma imagem ou texto, mais nítida se torna e torna a tela do smartphone mais facilmente legível.

Resolução de tela é medido em termos de número de pixels na tela. resolução de tela é uma especificação comumente usados ??ao comprar um dispositivo, mas não é realmente tão útil ao projetar para Android porque o pensamento de telas em termos de pixels ignora a noção de tamanho físico, o que para um dispositivo de toque é realmente muito importante.

Densidade independente pixel (dp ou mergulho) permitir que o designer para criar ativos que aparecem de uma maneira esperada, não importa a resolução ou densidade de dispositivo de destino.

Um pixel independente densidade (dp ou mergulho) é igual a um pixel na linha de base ou densidade de 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, em 320 dpi, 1 dp é igual a 2 px.

Fórmula

px / dp = dpi / 160dpi

pontos por polegada (dpi) é uma medida da nitidez (ou seja, a densidade de pontos iluminados) em uma tela. Os pontos por polegada para uma determinada resolução de imagem varia de acordo com o tamanho da tela em geral, desde o mesmo número de pixels estão sendo espalhados por um espaço diferente.

Trabalho com densidade de pixels independentes nos ajudar a lidar com uma situação como onde você tem dois dispositivos com a mesma resolução de pixel, mas quantidade de espaço diferentes. Suponha que em um caso, um tablet e telefone tem a mesma resolução de 1280 por 800 pixels (160 dpi) e 800 por 1.280 pixels (320 dpi), respectivamente.

Agora, porque um tablet é a densidade da linha de base (160 dpi) seus tamanhos pixels físicas e densidade independente são as mesmas, 1280 por 800. O telefone, por outro lado tem uma maior densidade de pixel, por isso tem metade como muitos independente densidade pixels como pixels físicos. Assim, um telefone tem 400 por 640 pixels de densidade independentes. Então, usando um pixel independente de densidade torna mais fácil imaginar mentalmente que tablet tem muito mais espaço do que o telefone.

Da mesma forma, se você tem dois dispositivos com tamanho de tela semelhante, mas diferente densidade de pixels, dizer que um é de 800 por 1280 pixels (320 dpi), eo outro é de 400 por 640 pixels (160 dpi), não precisamos para definir totalmente diferentes layouts para estes dois dispositivos, como podemos medir ativos em termos de densidade de pixels independente que é o mesmo para ambos os dispositivos.

800 por 1280 pixels (320dpi) = 400 por 640 pixel de densidade independentes (DP)

400 por 640 pixels (160 dpi) = 400 por 640 pixel de densidade independentes (DP)

<> fortes Escala pixels independentes (sp) é a unidade preferida para o tamanho da fonte. Para fins de acessibilidade, Android permite aos usuários personalizar o tamanho da fonte do seu dispositivo. Os usuários que têm texto de leitura problema pode aumentar o tamanho da fonte do seu dispositivo. Normalmente você pode encontrar esta opção na configuração de exibição em seu telefone ou tablet sob o tamanho da fonte. É muitas vezes, também está disponível por meio das configurações de acessibilidade.

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

Se você usar dp como unidade para o tamanho da fonte, então aquele pedaço de texto tem um tamanho físico específico, não importa se o usuário tem o tamanho da fonte do dispositivo customize. Usando unidades sp vai fazer uma melhor experiência para as pessoas com visão prejudicada.

Referência : Udacity , Google

sp: escala de pixels independente

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

px: pixel ou elemento de imagem é o único ponto na tela

Antes de responder a esta pergunta, deixe-me diminuir o número de unidades pela primeira vez. Então aqui vai:. dp ou dip são a mesma coisa e são conhecidos como independente de densidade pixels

1. px - está para pixels. Pixels são um único ponto, ponto em uma tela. Geralmente na indústria móvel é medido em ppi (pixels por polegada). resolução de tela é diretamente proporcional à ppi, maior o número de pixels por polegada maior a resolução da tela.

Por exemplo, se você desenhar uma imagem de um tamanho 200 px * 200 px , em seguida, sua aparência deve ser diferente em um dispositivo high-resolution versus uma baixa dispositivo de resolução. A razão é a 200 px imagem em um telefone de baixa resolução será olhar maior do que em um dispositivo high-resolution.

Abaixo imagens estão mostrando uma resolução da mesma imagem em diferentes telefones -

  • Telefone com tela de alta resolução

     Digite os detalhes da imagem aqui

  • Telefone com baixa resolução da tela

     Digite os detalhes da imagem aqui

2. dip ou dp - uma unidade abstrata que é baseada na densidade física da tela. Estas unidades são relativas a um 160 ecrã dpi, assim que um dp é um pixel em um 160 ecrã dpi. A proporção de dp-se a pixel vai mudar com a densidade da tela, mas não necessariamente em proporção direta. "Independência Densidade" refere-se à exibição uniforme de elementos de interface do usuário em telas com diferentes densidades.

  • Imagem que está mostrando 80px (imagem do lado esquerdo) e 80 dp (imagem do lado direito) . Caixa diferença.

 Digite os detalhes da imagem aqui

A dp é igual a um pixel físico em uma tela com uma densidade de 160 . Para calcular dp:

DP = (largura em pixels * 160) / densidade tela

3. sp - representa pixels escaláveis. Geralmente sp é usado para textos sobre a interface do usuário, e sp preserva as configurações de fonte. Por exemplo, se um usuário selecionado uma fonte maior do que 30 sp será escala auto para aparecer grande de acordo com a preferência do usuário.

Eu quero fornecer uma maneira fácil de entender dp. Na verdade, eu acho que dp é a mais fácil de entender. dp é apenas uma unidade de comprimento físico. É da mesma dimensão que mm ou inch. É apenas conveniente para nós para escrever 50dp, 60dp em vez de 50/160 inch ou 60/160 inch, porque um dp é apenas 1/160 inch qualquer que seja o tamanho ou a resolução da tela é.

O único problema é que, a dpi android de algumas telas não são precisos. Por exemplo, uma tela classificada para 160dpi pode ter 170 dpi de fato. Assim, o resultado de computação de dp é difusa. Ele deve ser aproximadamente o mesmo que 1/160 inch.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top