Ik heb een aantal aangepaste elementen gemaakt, en ik wil ze programmatisch in de rechterbovenhoek plaatsen (n
pixels van de bovenrand en m
pixels van de rechterrand). Daarvoor moet ik de schermbreedte en schermhoogte krijgen en dan de positie instellen:
int px = screenWidth - m;
int py = screenHeight - n;
Hoe krijg ik screenWidth
en screenHeight
in de hoofdactiviteit?
Als u de afmetingen van het scherm in pixels wilt weten, kunt u getSize
gebruiken:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Als je niet in een Activity
zit, kun je de standaard Display
krijgen via WINDOW_SERVICE
:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Als je in een fragment zit en je wilt dit bereiken gebruik dan Activity.WindowManager (in Xamarin.Android) of getActivity().getWindowManager() (in java).
Voordat getSize
werd geïntroduceerd (in API level 13), kon je de getWidth
en getHeight
methodes gebruiken die nu deprecated zijn:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
Voor het gebruik dat je beschrijft lijkt een marge/padding in de opmaak echter meer geschikt.
Een andere manier is: DisplayMetrics
Een structuur die algemene informatie over een display beschrijft, zoals de grootte, dichtheid, en lettertype schaling. Om toegang te krijgen tot de DisplayMetrics leden, initialiseer je een object als volgt:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
We kunnen widthPixels
gebruiken om informatie te krijgen over:
"De absolute breedte van het scherm in pixels."
Exemplaar:
Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
Eén manier is:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Het is deprecated, en je zou in plaats daarvan de volgende code moeten proberen. De eerste twee regels code geven je de DisplayMetrics
objecs. Deze objecten bevatten velden zoals heightPixels
, widthPixels
.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Haal eerst de view op (bijv. door findViewById()
) en dan kun je getWidth() gebruiken op de view zelf.