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

Android Fragment replace 사용시 중복 fragment 처리를 위해 사용

 

fun clearStack()
{
    val backStackEntry = supportFragmentManager.backStackEntryCount
    if (backStackEntry > 0) {
        for (i in 0 until backStackEntry) {
            supportFragmentManager.popBackStackImmediate()
        }
    }
    if (supportFragmentManager.fragments.size > 0) {
        supportFragmentManager.fragments.forEach {
            if (it != null) {
                supportFragmentManager.beginTransaction().remove(it).commit()
            }
        }
    }
}

 

아래와 같이 확장함수로 처리해도 됨. 현재 아래 코드를 사용중

fun FragmentManager.clearBackStack() {
    popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
}

 

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

ViewPager2 set scroll Speed  (0) 2020.11.25
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

java 에서 사용하던 sha256을 그대로 kotlin 으로 변환 했더니 값이 다른 경우가 발생함...

 

아래와 같은 방식으로 처리 후 동일 값 발생 확인.

class Sha256 {
    @Throws(Exception::class)
    fun encoding(param: String): String {
        val HEX_CHARS = "0123456789ABCDEF"
        val bytes = MessageDigest
                .getInstance("SHA-256")
                .digest(param.toByteArray())
        val result = StringBuilder(bytes.size * 2)
        bytes.forEach {
            val i = it.toInt()
            result.append(HEX_CHARS[i shr 4 and 0x0f])
            result.append(HEX_CHARS[i and 0x0f])
        }
        return result.toString()
    }
}



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

When Intelli is not working.  (0) 2019.07.04
Find numbers in string in kotlin  (0) 2019.07.02
Kotlin run,with,let,apply  (0) 2018.04.09
Kotlin Study Link  (0) 2018.04.03

+ Recent posts