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