Meine Lösung basiert auf benkc, aber die Scroll-Animation der ersten und letzten Seite ist deaktiviert, und wenn die Seiten auf die richtige Seite "gescrollt" werden, ist die Scroll-Animation wieder aktiviert. Dieses Schema kann den ersten Nachteil lösen.
aber mein ViewPager.setCurrentItem(position, false)
Ergebnis ist immer noch Scroll-Animation, so dass ich Animationen, die zu schnell zu sehen ist implementiert.
die schnelle Scrollen Animation wie diese, kann den Kommentar nichts dagegen, nur mein Code diese Methode nicht verwenden: Aktivität
public class FixedSpeedScroller extends Scroller {
private int mDuration = 0;
public FixedSpeedScroller(Context context) {
super(context);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
super.startScroll(startX, startY, dx, dy, mDuration);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy) {
super.startScroll(startX, startY, dx, dy, mDuration);
}
}
und verwendet diese Methode, um viewpager des
private Scroller scroller;
private void setViewPagerScroll(boolean instant) {
try {
Field mScroller = null;
mScroller = ViewPager.class.getDeclaredField("mScroller");
mScroller.setAccessible(true);
if (scroller == null) {
scroller = (Scroller) mScroller.get(mViewPager);
}
FixedSpeedScroller fss = new FixedSpeedScroller(mViewPager.getContext());
mScroller.set(mViewPager, instant ? fss : scroller);
} catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
und modifizieren onPageScrollStateChanged so, nur die erste Seite oder die letzte Seite (ich habe 5 Seiten) würde die Animation in schnelles Scrollen ändern, ansonsten normales Scrollen:
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
if (position == 0) {
setViewPagerScroll(true);
mViewPager.setCurrentItem(3);
} else if (position == 4) {
setViewPagerScroll(true);
mViewPager.setCurrentItem(1);
} else {
setViewPagerScroll(false);
}
}
}
FixedSpeedScroller Referenzen ist hier: http://blog.csdn.net/ekeuy/article/details/12841409
Kontrolle dieses http://stackoverflow.com/q/7546224/1263908 – sique
http://stackoverflow.com/questions/7440012/infinite-viewpager – blessenm