Activity 애니메이션의 모든것

요즘 앱들을 보면 화면 전환시 기본 애니메이션이 아닌 커스텀 애니메이션을 쓰는 경우가 많아 졌습니다. 그 중 대표적으로 플립보드에서 화면전환시 이전화면은 밑으로 빠지면서 다음화면은 오른쪽에서 왼쪽으로 애니메이션을 볼 수있습니다. 국내 카카스토리도 자세히 보면 비슷한 애니메이션을 사용 하고 있습니다.

이처럼 화면전환 효과로 인해 좀더 퀄리티 있는 앱을 개발할 수 있습니다. 그럼 어떻게 화면전환시 에니매이션 효과를 줄 수 있는지 하나씩 설명 해보겠습니다.

화면 전환 애니메이션을 구현 하기위해 필요한건 overridePendingTransition(int enterAnim, int exitAnim) 메소드 하나면 충분합니다. overridePendingTransition(int enterAnim, int exitAnim) Adnroid SDK API 설명을 간략히 요약 하자면 startActivity(), finish() 직후 명시적으로 전환 애니메이션을 지정할 수 있다고 정의 되어 있습니다.

  • enterAnim: 새로 뛰워지는 액티비티에 적용할 애니메이션
  • exitAnim: 자신이 종료 될때 적용할 애니메이션

아래 코드와 같이 구현하면 하면됩니다.

그럼 에니메이션을 어떻게 줄지, 플립보드와 같은 애니메이션 효과를 구현 해보면서 설명 해보겠습니다.

처음 전환되는 자신은 뒤로 빠지면서 오른쪽으로 약간 움직이는 애니메이션입니다. xml을 보면 translate로 화면을 오른쪽에서 왼쪽으로 이동합니다.

그리고 다음은 화면이 뒤로빠지면서 약 10%정도 움직이는 애니메이션입니다. alpha와 scale을 이용해서 애니메이션 할 수 있습니다.

다음 화면은 finish에 들어갈 애니메이션으로 종료 될때 새로운 화면이 올라오게 되는데, 이 화면의 효과는 위와 같지만 방향만 다릅니다.

다음 화면은 finish화면에서 닫기는 화면 애니메이션으로 translate로 화면을 윈쪽에서 오른쪽으로 이동 하게합니다.

이렇게 해서 onCreate()와 finish()시 각각 시작, 종료 애니메이션 4개를 만듭니다.

위와 같이 실제 적용 해보면 플립보드또는 카카오스토리 같은 애니메이션을 확인 할 수 있을 것입니다.

Fragment 파헤치기 – 1. Fragment 개념

Android Activity의 기본 개념은 한 화면에 보이는 모든것을 관리 하는 개념이다. 다양한 테블릿 디바이스, 다이나믹한 어플레이케이션 개발을 위해서 Activity는 개념에 맞지 않아 등장 한것이 Frgament라는 개념이다.

기존 Activity는 하나의 화면에 여러개 사용 할수 없게 설계되어 있는 반면 Fragment는 Activity와 비슷한  Lifecycle을 가지면서 여러가지 화면을 넣을 수 있는 방법을 지원해준다. 이 Fragment는 Android 3.0(허니컴)부터 API를 지원해 왔으며 그 이하 버전은 Support.v4(/sdk/extras/android/support/v4/android-support-v4.jar)의 FragmentActivity를 사용한다면 동일하게 사용가능 하다.

특징

Fragment는 Activity와 비슷한 LifeCycle을 가진다.
Fragment는 하나의 Activity에서 다수의 Fragment를 사용 할 수 있다.
Fragment는 Activity에서만 존재하며 단독으로 실행 될 수 없는 구조이다.
Fragment는 Activity와 마찬가지로 Back Stack을 사용 할 수 있으나, Activity처럼 다양한 Stack방식을 지원하지 않는다.
Fragment는 Activity와 위에서만 존재 하기때문에 다수의 Fragment를 동시에 뛰울때 메모리가 문제가 될 수 있으므로 너무 복잡한 구조는 지양해야 한다.

 

테블릿의 경우 Activity를 사용하면 많은 공간이 낭비 된다. 또한 이런 공간 낭비를 막기위해 View를 구성하게 되지만, 이런 관리들이 너무 복잡하게 되며 사용자들의 혼란을 초래 할 수있다.

폰의 경우 ViewPager을 이용하여 작은 화면을 사용자들이 좀 더 다이나믹하게 사용 할수 있는 용도로 바꿀수 있다.

이 처럼 Fragemnt는 테블릿과 좀더 다이나믹한 어플리케이션 개발에 필수로 사용되므로 안드로이드 개발 자라면 반드시 익혀 두길 권한다.