Viewpager2 Extenstion Method로 처리한다.

 

pagePxWidth or pagePxHeight은 보통 기본값으로 처리한다.

한 화면 스크롤 할 경우 그냥 사용하면 됨.

viewpager2에서 scoll 방향이 가로 세로일 경우 나뉘어지기 때문에 orientation으로 구분해서 처리한다.

 


fun ViewPager2.setCurrentItem(
    item: Int,
    duration: Long,
    interpolator: TimeInterpolator = AccelerateDecelerateInterpolator(),
    pagePxWidth: Int = width, // Default value taken from getWidth() from ViewPager2 view
    pagePxHeight:Int = height
) {
    val pxToDrag: Int = if (orientation == ViewPager2.ORIENTATION_HORIZONTAL)
    {
        pagePxWidth * (item - currentItem)
    }
    else

    {
        pagePxHeight * (item - currentItem)
    }


    val animator = ValueAnimator.ofInt(0, pxToDrag)
    var previousValue = 0
    animator.addUpdateListener { valueAnimator ->
        val currentValue = valueAnimator.animatedValue as Int
        val currentPxToDrag = (currentValue - previousValue).toFloat()
        fakeDragBy(-currentPxToDrag)
        previousValue = currentValue
    }
    animator.addListener(object : Animator.AnimatorListener {
        override fun onAnimationStart(animation: Animator?) { beginFakeDrag() }
        override fun onAnimationEnd(animation: Animator?) { endFakeDrag() }
        override fun onAnimationCancel(animation: Animator?) { /* Ignored */ }
        override fun onAnimationRepeat(animation: Animator?) { /* Ignored */ }
    })
    animator.interpolator = interpolator
    animator.duration = duration
    animator.start()
}


포지션 & 듀레이션만 적용시켜주면됨.

setCurrentItem(ticker.currentItem+1,500)

 

 

참조링크 : stackoverflow.com/questions/57505875/change-viewpager2-scroll-speed-when-sliding-programmatically

'Development > Android' 카테고리의 다른 글

Fragment BackStack clear  (0) 2020.01.14
Android Tool bar change icon  (0) 2019.07.26
Android Studio 에서 JSON Kotlin Class 쉽게 만들기  (0) 2019.05.31
Kotlin Higher-Order Functions  (0) 2019.05.21
Android GPS Turn On  (0) 2019.02.21

ex code ...........

 

val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val toggle = ActionBarDrawerToggle(
this,
drawerLayout,
toolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
)

drawerLayout.addDrawerListener(toggle)
toggle.syncState()

 

//Change Left Menu Icon
supportActionBar?.setHomeButtonEnabled(true)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
toolbar.setNavigationIcon(R.drawable.i_mymenu)

 

// Change Right Menu Icon
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    toolbar.overflowIcon = getDrawable(R.drawable.i_video)
}
else
{

    toolbar.overflowIcon = resources.getDrawable(R.drawable.i_video)
}
navView.setNavigationItemSelectedListener(this)

 

 

'Development > Android' 카테고리의 다른 글

ViewPager2 set scroll Speed  (0) 2020.11.25
Fragment BackStack clear  (0) 2020.01.14
Android Studio 에서 JSON Kotlin Class 쉽게 만들기  (0) 2019.05.31
Kotlin Higher-Order Functions  (0) 2019.05.21
Android GPS Turn On  (0) 2019.02.21

+ Recent posts