우찬쓰 개발블로그
activity animation 효과 넣기 본문
반응형
activity animation에 대하여 정보를 찾아보면 보통 다음과 같은 방법을 찾을 수 있다.
<style name="WindowAnimationTransition">
<item name="android:windowEnterAnimation">@anim/slide_in_right</item>
<item name="android:windowExitAnimation">@anim/slide_out_left</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">#2d2d34</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
</style>
스타일에 두 옵션에 대한 아이템을 지정하는 방법이다.
하지만 이 방법은 문제가 있는데, 엑티비티를 push 할때와 pop 할때의 애니메이션이 동일하게 지정된다는 것이다.
대부분의 요구사항은 push할때와 대칭이 되도록 pop이 반대의 애니메이션을 가져야하므로 세부 옵션이 필요하다.
이 경우를 위한 대안은 다음과 같다.
<style name="WindowAnimationTransition">
<item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
<item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
<item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>
이렇게 하면 activity를 open할때와 close 할때에 대한 각 animation의 세부 조정이 가능하다.
각 애니메이션 style의 코드도 추가해 두겠다.
<!-- slide_in_left -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromXDelta="-100%"
android:toXDelta="0%" />
</set>
<!-- slide_in_right -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromXDelta="100%"
android:toXDelta="0%" />
</set>
<!-- slide_out_left -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromXDelta="0%"
android:toXDelta="-100%" />
</set>
<!-- slide_out_right -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromXDelta="0%"
android:toXDelta="100%" />
</set>
추가로 투명도 조절도 할 수 있는데, 다음처럼 하면된다.
<!-- slide_out_right -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromXDelta="0%"
android:toXDelta="100%" />
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="200"/>
</set>
반응형
'안드로이드 > 안드로이드 개발' 카테고리의 다른 글
안드로이드 툴바 left padding 제거 (0) | 2019.05.02 |
---|---|
안드로이드 앱 업데이트시 서비스 자동 실행 하는법 (2) | 2019.05.02 |
안드로이드 status bar 투명 만들기 (0) | 2019.04.21 |
안드로이드 오레오 이상 푸시 알림 진동 끄는 법 (Android Notification vibrate disable) (0) | 2019.04.21 |
안드로이드 공유하기, 동적링크(딥링크) 기능 정리 (1) | 2019.04.12 |
Comments