Ποια είναι η διαφορά μεταξύ "px", "dip", "dp" και "sp";

Ποια είναι η διαφορά μεταξύ των μονάδων μέτρησης του Android;

  • px
  • βουτιά
  • dp
  • sp
Λύση

Από το Android Developer Documentation:

  1. px Pixels - αντιστοιχεί στα πραγματικά pixels της οθόνης.

  2. in Inches - με βάση το φυσικό μέγεθος της οθόνης.
    1 ίντσα = 2,54 εκατοστά

  3. mm Μιλλιόμετρα - με βάση το φυσικό μέγεθος της οθόνης.

  4. pt Points - 1/72 της ίντσας με βάση το φυσικό μέγεθος της οθόνης.

  5. dp ή dip Density-independent Pixels - μια αφηρημένη μονάδα που βασίζεται στη φυσική πυκνότητα της οθόνης. Αυτές οι μονάδες είναι σχετικές με ένα 160 dpi, οπότε ένα dp είναι ένα pixel σε μια οθόνη 160 dpi. Ο λόγος των dp προς pixel αλλάζει ανάλογα με την πυκνότητα της οθόνης, αλλά όχι απαραίτητα. σε άμεση αναλογία. Σημείωση: Ο μεταγλωττιστής δέχεται τόσο το "dip" όσο και το "dp", αν και το "dp" είναι πιο συνεπές με το "sp".

  6. sp Scale-independent Pixels - αυτή είναι όπως η μονάδα dp, αλλά κλιμακώνεται επίσης από την προτίμηση του χρήστη για το μέγεθος της γραμματοσειράς. Συνιστάται να να χρησιμοποιείτε αυτή τη μονάδα όταν καθορίζετε μεγέθη γραμματοσειρών, ώστε να προσαρμόζονται για την πυκνότητα της οθόνης και την προτίμηση του χρήστη.

Από Κατανόηση της ανεξαρτησίας πυκνότητας στο Android:

Σχόλια (11)

Σχεδόν τα πάντα σχετικά με αυτό και το πώς να επιτύχετε την καλύτερη δυνατή υποστήριξη για πολλαπλές οθόνες διαφορετικών μεγεθών και πυκνότητας είναι πολύ καλά τεκμηριωμένα εδώ:

Μέγεθος οθόνης Για λόγους απλότητας, το Android ομαδοποιεί όλα τα πραγματικά μεγέθη οθόνης σε τέσσερα γενικευμένα μεγέθη: μικρό, κανονικό, μεγάλο και πολύ μεγάλο. &gt, Πυκνότητα οθόνης Ο αριθμός των εικονοστοιχείων εντός μιας φυσικής περιοχής της οθόνης- συνήθως αναφέρεται ως dpi (κουκκίδες ανά ίντσα). Για παράδειγμα, μια "χαμηλή" πυκνότητα οθόνης έχει λιγότερα εικονοστοιχεία σε μια δεδομένη φυσική περιοχή, σε σύγκριση με μια οθόνη "κανονικής" ή "υψηλής" πυκνότητας. Για λόγους απλότητας, το Android ομαδοποιεί όλες τις πραγματικές πυκνότητες οθόνης σε έξι γενικευμένες κατηγορίες πυκνότητες: χαμηλή, μεσαία, υψηλή, πολύ υψηλή, πολύ-πολύ υψηλή, πολύ-πολύ υψηλή και extra-extra-extra-high. &gt, Προσανατολισμός
Ο προσανατολισμός της οθόνης από το σημείο του χρήστη' άποψη του χρήστη. Αυτός είναι είτε οριζόντιος είτε κατακόρυφος, που σημαίνει ότι η οθόνη's αναλογία διαστάσεων είναι είτε φαρδιά είτε ψηλή, αντίστοιχα. Λάβετε υπόψη ότι δεν μόνο οι διαφορετικές συσκευές λειτουργούν σε διαφορετικούς προσανατολισμούς από προεπιλογή, αλλά ο προσανατολισμός μπορεί να αλλάξει κατά την εκτέλεση όταν ο χρήστης περιστρέφει τη συσκευή.

