Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Δημιουργήστε ένα Προσαρμοσμένο Πληκτρολόγιο για το Android

Difficulty:BeginnerLength:LongLanguages:

Greek (ελληνικά) translation by Iris Diakoumi (you can also view the original English article)

Final product image
What You'll Be Creating

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

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

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

1. Προαπαιτούμενα

Θα χρειαστείτε εγκατεστημένο το Eclipse ADT Bundle. Μπορείτε να το κατεβάσετε από την ιστοσελίδα Android Developer.

2. Δημιουργήστε ένα Nέο Έργο

Ξεκινήστε το Eclipse και δημιουργήστε μια νέα εφαρμογή Android Καλέστε αυτήν την εφαρμογή, SimpleKeyboard. Βεβαιωθείτε ότι έχετε επιλέξει ένα μοναδικό όνομα πακέτου. Ορίστε το ελάχιστο απαιτούμενο SDK σε Android 2.2 και ορίστε το target SDK σε Android 4.4.

Αυτό το app δε θα έχει καμία δραστηριότητα, έτσι, καταργήστε την επιλογή Create Activity και κάντε κλικ στο Finish.

3. Eπεξεργαστείτε το Manifest

Ένα μαλακό πληκτρολόγιο θεωρείται ως ένα Input Method Editor (IME) από το λειτουργικό σύστημα Android. Ένα πρόγραμμα IME δηλώνεται ως Service στο AndroidManifest.xml που χρησιμοποιεί την άδεια BIND_INPUT_METHOD και απαντά στην δράση android.view.InputMethod.

Προσθέστε τις ακόλουθες γραμμές στην ετικέτα application του manifest:

4. Δημιουργήστε το method.xml

Η ετικέτα service στο αρχείο manifest περιέχει μια ετικέτα meta-data που αναφέρεται σε ένα αρχείο XML που ονομάζεται method.xml. Χωρίς αυτό το αρχείο, το λειτουργικό σύστημα Android δεν θα αναγνωρίσει την υπηρεσία μας Service ως μια έγκυρη υπηρεσία IME. Το αρχείο περιέχει λεπτομέρειες σχετικά με τη μέθοδο εισαγωγής στοιχείων και τις υποκατηγορίες της. Για το πληκτρολόγιο μας, μπορούμε να ορίσουμε μια ενιαία υποκατηγορία για το locale en_US. Δημιουργήστε το res/xml κατάλογο εάν δεν υπάρχει, και προσθέστε το αρχείο method.xml σε αυτό. Τα περιεχόμενα του αρχείου πρέπει να είναι:

5. Επεξεργαστείτε το  strings.xml

Οι συμβολοσειρές που χρησιμοποιεί αυτό το app ορίζονται στο αρχείο res/values/strings.xml. Θα χρειαστούμε τρεις συμβολοσειρές:

  • το όνομα της εφαρμογής
  • την ετικέτα του IME
  • την ετικέτα της υποκατηγορίας του IME

Ενημερώστε το strings.xml σας, έτσι ώστε να έχει το ακόλουθο περιεχόμενο:

6. Ορίστε τη διάταξη του πληκτρολογίου

Η διάταξη του πληκτρολογίου μας περιέχει μόνο ένα KeyboardView. Το χαρακτηριστικό layout_alignParentBottom έχει οριστεί σε true, έτσι ώστε το πληκτρολόγιο να εμφανίζεται στο κάτω μέρος της οθόνης.

Δημιουργήστε ένα αρχείο που ονομάζεται res/layout/keyboard.xml και αντικαταστήστε το περιεχόμενό του με το ακόλουθο:

Το keyPreviewLayout είναι η διάταξη ενός σύντομου αναδυόμενου παράθυρο που εμφανίζεται όποτε πατιέται ένα πλήκτρο στο πληκτρολόγιο. Περιέχει ένα μόνο TextView. Δημιουργήστε ένα αρχείο που ονομάζεται res/layout/preview.xml και προσθέστε τα παρακάτω σε αυτό:

6. Ορίστε τα Πλήκτρα του Πληκτρολογίου

Οι λεπτομέρειες για τα πλήκτρα του πληκτρολογίου και τις θέσεις τους καθορίζονται σε ένα αρχείο XML. Κάθε πλήκτρο έχει τα ακόλουθα χαρακτηριστικά:

  • keyLabel: αυτή η ιδιότητα περιέχει το κείμενο που εμφανίζεται στο πλήκτρο.
  • codes: αυτή η ιδιότητα περιέχει τις τιμές unicode από τους χαρακτήρες που αντιπροσωπεύει το πλήκτρο.

