Πώς να συμπεριλάβετε ένα σκοτεινό θέμα στην εφαρμογή Android σας

Για τους προγραμματιστές, η δημιουργία μιας εφαρμογής Android είναι μια εύκολη διαδικασία - σχεδιάζοντας ένα ελκυστικό UI είναι αυτό που είναι πραγματικά δύσκολο. Αυτός είναι ο λόγος για τον οποίο γράψαμε τον οδηγό "Πώς να σχεδιάσετε ένα UI εφαρμογής Android που δεν πιπιλίζει", για προγραμματιστές που χρειάζονται κάποια έμπνευση για τη δημιουργία απλών αλλά ελκυστικών UIs. Σε αυτόν τον οδηγό αναφέραμε εν συντομία την προσθήκη ενός σκοτεινού / νυχτερινού θέματος σε εφαρμογές σας και σε αυτόν τον οδηγό θα σας καθοδηγήσουμε.

Η προσθήκη ενός σκοτεινού / νυχτερινού θεματικού μοντέλου στην εφαρμογή σας μπορεί να αποτελέσει μια εξαιρετική επιλογή για τους χρήστες σας - εξοικονομεί διάρκεια ζωής της μπαταρίας και είναι πολύ πιο εύκολη στα μάτια τη νύχτα. Ένα λευκό φόντο με μαύρο κείμενο ή οποιοσδήποτε συνδυασμός φωτεινών χρωμάτων στο περιβάλλον εργασίας σας είναι πραγματικά αγχωτικό στα μάτια, ιδιαίτερα τη νύχτα. Έτσι, ένα σκούρο φόντο με ελαφρύτερο κείμενο είναι πολύ λιγότερο αγχωτικό και επιβλαβές για τα μάτια, γι 'αυτό και πολλές δημοφιλείς εφαρμογές έχουν αρχίσει να περιλαμβάνουν ένα σκοτεινό θέμα - το YouTube και το Reddit πιο πρόσφατα, αν και το Facebook εξακολουθεί να μην έχει εκδώσει το δικό του, Ενδέχεται.

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

Δημιουργία των ιδιοτήτων XML

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

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

Πριν από το Lollipop δεν μπορέσαμε να προσδιορίσουμε τα χαρακτηριστικά για τα συρραπτικά, οπότε έπρεπε να καθορίσουμε τα αναγνωριστικά πόρων για τα σχεδιαγράμματα - ωστόσο, αυτό δεν συμβαίνει πλέον.

Προσθήκη των Στυλ

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

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ σχεδίαση / i_light_plholder # 33343B / item> # 8033343B # 28292e # F2F2F3 @ σχέδιο / i_dark_pholder 

Ακολουθούν τα πραγματικά στυλ για μια δεδομένη δραστηριότητα:

 # F4F4F6 # 33343Β 

Θα πρέπει να ορίσετε ένα από αυτά τα θέματα στο Manifest για τη δραστηριότητα της εφαρμογής, η οποία στην περίπτωση αυτή είναι η FeedActivity.

Σχεδίαση των απόψεων

Ακολουθεί ένα παράδειγμα μορφοποίησης των απόψεών σας - σε αυτό το παράδειγμα, για το σφάλμα ανακατεύθυνσης "Δεν βρέθηκε".

Πώς να ενεργοποιήσετε τη Δυναμική αλλαγή θέματος

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

 η δημόσια τάξη App επεκτείνει την εφαρμογή {public static final String TAG = "App"; ιδιωτική boolean isNightModeEnabled = false; @Override public void onCreate () {super.onCreate (); // Φόρτωση της κατάστασης Night Mode εδώ SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (αυτό). this.isNightModeEnabled = mPrefs.getBoolean ("NIGHT_MODE", ψευδή); } δημόσιο boolean isNightModeEnabled () {επιστροφή isNightModeEnabled; } δημόσιο κενό setIsNightModeEnabled (boolean isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

Επειδή αυτή η εμφάνιση ξεκινάει πριν από οτιδήποτε άλλο, σας επιτρέπει να καλείτε το isNightModeEnabled () Boolean όποτε θέλετε, σε οποιαδήποτε δραστηριότητα που ανήκει στην εφαρμογή μόλις αυτή ανοίξει.

 Δημόσια τελική τάξη FeedActivity επεκτείνει AppCompatActivity {ιδιωτική τελική στατική String TAG = "FeedActivity"; @Override προστατεύεται void onCreate (Bundle savedInstanceState) {if (MyApplication.getInstance (). IsNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState). setContentView (R.layout.activity_feed); }} 

Ωστόσο, εάν θέλετε να εφαρμόσετε ένα διαφορετικό θέμα από αυτό που καθορίζεται στο αρχείο δήλωσης, πρέπει να το κάνετε πριν καλέσετε τη μέθοδο parent onCreate ().

Ρύθμιση του κράτους χρησιμοποιώντας το AppCompat

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

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES). 

Εδώ, μπορείτε είτε να χρησιμοποιήσετε:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Ανάκτηση του κράτους

 AppCompatDelegate.getDefaultNightMode (); Δημόσια τελική τάξη FeedActivity επεκτείνει AppCompatActivity {ιδιωτική τελική στατική String TAG = "FeedActivity"; @Override προστατεύεται void onCreate (Bundle savedInstanceState) {αν (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState). setContentView (R.layout.activity_feed); }} 

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

Ενδιαφέροντα Άρθρα