[안드로이드 / Kotlin] RecyclerView 최상단 최하단 스크롤감지

2022. 11. 11. 14:15·Android
반응형

안드로이드 개발하다보면 RecyclerView의 사용은 거의 반강제?일정도로 자주 사용되고 있습니다.

최근에는 퀄리티 높은 많은 앱들이 생겨나면서 자연스레 UI/UX도 iOS만큼이나 향상되었습니다. 특히 앱내 상태바나

액션바(툴바) 애니메이션을 통해 그 사실을 쉽게 느낄 수 있습니다.

제가 이 말씀을 드리게 된 이유는 향상된 안드로이드의 UI/UX와 RecyclerView 스크롤은 밀접한 관련이 있는 경우가 많기 때문입니다.

그래서 오늘 제가 소개 시켜드릴 내용은 간단하지만 꽤나 유용하게 사용하실 수 있다고 생각합니다😊

내용은 RecyclerView 의 최상단 및 최하단의 스크롤 감지 방법입니다.

간단하게 정리하면 아래와 같습니다.

  1. RecyclerView.OnScrollListener() 사용하기
  2. 상황에 맞게 override된 onScrolled(), onScrollStateChanged() 메소드 이용하기
  3. canScrollVertically()를 이용해 스크롤 가능여부 체크하기

코드는 아래와 같습니다.

rvViewer.addOnScrollListener(object : RecyclerView.OnScrollListener() {
    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
        super.onScrolled(recyclerView, dx, dy)
        if (recyclerView.canScrollVertically(-1) && recyclerView.canScrollVertically(1)) {
            hideBars()
        }
    }

    override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
        super.onScrollStateChanged(recyclerView, newState)
        if (!recyclerView.canScrollVertically(-1) || !recyclerView.canScrollVertically(1)) {
            showBars()
        } else {
            hideBars()
        }
    }
})

아마 OnScrollListener()를 이용한 스크롤 감지는 많이들 사용해보셨을거라는 생각이 듭니다🤭

중점 포인트는 수직방향으로 스크롤이 가능한지 여부를 나타내는 canScrollVertically() 메소드입니다.

파라미터로는 direction(int) 값이 들어갑니다. 그래서 1이면 하단, -1이면 상단을 뜻합니다.

그런데! vertical 관련한 메소드가 있다면 당연히 horizontal 관련한 메소드도 있을 거라고 예상들 하셨겠죠?

canScrollHorizontally()가 바로 그 메소드이며, 파라미터 direction이 1이면 오른쪽, -1이면 왼쪽 방향을 나타냅니다.

 

지금까지 부족한 글 읽어주셔서

감사합니다🙇‍♂️

반응형

'Android' 카테고리의 다른 글

[안드로이드 / Kotlin] Coroutine Flow debounce를 이용한 검색 구현  (0) 2023.03.16
[안드로이드 / Kotlin] 둥근 모서리 Bitmap 이미지 만들기  (0) 2022.11.18
[안드로이드 / Kotlin] Snackbar에 커스텀 폰트 적용하기  (0) 2022.11.08
[안드로이드] ConstraintLayout 뷰 밀림 문제  (0) 2022.10.30
[안드로이드 / Kotlin] ViewPager2 setCurrentItem duration  (0) 2022.10.28
'Android' 카테고리의 다른 글
  • [안드로이드 / Kotlin] Coroutine Flow debounce를 이용한 검색 구현
  • [안드로이드 / Kotlin] 둥근 모서리 Bitmap 이미지 만들기
  • [안드로이드 / Kotlin] Snackbar에 커스텀 폰트 적용하기
  • [안드로이드] ConstraintLayout 뷰 밀림 문제
서주냥
서주냥
간단한 것도 기록하는 습관을 가지자
  • 서주냥
    DroidLog
    서주냥
  • 전체
    오늘
    어제
    • 전체보기 (58)
      • 알고리즘 (12)
        • 백준 (4)
        • 프로그래머스 (5)
        • 개념 (3)
      • Android (43)
        • Compose (1)
      • Java (2)
      • Kotlin (1)
  • 링크

    • GitHub
  • 인기 글

  • 태그

    최단 경로
    이진 탐색
    viewmodel
    뷰모델
    백준
    코틀린
    BLE
    SnackBar
    알고리즘
    안드로이드
    reified
    벨만 포드
    Coroutine
    viewpager2
    textunit
    블루투스
    moshi
    Clean Architecture
    Hilt
    코루틴
    투 포인터
    FusedLocationProviderClient
    자바
    ConstraintLayout
    다이나믹 프로그래밍
    Coroutine Flow
    프로그래머스
    클린 아키텍처
    RecyclerView
    debounce
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
서주냥
[안드로이드 / Kotlin] RecyclerView 최상단 최하단 스크롤감지
상단으로

티스토리툴바