En outre, la méthode transformPage est-elle appelée simultanément sur les vues entrantes et sortantes? Comment créer une animation pour les vues sortantes à gauche et une animation pour les vues entrantes à partir de la droite?Comment détecter qu'une page a fini de glisser dans la méthode ViewPager.PageTransformer.transformPage?
0
A
Répondre
-1
Oui, la méthode transformPage est appelée simultanément sur la vue. Vous obtenez l'instance de vue actuelle dans le premier paramètre de la méthode transformPage.
public void transformPage(View view, float position) {...}
Le deuxième paramètre est la position de la vue. Comme expliqué dans la documentation
Position de la page par rapport à l'avant-centre actuel * position du pager. 0 est avant et centre. 1 correspond à une position complète de page * à droite, et -1 correspond à une position de page vers la gauche.
Un simple FADIN et la transformation FadOut peut être appliqué avec le code suivant
public class MyFadePageTransformer implements ViewPager.PageTransformer {
public void transformPage(View view, float position) {
//You can set Tag to view object and getTag to know current view
//Log.d("Page Transform", "page " + view.getTag().toString());
if (position < -1 || position > 1) {
view.setAlpha(0);
}
else if (position <= 0 || position <= 1) {
// Calculate alpha. Position is decimal in [-1,0] or [0,1]
float alpha = (position <= 0) ? position + 1 : 1 - position;
view.setAlpha(alpha);
}
else if (position == 0) {
view.setAlpha(1);
}
}
}
ajouter ensuite PageTransformer à ViewPager
mViewPager.setPageTransformer(false, new MyFadePageTransformer());