Android: Barre De Défilement De L'Animation?
Je suis un newbie dans le développement Android, et je voudrais juste savoir un peu plus sur la Molette ou des widgets android.widget de.Scroller). Comment est-il animer la vue? Peut l'Animation de l'objet, si elle existe, y accéder? Si oui, comment? J'ai lu le code source, mais il ne pouvait trouver aucun indice, ou peut-être que je suis trop nouveau?
Je voulais juste faire certaines opérations après une barre de défilement, des finitions de défilement, quelque chose comme
m_scroller.getAnimation().setAnimationListener(...);
Vous devez vous connecter pour publier un commentaire.
La Molette widget n'a pas réellement faire la plupart du travail pour vous. Il fait feu de tout les rappels, il n'a pas d'animer, ça c'est juste, répond aux divers appels de méthode.
Alors à quoi bon? Eh bien, il fait tout le calcul, par exemple, un fling pour vous, ce qui est à portée de main. Donc, ce que vous pouvez généralement faire est de créer un Exécutable qui à plusieurs reprises, demande à la barre de défilement, "Que dois-je faire défiler position maintenant? Sommes-nous fait jetant encore?" Puis vous validez de nouveau praticable que sur un Gestionnaire (généralement sur le point de Vue) jusqu'à ce que le flirt est fait.
Voici un exemple à partir d'un Fragment, je travaille actuellement:
Les détails de l'utilisation de la Molette.startScroll devrait être similaire.
isFlinging()
de retour de méthode!scroller.isFinished()
? Soit ça, ou il doit être renomméisFinished()
. Excellent exemple bien 🙂comme Bill Phillips a dit, Scroller est juste un kit de développement Android aide à calculer le défilement des positions. J'ai plein de travail exemple ici:
La démo de vue personnalisée ci-dessus va revenir à la position initiale après que l'utilisateur a communiqué la vue. Lorsque l'utilisateur de libération de la vue, puis startScroll() la méthode est invoquée et on peut savoir ce que la valeur de la distance devrait être pour chaque message post.
De travail complet exemple: Github
Grande réponse ci-dessus. Scroller#startScroll(...) en effet fonctionne de la même manière.
Par exemple, la source d'un défilement TextView à:
http://bear-polka.blogspot.com/2009/01/scrolltextview-scrolling-textview-for.html
Définit un Curseur sur un TextView à l'aide de TextView#setScroller(Scroller).
La source du SDK du TextView à:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/widget/TextView.java#TextView.0mScroller
Montre que TextView#setScroller(Scroller) définit un champ de classe qui est utilisée dans des situations comme bringPointIntoView(int) où Scroller#scrollTo(int, int, int, int) est appelée.
bringPointIntoView() ajuste mScrollX et mScrollY (avec quelques SDK de la fragmentation de code), puis appelle invalidate(). Le point de tout cela est que mScrollX et mScrollY sont utilisés dans des méthodes comme onPreDraw(...) pour influer sur la position de la contenu de la vue.
Nous pouvons étendre l'
Scroller
classe alors intercepter correspondant de l'animation de démarrage des méthodes pour la marque qui a commencé, après computeScrollOffset() return false ce qui signifie animation fini de la valeur, nous en informer par un Auditeur de l'appelant :ScrollerImpl
?