Πόροι Android και διεθνοποίηση

βασικός οδηγός-προγραμματισμός-android-5

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

Βασικοί πόροι: εικόνες και κείμενα

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

Επομένως, δεν συνιστάται η τοποθέτηση κειμένων στον κώδικα. Η μόνη εξαίρεση μπορεί να είναι μηνύματα που δεν προορίζονται για τον τελικό χρήστη, όπως μηνύματα εξόδου κονσόλας. Αλλά γενικά, όλα τα κείμενά μας θα πρέπει να πάνε στο α ξεχωριστό αρχείο πόρου. Θα καλέσουμε αυτό το αρχείο strings.xmlκαι η πλήρης πορεία σας στο έργο θα είναι res / τιμές / strings.xml.

Ένα αρχείο strings.xml θα έχει περιεχόμενο παρόμοιο με αυτό:

<πόροι>κορδόνι όνομα = "χορδή_1">κείμενο_1
    <κορδόνι όνομα = "χορδή_2">κείμενο_2

Τώρα, στον κώδικά μας μπορούμε να ανακτήσουμε αυτά τα κείμενα με προτάσεις όπως getResources (). GetString (R.string.string_1) ή εντός των διατάξεών μας όπως @ string / string_1. Με αυτόν τον τρόπο έχουμε επιτύχει αυτό που θέλαμε: ο κώδικας γίνεται ανεξάρτητος από τους πόρους.

Ο άλλος πόρος που θα χρησιμοποιούμε τακτικά θα είναι ο εικόνες. Για αυτό έχουμε πολλούς φακέλους στο έργο, όπως res / drawable, res / drawable-hdpi, res / drawable-xhdpi και τα παρόμοια.

Τα επίθημα που ακολουθούν "drawable" αναφέρονται στο πυκνότητα οθόνης. Κάθε συσκευή Android έχει πυκνότητα pixel ανά οθόνη που ομαδοποιείται σε διάφορες ομάδες:

  • ldpi (μικρό, x0,75)
  • mdpi (μέσος όρος x1)
  • hdpi (μεγάλο x1,5)
  • xhdpi (πολύ μεγάλο x2)
  • xxhdpi (εξαιρετικά μεγάλο x3)

Με αυτόν τον τρόπο, μπορεί να προσαρμοστεί η ίδια εικόνα διαφορετικές πυκνότητες οθόνης χωρίς να εμφανίζονται παραμορφώσεις. Συνιστάται σε κάθε φάκελο να υπάρχει αντίγραφο της εικόνας, με σεβασμό στις αναλογίες (λαμβάνοντας το mdpi ως βάση και ίσο με 1), αν και μπορείτε επίσης να χρησιμοποιήσετε μόνο ένα από αυτά και στη συνέχεια το Android θα κάνει αυτόματα μια λειτουργία επανασύνδεσης για το άλλες αποφάσεις. Ωστόσο, συνιστάται να καλύπτετε όλους τους φακέλους για να αποθηκεύσετε το σύστημα σε αυτήν την επιπλέον προσπάθεια.

Ο φάκελος "με δυνατότητα σχεδίασης" δεν θα περιέχει εικόνες, θα τον χρησιμοποιήσουμε μόνο για ορισμούς xml για προχωρημένα στοιχεία, όπως επιλογείς.

Άλλοι πόροι

Μέσα στον κατάλογο / res του έργου μπορεί να διατεθούν πολλοί περισσότεροι πόροι. Ήχοι, ορισμοί χρωμάτων που μπορούν να χρησιμοποιηθούν με παρόμοιο τρόπο με κείμενα, διαστάσεις για την εφαρμογή μας, στυλ για τις απόψεις μας και πολλά άλλα.

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

Διεθνοποίηση στο Android

Με τις εικόνες που έχουμε ήδη κάνει μια εισαγωγή εναλλακτικό σύστημα πόρων στο Android: εάν έχουμε μια οθόνη πυκνότητας xhdpi (για παράδειγμα του Galaxy S3), το Android θα προτιμά τις εικόνες στον κατάλογο drawable-xhdpi από τους άλλους.

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

Εάν θέλουμε τα κείμενά μας να είναι διαθέσιμα σε πολλές γλώσσες, θα πρέπει να προσθέσουμε έναν διαφορετικό φάκελο για κάθε αντίγραφο του αρχείου strings.xml. Επομένως, εάν θέλουμε να μεταφέρουμε την εφαρμογή μας στα Αγγλικά και τα Γαλλικά, θα έχουμε αυτούς τους τρεις καταλόγους:

  • res / τιμές (προεπιλεγμένες τιμές)
  • res / τιμές-en
  • res / τιμές-fr

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

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

Το σύστημα δημιουργίας εναλλακτικών πόρων μπορεί, φυσικά, να συνδυαστεί. Ακολουθώντας τον σύνδεσμο που έχουμε δηλώσει προηγουμένως, θα δούμε με ποια σειρά πρέπει να ακολουθήσουν τα επίθημα. Εάν ακολουθήσουμε το απλό παράδειγμα που επισημαίνουμε σε αυτό το σεμινάριο, θα μπορούσαμε να σκεφτούμε να έχουμε εικόνες που προορίζονται μόνο για την αγγλική έκδοση. Αυτό επιτυγχάνεται με τη δημιουργία ενός φακέλου res / drawable-en-xhdpi ή οποιασδήποτε άλλης πυκνότητας οθόνης που χρειαζόμαστε. Με αυτόν τον τρόπο μπορούμε να παρέχουμε μια μεγάλη ποικιλία πόρων και δεν χρειάζεται να ανησυχούμε για την επιλογή του σωστού. Φυσικά: χωρίς να ξεχνάμε ότι η πυκνότητα της οθόνης είναι ο μόνος τροποποιητής που δεν χρειάζεται προεπιλεγμένες τιμές. Όλοι οι άλλοι χρειάζονται μια προεπιλεγμένη τιμή ή διακινδυνεύουμε τη διακοπή της εφαρμογής.


Το περιεχόμενο του άρθρου συμμορφώνεται με τις αρχές μας συντακτική ηθική. Για να αναφέρετε ένα σφάλμα κάντε κλικ Aquí.

Γίνε ο πρώτος που θα σχολιάσει

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί.

*

*

  1. Υπεύθυνος για τα δεδομένα: Πραγματικό ιστολόγιο
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

bool (αλήθεια)