Stworzyłem kilka niestandardowych elementów i chcę je programowo umieścić w prawym górnym rogu (n
pikseli od górnej krawędzi i m
pikseli od prawej krawędzi). Dlatego muszę uzyskać szerokość ekranu i wysokość ekranu, a następnie ustawić pozycję:
int px = screenWidth - m;
int py = screenHeight - n;
Jak mogę uzyskać screenWidth
i screenHeight
w głównej aktywności?
Jeśli chcesz uzyskać wymiary wyświetlania w pikselach, możesz użyć getSize
:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Jeśli nie jesteś w Activity
możesz uzyskać domyślny Wyświetlacz
poprzez WINDOW_SERVICE
:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Jeśli jesteś we fragmencie i chcesz to osiągnąć, po prostu użyj Activity.WindowManager (w Xamarin.Android) lub getActivity().getWindowManager() (w java).
Zanim getSize
został wprowadzony (w API level 13), mogłeś użyć metod getWidth
i getHeight
, które teraz są przestarzałe:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
Dla przypadku użycia, który opisujesz, margines/padding w układzie wydaje się bardziej odpowiedni.
Innym sposobem jest: DisplayMetrics
Struktura opisująca ogólne informacje o wyświetlaczu, takie jak jego rozmiar, gęstość i skalowanie czcionki. Aby uzyskać dostęp do członków DisplayMetrics, zainicjalizuj obiekt w ten sposób:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Możemy użyć widthPixels
, aby uzyskać informacje dla:
"Szerokość bezwzględna wyświetlacza w pikselach."
Przykład:
Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
Jednym ze sposobów jest:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Jest on zdeprecjonowany i powinieneś zamiast niego wypróbować następujący kod. Pierwsze dwie linie kodu dają ci obiekt DisplayMetrics
. Ten obiekt zawiera pola takie jak heightPixels
, widthPixels
.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Najpierw zdobądź widok (np. przez findViewById()
), a następnie możesz użyć getWidth() na samym widoku.