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

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

Intellij 가 실행되지 않을때 

(heap 사이즈를 과도하게 올려서 실행이 되지 않을 경우...)

 

/Users/userName/Library/Preferences/IntelliJIdea****.*/idea.vmoptions

 

에서 heap size를 수정하면된다.

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

Kotlin Sha256  (0) 2019.10.16
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

var westernArabicNumeralsOnly: String {
        let pattern = UnicodeScalar("0")..."9"
        return String(unicodeScalars
            .flatMap { pattern ~= $0 ? Character($0) : nil })
    }

 

link : https://stackoverflow.com/questions/41188101/get-numbers-characters-from-a-string

 

Get numbers characters from a string

How to get numbers characters from a string? I don't want to convert in Int. var string = "string_1" var string2 = "string_20_certified" My result have to be formatted like this: newString = "1"

stackoverflow.com

 

1. 

fun String.westernArabicNumeralsOnly():String
{
    val sb = StringBuffer()
    for ( c in this)
    {
        if (c in '0'..'9')
        {
            sb.append(c)
        }
    }
    return sb.toString()
}

 

2. 

fun String.getNumbers():Int
{
return this.filter { it in '0'..'9' }.toInt()
}

 

 

filter 처리 해서 사용 하는것이 더 간단하게 사용 할 수 있음..

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

Kotlin Sha256  (0) 2019.10.16
When Intelli is not working.  (0) 2019.07.04
Kotlin run,with,let,apply  (0) 2018.04.09
Kotlin Study Link  (0) 2018.04.03

JSON 데이터를 kotlin class 로 변환하기 위해

 

json to kotlin class 라는 플러그인을 설치한다.

 

https://plugins.jetbrains.com/plugin/9960-json-to-kotlin-class-jsontokotlinclass-

 

JSON To Kotlin Class (JsonToKotlinClass) - Plugins | JetBrains

Welcome to the JetBrains plugin repository

plugins.jetbrains.com

 

Android Studio 에 plugin 검색에

json to kotlin class 을 검색하면

 

위와 같은 플러그인을 찾을 수 있다.

 

찾아서 설치 후 IDE를 재실행 하고

 

new -> Kotlin data class File from JSON 을 선택 하거나

 

JSON 데이터를 복사 한 후

 

command + N 을 누르게 되면

 

위와 같은 화면을 확인 할 수 있다.

 

Kotlin data classes from JSON 선택 할 경우

 

JSON 형식을 입력 할 수 있는 화면과

클래스 명을 입력 할 수 있는 화면이 노출된다.

 

입력 완료 후 Generate를 하게 되면

입력된 JSON 값을 이용해

형식에 맞는 data class를 생성해준다.

 

API 통신시 편하게 JSON 클래스를 만들어 사용 할 수 있다

Kotlin Higher-Order Functions

interface를 통해 간단한 연동이 필요할 경우

interface ExampleInterface
{
fun checkFun() 
}

fun testFunction(example:ExampleInterface)
{
example.checkFun()
}

와 같이 사용 되던 부분을


fun testFunction(checkFun:()->Unit)
{
checkFun()
}

로 표현 할 수 있다.

비동기 처리와 같이 데이터 처리 후 결과를 리턴 할 경우 Higher-Oder Functions을 사용해
기존의 Interface를 사용 하지 않고 코드량을 줄여서 사용 할 수 있다.



---------- 설명 ---------
fun testFunction(checkFun:()->Unit)

checkFun => 함수명
() => 리턴값이 없을 경우 () 로 표현한다. 
데이터를 넘겨야 할 경우 데이터 타입을 선언하면된다. 
(String) ->. Unit 과 같은 형태
(String,Int) -> Unit 등..

Unit => 리턴값은 없기 때문에 Unit으로 처리



https://www.gitignore.io/

사이트에서 사용중인 프로그램, 언어 등 선택 하고 생성 버튼 선택 시

.gitignore 파일 내용이 생성됨.

해당 내용을 .gitignore 내용에 붙여넣기해서 사용 하면됨.

'Development' 카테고리의 다른 글

MySql function 사용하기  (0) 2018.04.05

+ Recent posts