Non è una soluzione perfetta, ma ecco un modo per controllare il senso colpo quando si inizia a strisciare:
new ViewPager.OnPageChangeListener() {
private static final float thresholdOffset = 0.5f;
private boolean scrollStarted, checkDirection;
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (checkDirection) {
if (thresholdOffset > positionOffset) {
Log.i(C.TAG, "going left");
} else {
Log.i(C.TAG, "going right");
}
checkDirection = false;
}
}
@Override
public void onPageSelected(int position) {}
@Override
public void onPageScrollStateChanged(int state) {
if (!scrollStarted && state == ViewPager.SCROLL_STATE_DRAGGING) {
scrollStarted = true;
checkDirection = true;
} else {
scrollStarted = false;
}
}
});
EDIT: c'è un approccio più elegante che comporta l'uso di un ViewPager.PageTransformer
e controllando che sia intervalli di posizione :
...
myViewPager.setPageTransformer(true, new PageTransformer());
...
public class PageTransformer implements ViewPager.PageTransformer {
public void transformPage(View view, float position) {
if (position < -1) {
// [-00,-1): the page is way off-screen to the left.
} else if (position <= 1) {
// [-1,1]: the page is "centered"
} else {
// (1,+00]: the page is way off-screen to the right.
}
}
}
si può imparare di più da: Using ViewPager for Screen Slides
ma dare risultato una volta schermo farsi scorrere completamente ... c'è un modo per come inizio lo scorrimento? – CoDe
controlla la mia risposta, potrebbe non essere la soluzione perfetta ma è un inizio;) – GuilhE
'setOnPageChangeListener' è deprecato ora, usa' ViewPager.addOnPageChangeListener' invece. –