Termos do Android (dip / dp, px, dpi, matriz de exibição)

Tamanho da tela

Tamanho físico real da tela.

Resolução da tela

A resolução da tela é o número total de pixels na tela. O programa a seguir irá extrair a resolução da tela do dispositivo. Ele imprimirá a largura e a altura da tela. Esses valores estão em pixel.

/**
* Get screen resolution/width and height of the device

* Return as a 'Point'(This point can use to get width and height of the device)

*
@param context need to get window manager
* @return resolution point

*/

public static Point getScreenResolution(Context context) {
// get window managers
WindowManager manager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
Point point = new Point();
display
.getSize(point);

// get width and height
System.out.println(point.x);
System.out.println(point.y);

return point;
}

Densidade da tela

É uma proporção entre o tamanho da tela e a resolução da tela. A densidade não define o número de pixels em uma única unidade de uma tela. Medidas com valor DPI. DPI – pontos por polegada . Existem quatro tipos de densidades de tela no Android

  • Baixo – 120 dpi
  • Médio – 160 dpi
  • Alto – 240 dpi
  • Extra alto – 320 dpi

Telas de baixa densidade têm baixa quantidade de pixels em uma única unidade e telas de alta densidade têm grande quantidade de pixels em uma única unidade (normalmente, uma unidade é uma polegada ). O programa a seguir extrairá a densidade (valor em dpi) da tela.

float density = context.getResources().getDisplayMetrics().density;

dip / dp vs px

  • dip / dp – Pixel independente de densidade. Use ao definir atributos de layout, como altura , largura (exemplo – android: layout_width = “34dp”). O pixel independente de densidade é equivalente a um pixel físico em uma tela de 160 dpi. Portanto, na tela de mergulho 240, 1dip = 1,5 pixel. 320 tela dip 1dip = 2pixel.

  • px – Corresponde aos pixels reais na tela.

Converter dp em px

Ao definir a largura / altura de um layout de maneira programática, temos que defini-lo com o pixel. Portanto, o valor dp precisa ser convertido em pixel e definido para o layout. A seguir está a equação para converter dp em px

px = dp * (dpi / 160). O programa a seguir converte dp em px

/**
* Convert dp/dpi to pixel values

*
@param context need to get display metrics
*
@param dp DP value
* @return pixel value

*/

public static int dpToPx(Context context, int dp) {
float density = context.getResources().getDisplayMetrics().density;
return Math.round((float)dp * density);
}

Mais informações – http://developer.android.com/guide/practices/screens_support.html

Matriz de exibição

Cenário

  • A resolução da tela fornece altura / largura de toda a tela (inclui a altura da barra de status)

  • A altura da barra de ação é a altura da barra de ação. O programa a seguir dá a altura da barra de ação

// will returns height of the action bar in pixel
getActionBar
().getHeight();
  • O tamanho da visualização do conteúdo é o tamanho da visualização raiz do seu layout. Os programas a seguir fornecerão os atributos de visualização do conteúdo
/**
* Get content view of an activity(this is the root view of any layout)

* This method should call after activity view created(onWindowFocusChanged)

*
@param context app context
* @return root view

*/

public static View getContentView(Context context) {
View contentView = ((Activity)context).getWindow().findViewById(Window.ID_ANDROID_CONTENT);

// content view height/widht
System.out.println(contentView.getHeight());
System.out.println(contentView.getWidth());

return contentView;
}
  • Normalmente, você não pode obter acesso a um valor real do tamanho dessa visualização até que o layout esteja completo. Portanto, se chamarmos o método acima em onCreate () ou onResume (), ele não fornecerá os tamanhos reais (retornará 0). Para obter os valores reais, você deve chamar o método acima em onWindowFocusChanged (), que será chamado no ponto em que sua Activity estiver quase visível para o usuário.

Altura da barra de status

De acordo com o layout acima, a altura da barra de status será (altura da resolução da tela – altura da visualização da raiz).