Question

Aperçu J'utilise une classe ListField pour afficher un ensemble d'informations verticalement. Chaque ligne de cette ListField prend 2 / 5e de la hauteur de l'écran.

En tant que tel, lors du défilement à l'élément suivant (en particulier lors de l'affichage d'un élément partiellement occulté par les contraintes de la hauteur de l'écran), l'ensemble défilement / l'action de mise au point est très saccadée.

Je voudrais corriger ce saccades en mettant en place un défilement fluide entre défilement / mise au point des actions. Est-ce possible avec la classe ListField?

Exemple Voici une capture d'écran affichant la question à la main.


(source: perkmobile.com )

Une fois que l'utilisateur fait défiler vers le bas à la ligne ListFieldTHREE, cette ligne est « défile » en vue d'une manière très saccadée, pas de défilement lisse. Je sais faire la hauteur de ligne plus petite atténuera ce problème, mais je ne wan pas aller dans ce sens.

Question principale Comment dois-je faire le défilement régulier dans un ListField?

Était-ce utile?

La solution

En supposant que vous voulez le comportement que l'utilisateur fait défiler vers le bas 1 clic de la boule de commande, et l'élément suivant est alors mis en évidence, mais au lieu d'un défilement immédiat vous sauter obtenir un rouleau lisse pour rendre le nouvel élément visible (comme dans Google application Gmail pour BlackBerry), vous devrez rouler votre propre composant.

L'idée de base est de sous-classe VerticalFieldManager, puis sur un rouleau (clé de la méthode MoveFocus) vous avez une mise à jour de thread séparé une variable de position verticale, et invalider le gestionnaire à plusieurs reprises.

Le fil est nécessaire parce que si vous pensez à ce que vous êtes au volant d'une animation hors d'un événement utilisateur - le défilement lisse est vraiment une animation sur le BlackBerry, car il dure plus longtemps que l'événement qui a déclenché

Je suis un peu vague sur les détails, et ce n'est pas une chose très facile à faire, donc nous espérons que cela aide un peu.

Autres conseils

Il n'y a pas un moyen de l'API officielle de le faire, pour autant que je sache, mais il peut probablement être esquivé grâce à une utilisation intelligente de NullField (Field.FOCUSABLE), qui est combien sur mesure BlackBerry UIs comportement forcé la mise en œuvre de mise au point .

Une approche serait de déduire chaque « élément de la liste » d'une classe qui entrelace NullFields vario avec le contenu visible de l'élément de la liste elle-même - ce serait essentiellement forcer le système de défilement à « sauter » à des intervalles plus petits plutôt que les grandes intervalles dictés par les divisions naturelles entre les éléments de la liste, et auraient l'avantage de côté de ne pas modifier le positionnement visible du contenu de l'élément de liste.

sauf si vous voulez remplacer les comment les peintures ListField ou créer votre propre emballage, vous aurez toujours ce problème, c'est parce que chaque ligne est toujours visible lors du défilement. Essayez d'utiliser à la place labelField.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top