web-dev-qa-db-fra.com

Différence entre focusable et focusableInTouchMode?

Je veux connaître la différence réelle entre eux ... Quand faut-il utiliser chacun, comment doit-il être utilisé et dans quelles situations chacun est-il utile?

Donnez des exemples et expliquez-les en détail.

71
Xar E Ahmer

Il est expliqué dans le Android Développeurs Blog: http://Android-developers.blogspot.co.at/2008/12/touch-mode.html

Les citations suivantes devraient préciser:

En soi, le mode tactile est quelque chose de très facile à comprendre car il indique simplement si la dernière interaction de l'utilisateur a été réalisée avec l'écran tactile. Par exemple, si vous utilisez un téléphone G1, la sélection d'un widget avec la boule de commande vous fera quitter le mode tactile;

...

En mode tactile, il n'y a pas de mise au point ni de sélection. Tout élément sélectionné dans une liste de dans une grille est désélectionné dès que l'utilisateur passe en mode tactile. De même, tous les widgets ciblés deviennent flous lorsque l'utilisateur passe en mode tactile.

...

Maintenant que vous savez que la mise au point n'existe pas en mode tactile, je dois expliquer que ce n'est pas tout à fait vrai. La mise au point peut exister en mode tactile, mais d’une manière très spéciale, nous appelons mise au point en mode tactile. Ce mode spécial a été créé pour les widgets recevant la saisie de texte, tels que EditText ou, lorsque le filtrage est activé, ListView.

...

Focusable en mode tactile est une propriété que vous pouvez définir vous-même à partir de code ou de XML. Cependant, il devrait être utilisé avec parcimonie et uniquement dans des situations très spécifiques, car il rompt la cohérence avec le comportement normal de Android). Un jeu est un bon exemple d'application qui permet de tirer le meilleur parti du focusable en contact. MapView, s’il est utilisé en plein écran, comme dans Google Maps, est un autre bon exemple d’utilisation correcte de la mise au point en mode tactile.

64
Apfelsaft

Donnez des exemples et expliquez-les en détail

Je vais vous donner ma propre expérience:

J'avais une application Google TV qui avait une activité avec beaucoup de boutons ImageButtons.

Je voulais que les ImageButtons soient sélectionnables.

Ainsi, si une personne clique dessus avec la souris ou la télécommande, elle devient uniquement sélectionnée (Surlignée dans mon cas). Ensuite, si l'utilisateur appuie sur le ImageButton sélectionné, l'action se déclenche. Ce comportement exact a été obtenu en activant la propriété focusableInTouchMode par le biais de la présentation XML.

Tout ce que j'avais à faire était de définir un onClickListener ordinaire pour les boutons Image et le tour est joué!

Je n'ai pas vérifié mon application sur le combiné, mais j'imagine que cela donnerait un résultat familier.

MODIFIER

Quand?

Je vous ai déjà expliqué un cas d'utilisation que j'ai testé: lorsque vous voulez que le onClickListener de votre bouton déclenche une action lors de votre deuxième clic, après avoir cliqué et sélectionné le Button.

J'ai utilisé le premier clic pour obtenir le "focus" et afficher une animation Zoom-In scale Up sur mon bouton.

Comment?

Il suffit de définir la propriété du bouton focusableInTouchMode sur true dans votre fichier de présentation XML.

9
Behnam

Focalisé est un état de vue et peut généralement être modifié avec le trackball et le dpad. Votre vue peut avoir un arrière-plan différent lorsque l'état est ciblé.

Focalisable en mode tactile permet à la vue de se focaliser lorsque l'utilisateur touche la vue, un bon exemple de ce type de composant est EditText.

Avec Button ou n'importe quel composant pressé, l'état pressé est généralement ce qui vous intéresse.

5
Niko

Les utilisateurs peuvent interagir avec leurs appareils à l’aide de touches ou de boutons matériels ou en touchant l’écran. Toucher l'écran met l'appareil en mode tactile. L'utilisateur peut ensuite interagir avec celui-ci en touchant les boutons virtuels à l'écran, les images, etc.

Pour vérifier si le périphérique est en mode tactile, appelez la méthode isInTouchMode () de la classe View.

3
M_ Fa