기획자의 요구사항은 다음과 같았다.

  • 첫번째 아이템은 RecyclerView 왼쪽편에 snap되어야할 것
  • 마지막 아이템은 RecyclerView 오른쪽편에 snap되어야할 것
  • 첫번째와 마지막 아이템을 제외하고는 아이템뷰의 중앙을 기준으로 RecyclerView 중앙에 스냅되도록 배치 할 것

 

SnapHelper를 사용하면되겠구나!

PagerSnapHelper를 사용하니 한페이지 단위로만 snap되므로 RecyclerView내에 2개 이상 Completely Visible 아이템이 보이는경우는 snap 제대로 스냅 되지 않았다. 예를 들면 폰에서는 괜찮은데 테블릿에서는 문제가 될 수 있는것이다.

그렇다면 LinearSnapHelper다.

LinearSnapHelper는 아이템뷰의 중앙을 기준으로 RecyclerView의 중앙에 배치하고, 첫번째 아이템은 RecyclerView의 왼쪽에 잘 snap되었다. 잘 되는가 싶더니 두번째 요구사항인 마지막 아이템의 snap이 말썽이였다. LinearSnapHelper의 경우 아이템뷰의 중앙을 기준으로 배치하기 때문에 마지막 아이템뷰가 RecyclerView의 중앙까지 스크롤되지 않는다면 snap되지 않는것이였다.

결국 LinearSnapHelper를 커스터마이징해야한다.

LinearLayoutSnapHelper를 상속하여 findCenterView메소드에 위의 내용을 추가하면 마지막 아이템이 오른쪽이 잘 snap되는것을 경험할 수 있다.

Buy me a coffeeBuy me a coffee
카테고리: Android

0개의 댓글

답글 남기기

이메일은 공개되지 않습니다.