मेरा समाधान benkc पर आधारित है, लेकिन पहले और अंतिम पृष्ठ स्क्रॉल एनीमेशन अक्षम हैं, और जब पृष्ठ वास्तविक पृष्ठ पर "स्क्रॉल" होते हैं, तो स्क्रॉल एनीमेशन फिर से सक्षम होता है, यह योजना पहली कमी को हल कर सकती है।
लेकिन मेरे ViewPager.setCurrentItem(position, false)
परिणाम अभी भी स्क्रॉल एनीमेशन है, इसलिए मैं एनीमेशन लागू करता हूं जो देखने के लिए बहुत तेज़ है।
इस तरह तेजी से स्क्रॉल एनीमेशन, टिप्पणी कोई आपत्ति नहीं है, बस अपना कोड इन विधि का उपयोग नहीं किया:
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);
}
}
और viewpager की गतिविधि करने के लिए इस विधि का उपयोग
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();
}
}
और PageScrollState को संशोधित करें इस तरह से बदलें, केवल पहला पृष्ठ या अंतिम पृष्ठ (मेरे पास 5 पृष्ठ हैं) एनीमेशन को तेज़ स्क्रॉलिंग में बदल देगा, अन्यथा सामान्य स्क्रॉलिंग होगी:
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 संदर्भ यहाँ है: http://blog.csdn.net/ekeuy/article/details/12841409
जांच इस http://stackoverflow.com/q/7546224/1263908 – sique
http://stackoverflow.com/questions/7440012/infinite-viewpager – blessenm