Différence entre focusable et focusableInTouchMode?

Je veux connaître la différence réelle entre eux … Quand chacun devrait-il être utilisé, comment chacun devrait-il être utilisé et dans quelle situation chacun est-il utile?

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

Il est expliqué dans le blog des développeurs Android: http://android-developers.blogspot.co.at/2008/12/touch-mode.html

Les citations suivantes devraient clarifier:

En soi, le mode tactile est 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 trackball vous permettra de sortir du mode tactile;

En mode tactile, il n’y a pas de focus et pas de sélection. Tout élément sélectionné dans une liste dans une grid 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 le focus n’existe pas en mode tactile, je dois vous expliquer que ce n’est pas tout à fait vrai. La mise au point peut exister en mode tactile, mais de manière très spéciale, nous appelons focalisable en mode tactile. Ce mode spécial a été créé pour les widgets qui reçoivent du texte, comme 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 XML. Cependant, il devrait être utilisé avec parcimonie et uniquement dans des situations très spécifiques, car il brise la cohérence avec le comportement normal d’Android. Un jeu est un bon exemple d’une application qui peut faire bon usage de la propriété focusable en mode tactile. MapView, s’il est utilisé en mode plein écran comme dans Google Maps, est un autre bon exemple d’utilisation de focusable en mode tactile.

Donne un exemple et explique-les en détail

Je vais vous donner ma propre expérience:

J’ai eu une application Google TV qui avait une activité avec beaucoup de ImageButtons.

Je voulais que les ImageButtons soient sélectionnables.

Donc, si une personne clique dessus avec la souris ou la télécommande, elle ne sera sélectionnée que (mise en surbrillance 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 via la mise en page XML.

Tout ce que j’avais à faire était de mettre un onClickListener ordinaire pour les ImageButtons et le tour est joué!

Je n’ai pas vérifié mon application sur le combiné mais je suppose que cela donnerait un résultat familier.

MODIFIER

Quand?

Je vous ai dit un cas d’utilisation que j’ai testé: lorsque vous voulez que le bouton onClickListener 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 gagner “focus” et afficher une animation Zoom-In à l’échelle de mon bouton.

Comment?

Définissez simplement la propriété focusableInTouchMode du bouton sur true dans votre fichier de mise en page XML.

La focalisation est un état de vue et la focalisation peut généralement être modifiée avec le trackball et le dpad. Votre vue peut avoir un arrière-plan différent lorsque l’état est concentré.

La mise au point en mode tactile permet de voir le focus lorsque l’utilisateur touche la vue. Un bon exemple de ce type de composant est EditText .

Avec Button ou tout élément pressé par un composant cliquable est généralement ce qui vous intéresse.

Les utilisateurs peuvent interagir avec leurs appareils en utilisant des touches ou des boutons matériels ou en touchant l’écran. Toucher l’écran met l’appareil en mode tactile. L’utilisateur peut alors interagir avec lui 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.