우찬쓰 개발블로그

activity animation 효과 넣기 본문

안드로이드/안드로이드 개발

activity animation 효과 넣기

이우찬 2019. 4. 21. 14:46
반응형

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>
반응형
Comments