[Android] AutoScrollViewPager 사용하기, 자동 ScrollView 구현

하은·2024년 2월 20일
0

Android

목록 보기
3/4
post-thumbnail

자동 스크롤 뷰페이저는 배너나 광고 이미지를 띄울 때 효율적으로 이미지를 보여줄 수 있어 많이 사용되는 방식이다. 사이드 프로젝트에서 대표적인 이미지들을 미리 보여주는 부분을 자동 스크롤 뷰페이저로 구현하기로 했다.

이번 자동 스크롤 뷰페이저는 https://github.com/demoNo/AutoScrollViewPager 해당 깃허브 라이브러리를 사용해서 구현했다.

AutoScrollViewPager 구현 결과


상단에 배너는 AutoScrollViewPager을 사용하여 구현한 화면이다.
이번 글에서는 상단 배너까지 만들진 않을거고, 간단히 AutoScrollViewPager을 구현하는 방법에 대해서만 작성할 예정이다.


AutoScrollViewPager 사용 방법

1. Add to your project

settings.gradle 파일에 추가

allprojects {
    repositories {
	...
	maven { url 'https://jitpack.io' }
    }
}

build.gradle 파일에 추가

dependencies {
    compile 'com.github.demoNo:AutoScrollViewPager:v1.0.2'
}

2. xml 파일에 구현

<com.github.demono.AutoScrollViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:stopWhenTouch="true"
    app:slideInterval="5000"
    app:slideDirection="right"
    app:slideDuration="5000"/>

3. autoScrollViewPager의 어뎁터 생성

public class MyAdapter extends InfinitePagerAdapter {

    private List<String> data;

    public MyAdapter(List<String> data) {
        this.data = data;
    }

    @Override
    public int getItemCount() {
        return data == null ? 0 : data.size();
    }

    @Override
    public View getItemView(int position, View convertView, ViewGroup container) {
        return your view;
    }
}

4. 어뎁터 연결

@Override
protected void onCreate(Bundle savedInstanceState) {
    AutoScrollViewPager mViewPager = (AutoScrollViewPager) findViewById(R.id.viewPager);
    MyAdapter mAdapter = new MyAdapter(data);
    mViewPager.setAdapter(mAdapter);
    // optional start auto scroll
    mViewPager.startAutoScroll();
}

5. 옵션

  • startAutoScroll()
    : 자동 스크롤 시작 함수
  • stopAutoScroll()
    : 자동 스크롤 멈추기
  • setSlideInterval(int slideInterval)
    : 각 항목 슬라이드 간격(기본값 5000ms)을 설정
  • setDirection(int direction)
    : 자동 스크롤 방향오른쪽 또는 방향왼쪽, 기본 오른쪽을 설정
  • setStopWhenTouch(boolean stopWhenTouch)
    : ViewPager를 터치했을 때 중지 여부 (default true)
  • setCycle(boolean cycle)
    : 마지막 항목으로 스크롤할 때 첫 번째 항목으로 자동 스크롤하는지 여부(PagerAdapter를 확장하는 어댑터에 대해서만 해당, default false)
  • setSlideDuration(int slideDuration)
    : 각 항목 스크롤 지속 시간(기본값 800ms)을 설정


예외 상황

새로운 프로젝트에 해당 라이브러리를 적용했더니
Task :app:checkDebugDuplicateClasses FAILED
라는 에러문구가 뜨면서 빌드가 되지않았다...

이런 문구가 뜬다면
gradle.properties 파일에

android.useAndroidX=true

android.enableJetifier=true

요 문구가 있는지 확인해보고, 없다면 추가해주기!
enableJetifier는 androidX와 외부 라이브러리 충돌이 일어나는 것을 방지해주어 외부 라이브러리를 사용할 수 있게 해준다고한다.
내 경우는 useAndroidX는 true로 허용되어있었는데 enableJetifier 문구가 없어서 추가해 주었더니, 성공적으로 빌드가 가능했다 !

profile
하니의 개발 블로그

0개의 댓글