Ανάλυση
Ο συνολικός αριθμός των φυσικών εικονοστοιχείων στο μιας οθόνης. Κατά την προσθήκη υποστήριξης για πολλαπλές οθόνες, οι εφαρμογές δεν εργάζονται άμεσα με την ανάλυση- οι εφαρμογές θα πρέπει να ασχολούνται μόνο με το μέγεθος και την πυκνότητα της οθόνης, όπως καθορίζεται από τη γενικευμένη ομάδες μεγέθους και πυκνότητας.

Εικονοστοιχείο ανεξάρτητο από την πυκνότητα (dp)
Ένα εικονικό μονάδα εικονοστοιχείου που θα πρέπει να χρησιμοποιείτε κατά τον ορισμό της διάταξης UI, για να εκφράσετε τις διαστάσεις ή τη θέση της διάταξης με τρόπο ανεξάρτητο από την πυκνότητα. Το εικονοστοιχείο ανεξάρτητο από την πυκνότητα ισοδυναμεί με ένα φυσικό εικονοστοιχείο σε 160 dpi οθόνης, η οποία είναι η βασική πυκνότητα που υποθέτει το σύστημα για ένα "μεσαία" πυκνότητα οθόνης. Κατά το χρόνο εκτέλεσης, το σύστημα χειρίζεται διαφανώς οποιαδήποτε κλιμάκωση των μονάδων dp, όπως είναι απαραίτητο, με βάση την πραγματική πυκνότητα της οθόνης που χρησιμοποιείται. Η μετατροπή των μονάδων dp σε εικονοστοιχεία οθόνης είναι απλή: px = dp * (dpi / 160)`. Για παράδειγμα, σε μια οθόνη 240 dpi, 1 dp ισοδυναμεί με 1,5 φυσικά εικονοστοιχεία. Θα πρέπει πάντα να χρησιμοποιείτε μονάδες dp όταν τον ορισμό του UI της εφαρμογής σας, για να εξασφαλίσετε τη σωστή εμφάνιση του UI σας σε οθόνες με διαφορετικές πυκνότητες.

Εάν σκέφτεστε σοβαρά να αναπτύξετε μια εφαρμογή Android για περισσότερους από έναν τύπους συσκευών, θα πρέπει να έχετε διαβάσει τουλάχιστον μία φορά το έγγραφο ανάπτυξης υποστήριξης οθονών. Επιπλέον, είναι πάντα καλό να γνωρίζετε τον πραγματικό αριθμό των ενεργών συσκευών που διαθέτουν μια συγκεκριμένη διαμόρφωση οθόνης.

Σχόλια (5)

Θα αναλύσω περισσότερο πώς ακριβώς μετατρέπεται το dp σε px:

  • Αν τρέχει σε μια συσκευή mdpi, μια εικόνα 150 x 150 px θα καταλαμβάνει 150 * 150 dp του χώρου της οθόνης.
  • Εάν εκτελείται σε συσκευή hdpi, μια εικόνα 150 x 150 px θα καταλαμβάνει 100 * 100 dp χώρου στην οθόνη.
  • Εάν εκτελείται σε συσκευή xhdpi, μια εικόνα 150x150 px θα καταλαμβάνει 75 * 75 dp του χώρου της οθόνης.

Το αντίστροφο: ας πούμε, θέλετε να προσθέσετε μια εικόνα στην εφαρμογή σας και πρέπει να γεμίσει ένα χειριστήριο 100 * 100 dp. Θα πρέπει να δημιουργήσετε εικόνες διαφορετικού μεγέθους για τα υποστηριζόμενα μεγέθη οθόνης:

  • 100 * 100 px εικόνα για mdpi
  • 150 * 150 px εικόνα για hdpi
  • 200 * 200 px εικόνα για xhdpi
Σχόλια (4)