web-dev-qa-db-fra.com

«Clavier» personnalisé intégré dans une application sur Android

J'ai cherché à créer un clavier personnalisé pour mon application. Au début, j'ai commencé à regarder le SoftKeyboard pour les exemples de SDK, mais la lecture du Android Developer Group m'a conduit à ce post:

Ce n'est vraiment pas ainsi que le cadre de la méthode d'entrée est censé fonctionner. Un IME doit être une fonction d'entrée générique, pas pour une application particulière. Si vous avez besoin d'une entrée spécifique à l'application, vous devez l'intégrer dans votre interface utilisateur plutôt que de la pousser vers un IME générique.

Comment créer une entrée spécifique à l'application dans l'interface utilisateur? Je veux dire, y a-t-il un moyen d'étendre l'application Keyboard ou quelque chose et de l'utiliser uniquement dans mon application?

Fonctionnalités nécessaires pour le clavier:

  • Touche Maj pour afficher d'autres touches
  • Clés spéciales comme racine carrée ou PI
  • etc.

PS: une mauvaise solution pourrait être de faire un tableau d'ImageButton par exemple, mais je voulais faire quelque chose de propre.

33
OlivierM

Je ne suis pas vraiment sûr qu'il y ait une solution simple à cela (dans la mesure où il est même possible de comprendre la vraie raison derrière la question d'origine).

Comme il est cité dans la question d'origine:

Si vous avez besoin d'une entrée spécifique à l'application, vous devez l'intégrer dans votre interface utilisateur plutôt que de la pousser vers un IME générique.

Qu'est-ce que cela signifie, c'est pas que vous devriez essayer d'intégrer dans ces applications en étendant ou modifiant le clavier virtuel du téléphone. Il existe donc de nombreux claviers logiciels différents (et, fondamentalement, le clavier logiciel est juste une autre application), car la plupart des fabricants de téléphones créent leur propre version et les gens téléchargent des claviers tiers (tels que Swype ou SwiftKey etc.), et je ne peux pas imaginer qu'il existe un moyen pour vous de "pirater" ceux pour ajouter quelques boutons ou tout ce que vous voulez (ce qui pourrait également être un trou de sécurité majeur, une autre raison pour laquelle ce n'est probablement pas le cas). t possible).

Au lieu de cela, la citation ci-dessus suggère que vous devez créer une forme d'entrée autre en plus le clavier. Un tel exemple, et un très bon si je peux ajouter, est à quoi ressemble RealCalc Scientific Calculator :

RealCalc Scientific Calculator

Maintenant, ce n'est pas open source, donc je ne peux que deviner à quoi ressemble le code (mais cela ne devrait pas être trop difficile à deviner non plus): dans sa forme la plus simple, ce n'est qu'une grille avec beaucoup de boutons . Chaque bouton gère l'événement onClick, ce qui signifie effectuer une sorte d'action (changer l'étiquette sur certains autres boutons, afficher un menu, afficher du texte dans l'étiquette supérieure ou autre), et c'est probablement à peu près tout. Et bien sûr, le clavier logiciel du téléphone n'est jamais affiché (car vous n'avez pas besoin d'un clavier avec tous ces boutons (et il n'y a pas non plus de champs de saisie pour écrire quoi que ce soit)).

Tout se résume à la citation déjà mentionnée: Si vous avez besoin d'une entrée spécifique à l'application, vous devez l'intégrer dans votre interface utilisateur . Ou en d'autres termes: créez des boutons (et n'affichez pas le clavier logiciel si vous n'en avez pas besoin) et faites bouger les choses lorsque vous cliquez dessus.


Et juste pour l'avoir mentionné: si vous faites voulez créer votre propre IME (qui je crois fermement que c'est pas le cas ici), vous devriez avoir un regardez les ressources suivantes:

19
Julian

À mon humble avis, vous devriez jeter un coup d'œil au début de la référence sur le clavier et la vue du clavier http://developer.Android.com/reference/Android/inputmethodservice/Keyboard.html et http://developer.Android.com/reference/Android/inputmethodservice/KeyboardView.html .

Vous pouvez y voir un exemple de définition de clavier à l'aide d'un fichier XML. Je pense que c'est ce que vous recherchez.

10
sebap123

Comme mentionné par @ sebap123 Keyboard et KeyboardView la classe est celle que vous devez utiliser,

En outre, pour la mise en œuvre, voici un guide détaillé rapide .

2
asadnwfp