안드로이드 스튜디오 ScrollToPosition(with Kotlin)

Purang·2022년 11월 1일
0

Android Studio

목록 보기
20/28

오늘은 ScrollToPosition에 대해 배워 보았습니다.

ScrollToPosition은 유튜브의 홈버튼 클릭 시 최상단으로 이동하게 되는 것으로 간단한 예시를 들 수 있을 것 같습니다.

화면의 최상단(최하단)으로 이동하는 방법은 간단하게

myRecyclerview.smoothScrollToPosition(position : Int) //또는 그냥 ScrollToPosition

이 있지만 이 방식은 작동하지 않더군요..
그래서 아래의 사이트의 방식을 사용하여 코드를 작성해보았습니다.
/저는 현재 역순 리사이클러뷰방식을 사용 중이라 item의 끝으로 올리는 점을 알립니다./

 val smoothScroller = object : LinearSmoothScroller(this) {
                        override fun getVerticalSnapPreference(): Int {
                            return LinearSmoothScroller.SNAP_TO_END
                        }
                    }
                    //마지막으로 보이는 뷰의 어댑터 위치를 반환합니다.
                    val last = manager!!.findLastVisibleItemPosition()
                    smoothScroller.targetPosition = last
                    manager!!.startSmoothScroll(smoothScroller)

val last의 사용된 방식으로 마지막으로 보이는 뷰의 어댑터 위치(position)을 받아
scroll의 targetposition을 마지막으로 설정하여 작동 시켜 잘 되는 것을 확인 할 수 있었습니다. 이 방식은 smooth하게 올리는 방법으로 순간이동하여 최상단(최하단)으로 이동하는 것이 아닌 약간의 animation?을 통해 이동하는 방식입니다.

순간이동 즉, 누르자 마자 이동되는 방식을 사용하고 싶으시면

private fun scrollToLastItem(view: View) {
        var manager = findViewById<RecyclerView>(R.id.recyclerView).layoutManager as? LinearLayoutManager
        val last = manager!!.findLastVisibleItemPosition()
        Handler(Looper.getMainLooper()).postDelayed(
            Runnable { manager!!.scrollToPositionWithOffset(last,0)},
            300
        )
    }

위 방식을 사용하시면 바로 해당 위치로 이동되는 것을 확인 할 수 있었습니다.

도움이 된 사이트
LinearSmoothScroller - developer.android.com
Stackoverflow

profile
몰입의 즐거움

0개의 댓글