관리 메뉴

나만을 위한 블로그

[Android] 액티비티 전환 시 애니메이션 효과 없애기 본문

Android

[Android] 액티비티 전환 시 애니메이션 효과 없애기

참깨빵위에참깨빵_ 2020. 3. 4. 20:37
728x90
반응형

앱을 만들다 보면 인스타처럼 누를 때마다 화면 전환효과 없이 바로바로 나오게 하고 싶은 경우가 있다.

이는 프래그먼트를 써서 어느 정도 해결할 수 있지만 액티비티도 내 맘대로 다루기 어려운데 프래그먼트라니?

이런 경우를 생각한 것인진 몰라도 안드로이드는 액티비티의 화면 전환효과를 없앨 수 있는 장치들을 마련해뒀다.

검색하면 방법은 다양하지만 여기선 간단한 방법 2개만 알아본다. 인텐트를 쓰는 법과 액티비티 종료 후 이전 액티비티로 돌아갈 때 호출되는 onPause()를 활용한 방법이다.

 

 

1. 인텐트

 

 

A 액티비티에서 B 액티비티로 이동한다고 가정한다. 그럼 코드는 이렇게 될 것이다.

 

Intent intent = new Intent(A.this, B.class);
startActivity(intent);

 

이 때 A에서 B로 이동할 때 화면 전환효과를 없애고 싶다면, startActivity() 호출 전에 코드 하나를 딱 넣어주면 된다.

 

Intent intent = new Intent(A.this, B.class);
intent.addFlags(Intent.FLAT_ACTIVITY_NO_ANIMATION);
startActivity(intent);

 

A와 B에 각각 자신이 만든 액티비티명을 적어놓고 앱을 빌드해서 확인하면 다음 액티비티로 넘어갈 때 화면 전환효과 없이 넘어가는 걸 볼 수 있다.

 

 

2. onPause()

 

 

B로 넘어갈 때 화면 전환효과 없앴으니 다시 A로 되돌아올 때 보이는 화면 전환효과도 없앨 수 있지 않을까? 가능하다.

액티비티의 생명주기 중 onPause()라는 게 있다. 설명은 생략하고 이 함수의 안에 아래의 함수를 적어주면 된다.

당연한 것이지만 onPause()의 재정의는 B(호출된(이동된) 액티비티)에서 이뤄져야 한다.

 

onPause() {
  super.onPause();
  overridePendingTransition(0, 0);
}

 

onPause()를 재정의하고 안에 볼드체로 적힌 함수 하나만 넣어주면, 이전 화면으로 되돌아갈 때 생기는 화면 전환효과도 없어진다.

onDestroy()에는 넣지 말자. 여기는 로그를 제외한 어떤 함수를 넣어도 별 쓸모가 없다.

부드럽게 넘어간다는 느낌은 들지 않지만 거슬리던 화면 전환효과를 없애는 것이라도 원하는 사람이라면 이 방법을 쓰면 조금은 해결될 것이다.

 
반응형
Comments