codekata
Android
animation
overridePendingTransition(R.anim.none, R.anim.horizon_exit)
overridePendingTransition(새로 나타나는 화면, 지금 화면)
overridePendingTransition을 사용하려 했는데 deprecated 되었다고 한다.
지금 만드는 프로젝트의 API가 34인데 34이 이상일 경우에 overrideActivityTransition를 사용해야 된다고 한다.
overrideActivityTransition( OVERRIDE_TRANSITION_OPEN/CLOSE, 새로 나타나는 화면, 지금 화면)
OVERRIDE_TRANSITION_CLOSE : 창이 닫혔을 때
OVERRIDE_TRANSITION_OPEN : 창이 열릴 때
사용하려면 xml에 X,Y 값에 대해 설정해줘야 한다.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="100%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="0%" />
</set>
- duration : 애니메이션 완료에 걸리는 시간 millisecond 단위
- fromXdelta : x축 애니메이션이 시작하는 위치 0 이면 정위치 -100% 이면 화면 왼쪽 100% 이면 화면 우측에서 시작
- ( ex. android:fromXDelta="-100%" : 디바이스 스크린 왼쪽부터)
- interpolator : 설정한 애니메이션이 실행되는 궤적의 프리셋
- toXDelta : x축 애니메이션이 끝나게 되는 위치 값은 fromXdelta 와 같음
너무 헷갈려서 직접 그려봤다.
반대, 위, 아래는 위에 것만 이해해도 이해가 간다.
혹시나해서 예시로 들자면
- Slide_right_enter
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="100%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="0%" />
</set>
- Slide_right_exit
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="0%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="100%" />
</set>
- Slide_none
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
이제 사용해보자면
overrideActivityTransition(OVERRIDE_TRANSITION_OPEN,R.anim.slide_right_enter,R.anim.slide_none)
overrideActivityTransition(OVERRIDE_TRANSITION_CLOSE,R.anim.slide_none,R.anim.slide_right_exit)
위에와 같이 사용하면 되는데 enter일 경우 activity가 실행될 때 나오면 되고 close의 경우 finish 뒤쪽으로 써주면 된다.
다른 분은 abstract class를 생성해서 상속시켜서 사용하던데 좀 더 이해가 필요하다.
++
finishAffinity() : 새로운 스택을 만드는 방식이 아니라 기존 스택을 비우는 방법
'Kotlin > TIL' 카테고리의 다른 글
TIL (04.04) (0) | 2024.04.04 |
---|---|
TIL (04.03) (0) | 2024.04.03 |
TIL (04.01) (0) | 2024.04.01 |
TIL (03.29) (2) | 2024.03.29 |
TIL (03.28) (0) | 2024.03.28 |