개발여행

Kotlin 프래그먼트 전환 애니메이션 효과 본문

Mobile/Kotlin

Kotlin 프래그먼트 전환 애니메이션 효과

Titan. 2022. 5. 15. 02:04

우선 res디렉토리에 anim 폴더를 만들고 다음과 같이 xml를 작성한다.

[enter_from_right.xml]

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:fromXDelta="100%" android:toXDelta="0%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration="300" />
</set>

[exit_to_right.xml]

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:fromXDelta="0%" android:toXDelta="100%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration="300" />
</set>

 

메인 엑티비티에 다음과 같이 setFrag 함수를 작성한다.

fun setFrag(fragment: Fragment) {
    val transaction = supportFragmentManager.beginTransaction()
    
    transaction.setCustomAnimations(R.anim.enter_from_right, 0, 0, R.anim.exit_to_right)
    transaction.add(R.id.main_frame, fragment).addToBackStack(null)
    
    //transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_right)
    //transaction.add(R.id.main_frame, fragment)
    
    transaction.commit()
}

기존 setFrag 함수에 setCustomAnimations 함수가 추가되었다.

네가지의 인자(enter, exit, popEnter, popExit)가 들어가는데 백스택을 사용하지 않을 경우 popEnter과 popExit 인자는 전달하지 않아도 된다.

 

그 후 다음과 같이 해당 프래그먼트에서 함수를 사용할 수 있게 해주면 된다.

https://ti-tan.tistory.com/22