Android 개발/Android UI

Splash (로딩화면) 화면 만들기 | Android

Developer88 2017. 6. 18. 14:39
반응형

앱을 만들 때, 스플래쉬 화면이 들어가는 경우가 많은데요.

오늘은 스플래쉬 화면을 만드는 방법에 대해서 정리해 보겠습니다.

 

1. Google의 SplashScreen 가이드

구글의 SplashScreen 가이드는 아래의 링크를 보면 되는데요.

https://material.io/guidelines/patterns/launch-screens.html

 

로딩시간이 짧은 앱에 적합하다고 되어 있네요.

SplashScreen은 다음과 같이 두가지로 나누어 지는데요.

  • 로딩전까지 핵심 UI들을 PlaceHolder로서 미리 보여주는 PlaceHolder UI
  • 브랜드를 홍보하기위한 Branded launch screens

아무래도, 두번째인 Branded launch screen의 경우가 많을 것 같습니다.

 

그럼 어떻게 구현하는지 정리해 보겠습니다.

 

2. Splash 구현

Splash화면을 구현하는 방법은 의외로 간단합니다.

Splash화면을 LayerDrawable로 작성해 준 다음,

앱 론칭시 테마의 배경화면을  위에서 작성한 Drawable로 설정해 주고요.

론칭이 되면, MainActivity를 호출해주는 방법을 사용해주면 되는데요.

 

그럼, 하나하나 작성해 보겠습니다.

 

3. LayerDrawable 작성

우선은 Drawable폴더에 xml파일을 생성합니다. 파일이름은 splash.xml로 하였구요.

이 LayerDrawable은 여러가지 드로어블로 구성된 배열을 관리하는 드로어블 객체인데요.

 

Layer-list를 루트로, 각각의 item들이 드로어블을 구성합니다.

Layer라는 이름에서 알수 있듯이, 각각의 드로어블은 계층을 구성하는데요.

가장 나중에 써진 item, 즉 드로어블이 가장 위에 그려집니다.

 

 

 

조금은 생소할 수 있지만, FrameList를 생각하면 쉬운데요.

top, bottom, left, right마진도 사용할 수 있습니다. 

bitmap에 앱의 아이콘들을 불러주면 되구요.

 

이제, 테마를 작성해서, 위에서 만든 layerDrawable을 사용합니다.

 

 

4. Splash Theme 작성

Splash화면을 구성하는 테마를 작성해 주는데요.

기존의 기본 테마를 Parent로 설정해 주시구요.

ActionBar나 Title은 없도록 해 줍니다.

가장 중요한 부분은 windowBackGround를 splash로 해주는 것입니다.

 

 

이제, 이 테마를 사용할 Splash Activity를 생성해 보겠습니다.

 

5. Splash Activity와 Manifest

비어있는 SplashActivity를 생성해 주시구요.
다음과 같이, mainActivity 를 호출해주고, finish()해주도록 합니다.
참고로, 아래에서는 Test용으로 Thread.sleep()을 사용해 주었는데요.
로딩시간이 너무 짧아서, 볼 수 없는 경우가 아닌이상, 실제로 사용할 때는 파란색으로 하이라이트 된 부분만 사용하는 것이 좋습니다.
구글에서도, 짧게 보여주고 넘어가는 것이 좋다고, 가이드 하고 있구요.

 

 

이 후에, 아래와 같이 Manifest를 수정해 주는데요.

이 SplashActivity가 앱 론칭시에 시작되도록, intent-filter를 설정해 줘야 합니다.
마지막으로, theme을 위에서 설정한 Splash테마로 설정해 주면 준비가 다 된 것인데요.

 

 

앱을 실행해 보면, 아래와 같이, 위에서 만든 스플래쉬 화면을 볼 수 있습니다.

 

 

728x90