Képernyőméretek lekérdezése pixelben

Létrehoztam néhány egyéni elemet, és programozottan a jobb felső sarokba akarom helyezni őket (n pixelre a felső szélétől és m pixelre a jobb szélétől). Ezért meg kell kapnom a képernyő szélességét és magasságát, majd be kell állítanom a pozíciót:

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

Hogyan kapom meg a screenWidth és screenHeight értékeket a fő Activity-ben?

Megoldás

Ha a megjelenítési méreteket pixelben szeretné megadni, használhatja a getSize parancsot:

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

Ha nem egy Activity-ben vagy, akkor a WINDOW_SERVICE segítségével megkaphatod az alapértelmezett Display értéket:

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

Ha egy fragmentumban vagy és ezt szeretnéd elérni, akkor használd az Activity.WindowManager-t (Xamarin.Androidban) vagy a getActivity().getWindowManager() (java-ban).

A getSize bevezetése előtt (az API 13. szintjén) a getWidth és getHeight módszereket használhattad, amelyek mára elavultak:

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

Az Ön által leírt felhasználási esethez azonban megfelelőbbnek tűnik egy margó/tömés az elrendezésben.

Egy másik lehetőség a következő: DisplayMetrics

Egy struktúra, amely általános információkat ír le a kijelzőről, például a méretét, sűrűségét és a betűtípus méretezését. A DisplayMetrics tagok eléréséhez inicializáljunk egy objektumot a következőképpen:

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

A widthPixels segítségével információt kaphatunk a következőkről:

"A kijelző abszolút szélessége pixelben."

Példa:

Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
Kommentárok (25)

Az egyik módja:

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

Ez elavult, és helyette a következő kódot kell kipróbálnod. Az első két sor kód a DisplayMetrics objektumokat adja. Ez az objektum olyan mezőket tartalmaz, mint a heightPixels, widthPixels.

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

int height = metrics.heightPixels;
int width = metrics.widthPixels;
Kommentárok (10)

Először szerezd meg a nézetet (pl. a findViewById() segítségével), majd használd a getWidth() parancsot magára a nézetre.

Kommentárok (2)