Για παράδειγμα, για να ορίσετε ένα πλήκτρο για το γράμμα Α, το χαρακτηριστικό codes θα πρέπει να έχει την τιμή 97 και το χαρακτηριστικό keyLabel πρέπει να οριστεί σε Α.

Εάν περισσότεροι από ένας κωδικοί είναι συσχετισμένοι με ένα πλήκτρο τότε, ο χαρακτήρας που αντιπροσωπεύει το πλήκτρο θα εξαρτάται από τον αριθμό των χτυπημάτων που λαμβάνει το πλήκτρο. Για παράδειγμα, εάν ένα κλειδί έχει τους κωδικούς 63, 33 και 58:

  • ένα πάτημα στο πλήκτρο έχει ως αποτέλεσμα το χαρακτήρα ?
  • δύο πατήματα σε γρήγορη διαδοχή έχουν ως αποτέλεσμα το χαρακτήρα !
  • τρία πατήματα σε γρήγορη διαδοχή έχουν ως αποτέλεσμα το χαρακτήρα :

Ένα πλήκτρο μπορεί να έχει επίσης μερικά προαιρετικά  χαρακτηριστικά:

  • keyEdgeFlags: Αυτό το χαρακτηριστικό μπορεί να πάρει την τιμή left ή right. Αυτό το χαρακτηριστικό προστίθεται συνήθως στα πλήκτρα τελείως αριστερά και δεξιά μιας γραμμής.
  • keyWidth: Αυτή η ιδιότητα καθορίζει το πλάτος ενός πλήκτρου. Συνήθως ορίζεται ως μια ποσοστιαία τιμή.
  • isRepeatable: Εάν αυτή η ιδιότητα έχει οριστεί σε true, κρατώντας πατημένο το πλήκτρο θα επαναλάβετε την ενέργεια του πλήκτρου πολλές φορές. Συνήθως ορίζεται στην τιμή true για τα πλήκτρα delete και spacebar.

Τα πλήκτρα του πληκτρολογίου ομαδοποιούνται ως σειρές. Είναι καλή πρακτική να περιορίσετε τον αριθμό των πλήκτρων σε μια γραμμή με μέγιστο δέκα, με κάθε πλήκτρο να έχει πλάτος ίσο με το 10% του πληκτρολογίου. Το ύψος των πλήκτρων έχει οριστεί σε 60dp σε αυτό το σεμινάριο. Αυτή η τιμή μπορεί να ρυθμιστεί, αλλά δεν συνιστώνται τιμές μικρότερες από 48dp. Πληκτρολόγιο μας θα έχει πέντε σειρές πλήκτρων.

Τώρα, μπορούμε να ξεκινήσουμε να σχεδιάζουμε το πληκτρολόγιο. Δημιουργήστε ένα νέο αρχείο που ονομάζεται res/xml/qwerty.xml και αντικαταστήστε το περιεχόμενό του με τα ακόλουθα:

Μπορεί να έχετε παρατηρήσει ότι μερικά πλήκτρα έχουν αρνητικές τιμές για το χαρακτηριστικό codes. Οι αρνητικές τιμές είναι ίσες με προκαθορισμένες σταθερές της κλάσης Keyboard. Για παράδειγμα, η τιμή -5 είναι ίση με την αξία του Keyboard.KEYCODE_DELETE.

7. Δημιουργήστε μια Κλάση Service

Δημιουργήστε μια νέα κλάση Java και ονομάστε τη SimpleIME.java. Η κλάση πρέπει να επεκτείνει την κλάση InputMethodService και να υλοποιεί τη διασύνδεση OnKeyboardActionListener. Η διασύνδεση OnKeyboardActionListener περιέχει τις μεθόδους που καλούνται όταν τα πλήκτρα του πληκτρολογίου πατιούνται ή πιέζονται.

Η κλάση SimpleIME πρέπει να έχουν τρεις μεταβλητές μελών:

  • μια KeyboardView που αναφέρεται στην προβολή που ορίζεται στη διάταξη
  • ένα στιγμιότυπο του Keyboard που ανατίθεται στο KeyboardView
  • μια τιμή boolean που μας λέει αν το caps lock είναι ενεργοποιημένο

