Iegūt ekrāna izmērus pikseļos

Es izveidoju dažus pielāgotus elementus un vēlos tos programmatiski novietot augšējā labajā stūrī (n pikseļu attālumā no augšējās malas un m pikseļu attālumā no labās malas). Tāpēc man ir jāiegūst ekrāna platums un ekrāna augstums un pēc tam jānosaka pozīcija:

int px = screenWidth - m;
int py = screenHeight - n;

Kā iegūt ekrāna platumu un ekrāna augstumu galvenajā darbībā?

Risinājums

Ja vēlaties iegūt displeja izmērus pikseļos, varat izmantot getSize:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

Ja neatrodaties Aktivitātē, varat iegūt noklusējuma Display, izmantojot WINDOW_SERVICE:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

Ja esat fragmentā un vēlaties to izdarīt, vienkārši izmantojiet Activity.WindowManager (Xamarin.Android) vai getActivity().getWindowManager() (java).

Pirms getSize ieviešanas (API 13. līmenī) varēja izmantot getWidth un getHeight metodes, kas tagad ir atceltas:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

Tomēr jūsu aprakstītajam lietošanas gadījumam piemērotāka šķiet izkārtojuma rezerve/izvietojums.

Cits veids ir: DisplayMetrics

Struktūra, kas apraksta vispārīgu informāciju par displeju, piemēram, tā lielumu, blīvumu un fontu mērogošanu. Lai piekļūtu DisplayMetrics locekļiem, inicializējiet objektu šādi:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

Mēs varam izmantot widthPixels, lai iegūtu informāciju par:

"Displeja absolūtais platums pikseļos."

Piemērs:

Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
Komentāri (25)

Viens no veidiem ir:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

Tas ir novecojis, un tā vietā jāizmēģina šāds kods. Pirmās divas koda rindas sniedz DisplayMetrics objektus. Šie objekti satur tādus laukus kā heightPixels, widthPixels.

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int height = metrics.heightPixels;
int width = metrics.widthPixels;
Komentāri (10)

Vispirms iegūstiet skatījumu (piemēram, ar findViewById()) un pēc tam varat izmantot getWidth() pašam skatam.

Komentāri (2)