[테스트 환경]
기기 OS : Android 8
타겟 SDK : API Level 27
안드로이드에서 액티비티를 띄울때, 그리고 없앨때 자동으로 애니메이션이 붙습니다.
OS 버전에 따라 차이가 있는데, 페이드 인/아웃 애니메이션을 보여 줄 때도 있고, 좌우로 나타났다 사라지는 경우도 있습니다.
페이드 인/아웃의 경우는 대체로 문제가 되지 않는데, 좌우로 슬라이딩 되며 나타났다 사라지는 경우는, 팝업 용도의 액티비티와 같은 어울리지 않아 어색한 경우가 있습니다. 따라서 이런 경우는 전환 애니메이션을 작동하지 않도록 할 수 있습니다.
검색해 보면 다양한 방법이 소개되어 있지만, 여기서는 코드를 통해 간단하게 애니메이션을 제거해 보겠습니다.
(1) 액티비티를 띄울때 애니메이션 없애기
액티비티를 시작하기 위한 인텐트 설정에서 Intent.FLAG_ACTIVITY_NO_ANIMATION 플래그를 추가해 줍니다.
예를 들자면,
val intent = Intent (this, PrivacyPolicyActivity::class.java)
intent.addFlags (Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity (intent)
위, 파란색 글자와 같이 플래그를 추가해 줍니다.
이렇게 하면 액티비티가 시작할때 애니메이션 없이 나타납니다. 단, 해당 액티비티를 종료할 때는 애니메이션이 그대로 살이 있더군요. 이런 경우 아래와 같이 하여 종료시 액티비티도 없앨 수 있습니다.
(2) 액티비티를 종료할 때 애니메이션 없애기
액티비티를 종료할 때는, 해당 액티비티의 onPause 메소드를 오버라이드 하여, 그 안에서 overridePendingTransition 메소드를 호출하여 종료 애니메이션을 없앨 수 있습니다.
아래는 그 예를 보여 줍니다.
override fun onPause() {
super.onPause()
overridePendingTransition(0, 0)
}
끝.
(C) 2018 WingsNote.com (무단 복제 및 게시 금지, 링크 허용)
'소프트웨어개발 > Android' 카테고리의 다른 글
[안드로이드] java.lang.ClassNotFoundException ad.loadClass 비정상 종료 해결하기 (0) | 2019.03.15 |
---|---|
안드로이드 스플래시 스크린 만들기 (0) | 2018.11.28 |
맥에서 안드로이드 무선 디버깅 2 - 플러그인을 사용한 방법 (0) | 2017.10.05 |
맥에서 안드로이드 무선 디버깅 1 - ADB를 이용한 방법 (0) | 2017.10.05 |
구글 플레이 스토어 등록 어떻게? 2편 - 키스토어 생성과 릴리즈 빌드 하기 (안드로이드 스튜디오 사용) (5) | 2015.03.16 |