Μετά από τη δήλωση των μεταβλητών αυτών και προσθέτοντας τις μεθόδους της διεπαφής OnKeyboardActionListener, η SimpleIME κλάση πρέπει να μοιάζει με αυτό:

Όταν δημιουργηθεί το πληκτρολόγιο, καλείται η μέθοδος onCreateInputView. Όλες οι μεταβλητές της Service μπορεί να αρχικοποιηθεί εδώ. Ενημερώστε την υλοποίηση της μεθόδου onCreateInputView, όπως φαίνεται παρακάτω:

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

Τέλος, ενημερώστε τη μέθοδο onKey, έτσι ώστε η εφαρμογή πληκτρολογίου μας να μπορεί να επικοινωνεί με πεδία εισαγωγής (συνήθως προβολές EditText) από άλλες εφαρμογές.

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

  • commitText για να προσθέσουμε έναν ή περισσότερους χαρακτήρες στο πεδίο εισαγωγής
  • deleteSurroundingText για να διαγράψουμε έναν ή περισσότερους χαρακτήρες από το πεδίο εισαγωγής
  • sendKeyEvent για να να στείλουμε γεγονότα, όπως το KEYCODE_ENTER, στην εξωτερική εφαρμογή

Όποτε ένας χρήστης πιέσει ένα πλήκτρο στο μαλακό πληκτρολόγιο, η μέθοδος onKey καλείται με την unicode τιμή του πλήκτρου ως μία από τις παραμέτρους. Με βάση αυτήν την τιμή, το πληκτρολόγιο εκτελεί μία από τις ακόλουθες ενέργειες:

  • Αν ο κωδικός είναι KEYCODE_DELETE, ένα χαρακτήρα στα αριστερά του δρομέα διαγράφεται χρησιμοποιώντας τη μέθοδο deleteSurroundingText.
  • Αν ο κωδικός είναι KEYCODE_DONE, ενεργοποιείται ένα συμβάν πλήκτρου KEYCODE_ENTER.
  • Αν ο κωδικός είναι KEYCODE_SHIFT, η τιμή της μεταβλητής caps αλλάζει και ενημερώνεται η κατάσταση shift του πληκτρολογίου, χρησιμοποιώντας τη μέθοδο setShifted. Το πληκτρολόγιο πρέπει να επανασχεδιαστεί όταν η κατάσταση αλλάζει έτσι ώστε να ενημερώνονται οι ετικέτες των πλήκτρων. Η μέθοδος invalidateAllKeys χρησιμοποιείται για να επανασχεδιαστούν όλα τα πλήκτρα.
  • Για όλους τους άλλους κωδικούς, ο κωδικός απλά μετατρέπεται σε ένα χαρακτήρα και αποστέλλεται στο πεδίο εισαγωγής. Αν ο κωδικός αντιπροσωπεύει ένα γράμμα του αλφαβήτου και η μεταβλητή caps έχει οριστεί σε true, τότε ο χαρακτήρας μετατρέπεται σε κεφαλαία.

Ενημερώστε τη μέθοδο onKey, έτσι ώστε να μοιάζει κάπως έτσι:

8. Τεστάροντας το Πληκτρολόγιο

Το μαλακό πληκτρολόγιο είναι τώρα έτοιμο να δοκιμαστεί. Μεταγλωττίστε και εκτελέστε το σε μια συσκευή Android. Αυτό το app δεν έχει Activity, πράγμα που σημαίνει ότι δεν θα εμφανιστεί στο launcher. Για να το χρησιμοποιήσετε, θα πρέπει πρώτα να ενεργοποιηθεί στις ρυθμίσεις Settings της συσκευής.

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

Συμπέρασμα

Σε αυτό το σεμινάριο, μάθατε πώς να δημιουργήσετε μια εφαρμογή προσαρμοσμένου πληκτρολογίου από το μηδέν. Για να αλλάξετε την εμφάνιση και την αίσθηση του πληκτρολογίου σας, το μόνο που έχετε να κάνετε είναι να προσθέσετε επιπλέον παραμετροποίηση στα αρχεία res/layout/keyboard.xml και res/layout/preview.xml. Για να αλλάξετε τις θέσεις των πλήκτρων, ενημερώστε το αρχείο res/xml/qwerty.xml. Για να προσθέσετε περισσότερες δυνατότητες στο πληκτρολόγιό σας, ανατρέξτε στην τεκμηρίωση προγραμματιστή.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.