2010-10-19 50 views
1

Tout d'abord, je réalise que cela ne suit aucune convention particulière. Je me demande simplement si c'est possible.Gestes ListView et multi-touch

Je voudrais donner à mes utilisateurs la possibilité d'effectuer une action sur de nombreux éléments dans un ListView. Mes éléments ListView contiennent déjà une case à cocher pour quelque chose de différent; et l'ajout d'une autre case n'est pas une option (ça aurait l'air moche?).

Je me demandais s'il était possible de mettre en évidence par programme plusieurs éléments en déterminant quels éléments étaient couverts par un balayage à deux doigts.

Cela nécessiterait un certain nombre de choses:

1) de ListView Android devrait être capable de déterminer la différence entre un balayage à deux doigts et un coup seul doigt. 2) Je devrais être en mesure de clarifier quel code un balayage à deux doigts invoque. 3) Idéalement, si je balaie deux doigts et que mes doigts atteignent le bas de l'écran, le ListView commence à défiler; donc je pourrais continuer à mettre en évidence les éléments qui sont à l'origine hors de l'écran. 4) Le ListView devrait être capable de mettre en évidence plus d'une option.

Le numéro 4 pourrait probablement être piraté tant que je pourrais déterminer quels éléments ont été passés avec les deux doigts. Je pourrais bidouiller ma propre "sélection". Après cela, je fournirais certaines fonctionnalités via le bouton Menu pour faire quelque chose à ces éléments en surbrillance.

Est-ce que cela semble possible? Qu'est-ce que tu penses?

Répondre

1

# 1 et # 2 pourraient être traitées via GestureDetector, en couches sur votre ListView. Cependant, cela va probablement à l'encontre de # 3. # 4 ne serait probablement pas géré par l'état standard de "sélection" Android, mais vous pourriez ajuster manuellement les vues (par exemple, afficher une icône précédemment invisible, changer la couleur d'arrière-plan de quelque chose).

# 3, cependant, se sent vraiment comme il faudrait des modifications à ListView lui-même, et qui me semble être plutôt désagréable, étant donné le code ListView (et AbsListView). Une solution consiste à interpréter vos gestes en tant qu'additif (un nouveau geste à deux doigts n'efface pas le multi-sélection précédent, mais en ajoute davantage à l'existant), en utilisant un choix de menu pour effacer les sélections précédentes. . Ensuite, l'utilisateur peut en sélectionner, en faire défiler, en sélectionner d'autres, etc.

Tout cela étant dit, je pense que ce ne sera pas très détectable. Vous supposez que les gens vont découvrir les gestes de RTFM, et nous savons tous les deux à quel point fonctionne que fonctionne. Avoir cela en option est cool, mais assurez-vous que tout ce qui est fait de cette façon peut également être fait par d'autres moyens plus conventionnels.

+0

Merci pour votre réponse. Je vais jouer avec quand j'ai le temps et je vous ferai savoir si je viens avec quelque chose – Andrew