MW LAB

ViewPager 무한 스크롤 본문

Study/Android

ViewPager 무한 스크롤

MWP 2016. 12. 7. 23:37




기본 ViewPager 를 사용시, 0->1->2->3 순서로 스와이핑 할수 있다. 3이나 0에서 좌측,우측으로 스와이핑시 페이지 전환이 불가능하다.

이를 해결하기 위해 https://github.com/antonyt/InfiniteViewPager 라이브러리를 이용한다.



build.gradle : Project

1
2
3
repositories {
        maven { url 'https://jitpack.io' }
}
cs


build.gradle : Module

1
2
3
dependencies {
    compile 'com.github.antonyt:InfiniteViewPager:v1.0.0'
}
cs

적용해준 뒤


activity_main.xml

1
2
3
4
5
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v4.view.ViewPager>
cs


1
2
3
4
5
    <com.antonyt.infiniteviewpager.InfiniteViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.antonyt.infiniteviewpager.InfiniteViewPager>
cs
로 수정한다


그리고 기존 FragmentAdapter 를 InfinitePagerAdapter 로 전환시켜줘야대는데 라이브러리에서 이를 지원해준다.


MainActivity 

1
2
3
4
5
FragmentAdapter fragmentAdapter= new FragmentAdapter(getLayoutInflater(),4);
        
InfinitePagerAdapter adapter = new InfinitePagerAdapter(fragmentAdapter); // FragmentAdapter 를 InfinitePagerAdapter로 변환
 
pager.setAdapter(adapter);  // FragmentAdapter 대신 InfinitePagerAdapter 를 Adapter 로 설정
cs



ViewPager 의 동작방식 때문에, 4개 이상의 Fragment 들이 존재할 때만, 정상적으로 작동한다.

테스트 결과, 4개 미만시에 0->1->2 순서로 되어있을 경우 2->0 으로 가는 것은 동작을 하나 0->2 로 가는 경우 동작을 하지 않는다.


Comments