#1-2 AutoScrolling Banner

ADD·2021년 7월 7일
0
post-thumbnail

제목에 #1이 붙은 이유는?

또 RecyclerView 를 활용할 것이기 때문이다.
AutoScrolling Banner 라는 View 가 따로 존재하는 것은 아니고...

약 3초 정도의 사이클에 의해 배너 속 이미지가 ViewPager 처럼 넘어가면서 광고 및 공지가 표시된다.
물론 ViewPager 를 통해서도 만들 수 있지만, 클래스가 늘어나면서 구현 과정이 복잡해지는 것을 원치 않았고, 결정적으로 실제 서비스 진행 시, 데이터를 받아 와 뿌려주는 과정에서 코드가 방대해질 것이라는 우려가 생겼다.

구현 과정

구현은 정~말 간단하다. #1-1 에서 기술했던 SnapHelper 클래스를 활용하면 된다.
이후는 더 간단하다.

3,000ms 의 sleep 을 주고, handler 의 post 메소드를 통해 로직을 구현한다.
currentItem 이라는 필드 변수를 초기화한 뒤, recyclerView 와 연결된 LayoutManager 에서
findFirstVisbleItemPosition 메소드를 사용하자.
해당 메소드명 역시 매우 직관적인데, 직역하자면 '처음으로 보이는 아이템의 포지션 찾기' 라고 할 수 있다.

여기서 잠깐!

findFirstCompletelyVisibleItemPosition

라는 메소드도 있는데, 해당 메소드로 구현하면 작동은 가능하나, 간혹 position 이 꼬이는 건지, item 이 꼬이는 건지, 한 번에 두 개의 item 이 넘어가곤 한다.

그러니, 예제대로 findFirstVisibleItemPosition 을 사용해주고 recyclerView 의 smoothScrollToPosition 메소드를 입력해주면 끝.

해당 예제에서는 다섯 개의 아이템을 사용하므로, 다섯 번째 아이템을 보여주고 3초 뒤에는 다시 첫 번째 아이템으로 돌아가야 한다. smoothScrollToPosition 의 인자를 0 으로 설정해주면 첫 번째 아이템으로 가게 된다.

무한 반복을 위해 while (true) 해주는 것도 잊지 말자.

0개의 댓글