Δημιούργησα μερικά προσαρμοσμένα στοιχεία και θέλω να τα τοποθετήσω προγραμματιστικά στην επάνω δεξιά γωνία (n
pixels από την επάνω άκρη και m
pixels από τη δεξιά άκρη). Επομένως, πρέπει να πάρω το πλάτος και το ύψος της οθόνης και στη συνέχεια να ορίσω τη θέση:
int px = screenWidth - m;
int py = screenHeight - n;
Πώς μπορώ να πάρω τα screenWidth
και screenHeight
στην κύρια Δραστηριότητα;
Αν θέλετε τις διαστάσεις της οθόνης σε pixels, μπορείτε να χρησιμοποιήσετε getSize
:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Εάν δεν βρίσκεστε σε μια Activity
μπορείτε να λάβετε την προεπιλεγμένη Display
μέσω του WINDOW_SERVICE
:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Εάν βρίσκεστε σε ένα fragment και θέλετε να το πραγματοποιήσετε αυτό απλά χρησιμοποιήστε το Activity.WindowManager (στο Xamarin.Android) ή το getActivity().getWindowManager() (στη java).
Πριν την εισαγωγή της μεθόδου getSize
(στο επίπεδο API 13), μπορούσατε να χρησιμοποιήσετε τις μεθόδους getWidth
και getHeight
, οι οποίες έχουν πλέον καταργηθεί:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
Για την περίπτωση χρήσης που περιγράφετε, ωστόσο, ένα περιθώριο/περίγραμμα στη διάταξη φαίνεται πιο κατάλληλο.
Ένας άλλος τρόπος είναι: DisplayMetrics
Μια δομή που περιγράφει γενικές πληροφορίες σχετικά με μια οθόνη, όπως το μέγεθος, η πυκνότητα και η κλιμάκωση γραμματοσειράς. Για να αποκτήσετε πρόσβαση στα μέλη DisplayMetrics, αρχικοποιήστε ένα αντικείμενο ως εξής:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Μπορούμε να χρησιμοποιήσουμε το widthPixels
για να λάβουμε πληροφορίες για:
"Το απόλυτο πλάτος της οθόνης σε pixels.",
Παράδειγμα:
Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
Ένας τρόπος είναι:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Έχει καταργηθεί και θα πρέπει να δοκιμάσετε τον ακόλουθο κώδικα. Οι δύο πρώτες γραμμές κώδικα σας δίνουν τα αντικείμενα DisplayMetrics
. Αυτά τα αντικείμενα περιέχουν τα πεδία όπως heightPixels
, widthPixels
.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Πρώτα βρείτε την προβολή (π.χ. με την findViewById()
) και στη συνέχεια μπορείτε να χρησιμοποιήσετε την getWidth() στην ίδια την προβολή.