Λήψη διαστάσεων οθόνης σε pixels

Δημιούργησα μερικά προσαρμοσμένα στοιχεία και θέλω να τα τοποθετήσω προγραμματιστικά στην επάνω δεξιά γωνία (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.&quot,

Παράδειγμα:

Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
Σχόλια (25)

Ένας τρόπος είναι:

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;
Σχόλια (10)

Πρώτα βρείτε την προβολή (π.χ. με την findViewById()) και στη συνέχεια μπορείτε να χρησιμοποιήσετε την getWidth() στην ίδια την προβολή.

Σχόλια (2)