오픈 소스 라 이브 러 리 배 너 는 어떻게 무한 윤 방 을 실현 합 니까?

2042 단어 viewpagerandroid
최초 로 ViewPager 를 사용 하여 무한 윤방 을 실현 한 것 을 기억 하 세 요.대체로 이 렇 습 니 다.
 class BannerPagerAdapter extends PagerAdapter {
        List list;
        @Override
        public int getCount() {           
            return Integer.MAX_VALUE;
        }
        @Override
        public Object instantiateItem(ViewGroup container, final int position) {
            int realPosition = position%list.size();
            return list.get(realPosition);
        }
    }

오픈 소스 라 이브 러 리 배 너 를 사용 한 후,이 라 이브 러 리 는 무한 라운드 방송 을 처리 하여 매우 잘 쓴 것 같다.
이 라 이브 러 리 는 좌우 무한 으로 미 끄 러 질 수도 있 고,자동 으로 좌우 무한 윤방 할 수도 있다.
우선 그 대체적인 원 리 를 알 아 보 자.
데이터 의 앞 뒤 양쪽 끝 에 각각 데 이 터 를 추가 합 니 다.전단 에 추 가 된 것 은 마지막 날 데이터 이 고 끝 에 추 가 된 것 은 첫 번 째 데이터 입 니 다.그림 참조:
C 에서 D 로 미 끄 러 졌 을 때 ViewPager.OnPageChange Listener\#onPageScroll State Changed()에서 감청 을 하고 A 로 빠르게 전환 합 니 다.A 에서 E 로 미 끄 러 졌 을 때 ViewPager.OnPage Change Listener\#onPage Scroll State Changed()에서 감청 을 하고 C 로 빠르게 전환 합 니 다.viewPager.setCurrentItem(int,boolean)을 사용 하도록 전환 합 니 다.두 번 째 매개 변 수 는 false 로 애니메이션 을 사용 하지 않 고 직접 빠르게 전환 하여 무한 윤방 의 가상 을 만 드 는 것 을 나타 낸다.
그리고 ViewPager.OnPageChange Listener 에서 감청 처 리 를 하고 빠르게 전환 합 니 다.
//      
int currentIndex  = 1;
//        
int pageCount;
 private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            currentIndex = position;
        }

        @Override
        public void onPageScrollStateChanged(int state) {
                //        ,       ,        
               if (currentIndex==0){
                   viewPager.setCurrentItem(pageCount,false);
               }
               //       ,        
               if (currentIndex==pageCount+1){
                   viewPager.setCurrentItem(1,false);
               }       
        }
    };

좋은 웹페이지 즐겨찾기