728x90
반응형
Activity를 띄우면서 애니메이션 동작이 필요하게 되어서 정리하게 되었다
액티비티를 띄울 때 사용되는 애니메이션 함수는
: overridePendingTransition 이라는 함수이며,
현재 API34 부터는 Deprecated되어서 다른 방법을 사용하게 된다
: overrideActivityTransition
(안드로이드 폰이 14로 업데이트를 하지 않아서 테스트는 에뮬레이터로 가능)
아래의 예시는 'alpha' 점점 투명해지거나 투명에서 점점 보여지는 모습이다.
먼저 애니메이션 xml파일을 만든다
[resources/anim/fade_in.xml]
: alpha안에서 duration을 정해주어도 되지만, 나는 묶어서 명시하는 것을 선호
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="800">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0">
</alpha>
</set>
[resources/anim/fade_out.xml]
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="800">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0">
</alpha>
</set>
동작은 MainActivity에서 SubActivity로 넘어가는 동작이다.
[MainActivity]
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.btnMoveSubActivity.setOnClickListener {
val componentName = ComponentName(packageName, SubActivity::class.java.name)
val intent = Intent()
intent.component = componentName
startActivity(intent)
}
}
[SubActivity]
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sub)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
overrideActivityTransition(Activity.OVERRIDE_TRANSITION_OPEN, R.anim.fade_in, R.anim.fade_out)
} else {
overridePendingTransition(R.anim.fade_in, R.anim.fade_out) // alpha
// overridePendingTransition(R.anim.translate_in, R.anim.translate_out) // translate
}
}
MainActivity에서 fade_out을 적용하면 더욱 부드러운 애니메이션을 만들 수 있다.
아래는 내가 난중에 필요하면 사용하기 위해 만든 코드
[좌 → 우] translate animation
[resources/anim/translate_left_in]
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="800">
<translate
android:fromXDelta="-100%"
android:toXDelta="0%"
/>
</set>
[우 → 좌] translate animation
[resources/anim/translate_right_in]
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="800">
<translate
android:fromXDelta="100%"
android:toXDelta="0%"
/>
</set>
[resources/anim/translate_out]
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="800">
<translate
android:fromXDelta="0%"
android:toXDelta="0%"
/>
</set>
애니메이션 완성 동작
2023.11.14 - [dev/aos] - [AOS] 액티비티 뒤로가기(onBackPressed: Deprecated)
728x90
반응형
'dev > aos' 카테고리의 다른 글
[AOS] lateinit 초기화 여부 확인 (0) | 2023.11.16 |
---|---|
[AOS] 액티비티 뒤로가기(onBackPressed: Deprecated) (0) | 2023.11.14 |
[AOS] AnimationSet 만들기 (0) | 2023.11.13 |
[AOS] ImageButton에 버튼 클릭 효과 넣기 (0) | 2023.11.13 |
[AOS] Google API Sign-in Login구현 (0) | 2023.11.09 |