본문 바로가기
Android

위, 아래 스크롤을 감지하는 setOnScrollChangeListener

by 안솝우화 2021. 6. 11.
반응형

setOnScrollChangeListener을 사용하면 위로 스크롤을 했는지 또는 아래로 스크롤을 했는지 또는 지금 현재 가장 위인지 아래인지 판단할수 있습니다

//스크롤 했을때
        binding.mainScrollview.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
            Log.i(TAG, "scrolly : $scrollY");

                //스크롤 아래로
                if (scrollY > oldScrollY) {
                    val anim = TranslateAnimation(0f, binding.toyUploadBtn.width.toFloat(), 0f, 0f)
                    anim.duration = 100
                    binding.btn.animation = anim
                    binding.btn.visibility = View.GONE

                }
                
                // 스크롤 위로
                if (scrollY + 5 < oldScrollY) {
                    val anim =
                        TranslateAnimation(binding.toyUploadBtn.width.toFloat() + 1000, 0f, 0f, 0f)
                    anim.duration = 100
                    binding.btn.animation = anim
                    binding.btn.visibility = View.VISIBLE
                }
        }

코드설명


다음 코드는 스크롤을 했을때 위로 했는지 아래로 했는지 판단하여 버튼을 아래로 내리면 옆으로 이동하는 애니메이션과 함께 보이지 않게 하고 위로 올리면 옆에서 버튼이 나타나 보이게 하는 코드 입니다

 

scrollY + 5를 한 이유는 너무 감도가 높아서 조금더 둔하게 움직이게 하기 위해서 입니다

 

anim.duration은 몇초동안 실행 할지를 설정하는것이고 당연히 값이 낮으면 빠르게 행동되고 낮으면 그만큼 느리게 Animation이 실행 될겁니다

 

View.VISIBLE와 View.GONE는 버튼을 보이게와 사라지게 하는 코드입니다

반응형