ViewPager détecter lorsque l'utilisateur est en train d'essayer de glisser hors des limites du terrain
Je suis en utilisant le ViewPager composé de 6 pages à afficher certaines données. Je veux être en mesure d'appeler une méthode, lorsque l'utilisateur est à la position 0 et tente de les faire glisser vers la droite (vers l'arrière), ou à la position 5 et tente de les faire glisser vers la gauche (vers l'avant), même si plus de pages existent pour ces directions. Est-il possible que je peut écouter ces scénarios?
- Salut à tous, j'ai utilisé le code, mais l'onSwipeOutLister méthode n'est pas appelée dans mon activité, même si j'ai appeler la méthode. veuillez voir ma question posté stackoverflow.com/questions/25889115/...
Vous devez vous connecter pour publier un commentaire.
Étendre ViewPager et remplacer
onInterceptTouchEvent()
comme ceci:setOnSwipeOutListener()
dans votre activité. Je n'ai pas d'exécuter ce code, donc il peut avoir besoin de faire quelques ajustements.CustomViewPager
- stackoverflow.com/a/31275349/1617737La réponse de Flávio Faria ne fonctionne pas pour moi. Le seul événement que je reçois dans onInterceptTouchEvent() est ACTION_DOWN événement. J'ai donc remplacer la onTouchEvent() la méthode pour le faire fonctionner.
Voici le code. Notez que je n'ai que onSwipeOutAtEnd() dans l'écouteur. Vous pouvez ajouter votre code à l'appui de glisser vers la gauche sur la première vier.
ACTION_DOWN
dansonInterceptTouchEvent()
si vous retourneztrue
à partir de cette méthode.move
dépend du contenu de la radiomessagerie. J'ai utilisé pour ajouterLinearLayout
et je n'étais pas la réception de la déplacer. Quand j'ai enveloppé la mise en page dansScrollView
puis il a commencé à travailler un peu plus complexe de mise en page, cependant.Comment sur la création d'une OnPageChangeListener sur votre ViewPager? Ensuite, vous pouvez modifier vos flèches de navigation ou que ce soit dans le onPageScrolled.
setOnPageChangeListener()
est déconseillée dans les nouveaux Kits de développement logiciel, et a été remplacé paraddOnPageChangeListener()
.Merci beaucoup à @Flavio, bien que j'ai dû faire quelques modifications à son code, parce que les rappels ont été les méthodes de cuisson à deux reprises, aussi j'ai ajouté le code pour vérifier s'il a été inscrit à l'écoute, pour éviter l'application crash quand il n'y a pas d'écouteur. C'est le code que j'ai utilisé pour le faire travailler, avec deux onSwipeOutAtStart et onSwipeOutAtEnd:
implements CustomViewPager.OnSwipeOutListener
et, aussi, dans votre activité, n'oubliez pas d'appelermyCustomViewPager.setOnSwipeOutListener(this);
sur votre CustomViewPager objet.Je me demande comment cela a fonctionné pour d'autres, il ne fonctionne pas pour moi.
onInterceptTouchEvent()
ne prendACTION_DOWN
événement. Alors queonTouchEvent()
ne prend qu'un seul événement à la fois, soitACTION_DOWN
,ACTION_UP
et les autres.J'ai dû remplacer les deux
onInterceptTouchEvent()
etonTouchEvent()
pour le faire fonctionner correctement. LeACTION_DOWN
deonInterceptTouchEvent
attrape initialeX
point de contact, etOnTouchEvent
attrape finalX2
point. Qui je l'ai comparée à détecter le sens de balayage.Obtenir initiale X la valeur de la touche:
De tjlian616 du code, le
onTouchEvent()
écouteACTION_UP
et arrive c'est le dernierX
Valeur.Alors que j'ai mis mon actuelle de l'élément de valeur à 0 pour obtenir de balayage au début de l'auditeur. Contre elle et d'ajouter tiré de l'auditeur.