Eu criei alguns elementos personalizados, e quero programá-los para o canto superior direito (n
pixels from the top edge e m
pixels from the right edge). Portanto, preciso obter a largura e altura da tela e depois definir a posição:
int px = screenWidth - m;
int py = screenHeight - n;
Como obter "largura de tela" e "altura de tela" na atividade principal?
Se você quiser as dimensões de exibição em pixels você pode utilizar getSize':
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Se você não estiver em uma Atividade
você pode obter o Display
padrão via WINDOW_SERVICE
:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Se você estiver em um fragmento e quiser realizar isso basta usar Activity.WindowManager (em Xamarin.Android) ou getActivity().getWindowManager() (em java).
Antes de 'getSize' ser introduzido (no nível 13 da API), você podia utilizar os métodos 'getWidth' e 'getHeight' que agora são depreciados:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
Para o caso de uso que você está descrevendo, no entanto, uma margem/padding no layout parece mais apropriado.
Outra maneira é: DisplayMetrics.
Uma estrutura que descreve informações gerais sobre uma tela, como tamanho, densidade e escala de fontes. Para acessar os membros da DisplayMetrics, inicialize um objeto como este:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Podemos utilizar o widthPixels
para obter informações:
"A largura absoluta do visor em pixels."
Exemplo:
Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
Uma maneira é:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
É depreciado, e você deve tentar o seguinte código. As duas primeiras linhas de código dão-lhe o objecto DisplayMetrics'. Estes objetos contêm os campos como
heightPixels,
widthPixels`.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Primeiro obtenha view (por exemplo, por findViewById()
) e então você pode utilizar getWidth() na própria view.