앱을 만들 때, 스플래쉬 화면이 들어가는 경우가 많은데요.
오늘은 스플래쉬 화면을 만드는 방법에 대해서 정리해 보겠습니다.
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테마로 설정해 주면 준비가 다 된 것인데요.
앱을 실행해 보면, 아래와 같이, 위에서 만든 스플래쉬 화면을 볼 수 있습니다.
'Android 개발 > Android UI' 카테고리의 다른 글
Android 에서 Vector(벡터) 이미지 사용하기 (0) | 2019.01.18 |
---|---|
FragmentDialog 로 대화상자(팝업) 구현하기 (0) | 2019.01.08 |
NavigationView를 이용한 Navigation Drawer 구현하기 (0) | 2017.07.23 |
TextView에 글자가 흐르게 하는 marquee (0) | 2017.07.06 |
EditText의 ImeOptions 로 키보드의 Action 설정하기 (0) | 2017.07.05 |
Keyboard 가 보이는지 알수 있게 해주는 ViewTreeObserver (1) | 2017.06.10 |
ScrollView 에서 하단에 뷰를 붙일 때 필요한 fillViewport (0) | 2017.06.07 |
Activity 화면이 꺼지지 않도록 하려면? (0) | 2017.04.21 |
clipChildren 으로 ViewGroup의 범위를 벗어나는 안드로이드 UI (0) | 2017.04.17 |
안드로이드에서 카톡방식의 ViewPager + Tab 레이아웃 구현 (4) | 2017.03.13 |
댓글