(Cross-đăng my answer từ một câu hỏi StackOverflow giống hệt nhau)
Một khả năng được thiết lập màn hình như thế này:
C 'ABCA'
C' trông giống như C, nhưng khi bạn di chuyển đến đó, nó chuyển bạn sang thực C. A 'trông giống như A, nhưng khi bạn cuộn đến đó, nó chuyển bạn sang thực A.
Tôi sẽ làm điều này bằng cách thực hiện onPageScrollStateChanged như vậy:
@Override
public void onPageScrollStateChanged (int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
int curr = viewPager.getCurrentItem();
int lastReal = viewPager.getAdapter().getCount() - 2;
if (curr == 0) {
viewPager.setCurrentItem(lastReal, false);
} else if (curr > lastReal) {
viewPager.setCurrentItem(1, false);
}
}
}
Lưu ý rằng đây gọi là hình thức luân phiên của setCurrentItem và vượt qua false
gây nhảy xảy ra ngay lập tức chứ không phải là một cuộn trơn tru.
Có hai nhược điểm chính mà tôi thấy. Thứ nhất, khi đạt đến một trong hai đầu người sử dụng phải để cho di chuyển giải quyết trước khi họ có thể đi xa hơn. Thứ hai, nó có nghĩa là có một bản sao thứ hai của tất cả các khung nhìn trong trang đầu tiên và trang cuối cùng của bạn. Tùy thuộc vào cách tài nguyên của bạn nặng màn hình, có thể loại trừ kỹ thuật này như là một giải pháp có thể. Cũng cần lưu ý rằng vì trình xem trang không cho phép các nhấp chuột đi qua các điều khiển cơ bản cho đến sau khi cuộn xong, có thể không thiết lập danh sách nhấp chuột và các loại tương tự cho đoạn A 'và C'.
Chỉnh sửa: Giờ đây đã tự thực hiện điều này, có một nhược điểm khá lớn khác. Khi nó chuyển từ A 'sang A hoặc C' sang C, màn hình sẽ nhấp nháy một lúc, ít nhất là trên thiết bị kiểm tra hiện tại của tôi.
Bạn có thể kiểm tra [hướng dẫn này] (http://thedeveloperworldisyours.com/android/carousel-viewpager/#sthash.rtkOS5m2.J9bGU21I .dpbs) và [ví dụ này trong GitHub] (https://github.com/thedeveloperworldisyours/CarouselViewPager) – Cabezas