본문 바로가기
Android 개발/android :: Tip

[안드로이드 Animation] 액티비티 전환 애니메이션 설정, 해제, overridePendingTransition 안되는 경우

by 독학하는 1인 개발자 2019. 11. 27.

Android 개발 Tip.

 

- Activity Transition Animation

 

액티비티 화면 전환시 애니메이션 방법

 

overridePendingTransition

 

 

 

 

 

 

액티비티를 전환할 때 애니메이션을 적용해주면

 

좀 더 시각적으로 있어 보이는 효과를 낼 수 있다.

 

횡으로 이동하거나 종으로 이동하거나

 

사라지거나 뿅하고 나타나거나

 

애니메이션을 적용해보자.

 

 

애니메이션에 대해 전혀 모른다면 다음 포스팅을 참고하자.

2020/05/22 - [Android 개발/android :: 공부] - [Android Animation] 안드로이드 애니메이션 기본 사용법 (트윈 애니메이션)

 

 

물론 몰라도 아래 예제만 그대로 따라하면 바로 만들 수 있다.

 

 

 

 

 

 

Activity 화면 전환 애니메이션 만들기

+ 안 되는 경우 해결 방법

 

 

 

핵심 코드는

overridePendingTransition()이다.

 

 

 

1. 안드로이드 activity 화면 전환시

animation을 직접 설정하는 코드

 

 

- 새로운 액티비티를 열 때

1
2
3
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
cs

 

 

- 닫을 때는 반대로 해준다.

finish();
overridePendingTransition(R.anim.fadeout, R.anim.fadein);

 

 

애니메이션 파일은 res폴더에 anim 폴더를 만들어서

우클릭으로 new를 눌러 animation resource file을 생성해주자.

 

fadein.xml

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
cs

 

fadeout.xml

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" />
cs

 

 

 

 

2. 전환 애니메이션을 해제하려면 '0'을 입력하면 된다.

 

1
overridePendingTransition(00);
cs

 

 

 

3. 근데 0을 하면 가려지는 액티비티가 검은 화면이 된다.

 

그게 싫고 그대로 가려지게 하고 싶으면 fadeout 대신 hold를 만들어서 쓰자.

 

hold.xml

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:fromXDelta="0" android:toXDelta="0"
    android:duration="@android:integer/config_longAnimTime" />
cs

 

 

 

4. 그런데 말입니다!

 

overridePendingTransition 메소드가 안 먹히는 경우가 있다.

 

그럴 때는

기기 설정 - 개발자 옵션에서

애니메이션 효과가 꺼짐으로 되어 있는지 확인하자.

 

 

 

댓글