어느날 갑자기 안드로이드 앱 스플래시 화면이 이상하게 보이기 시작했습니다.

대응.. 해야겠죠... ㅎㅎ  🥲🥲🥲

 

 

 

현상은 다음과 같습니다.

 

 

처음 보이는 앱 아이콘 모양 -> Android12 기본 삽입되는 Splash
그 후 보이는 쿠팡 글씨 화면 -> 앱에서 구현한 SplashActivity 화면

 

쿠팡 앱 Splash

 

결론 부터 말해드리겠습니다.

해당 현상은 OS12 버전 이상에서만 나타나는 현상으로, Google 에서 강제적으로 앱 아이콘 모양의 스플래시를 화면에 노출해주고 있죠.

https://developer.android.google.cn/about/versions/12/features/splash-screen?hl=ko 

 

스플래시 화면  |  Android 12  |  Android Developers

Android 12에서는 모든 앱에 새로운 앱 실행 애니메이션을 사용 설정하는 SplashScreen API를 추가합니다. 여기에는 실행 시 앱 내 모션, 앱 아이콘을 보여주는 스플래시 화면, 앱 자체로의 전환이 포함

developer.android.google.cn

 

세가지 대응방법이 있다고 생각합니다.

 

1. Android12 SplashScreen API 를 활용하여 Google 가이드에 따라간다.

(Android12 버전 미만에서는 제한적인 부분이 존재할 수 있습니다.)

 

2. 해당 Android12 SplashScreen 를 강제로 막고 기존 사용하던 스플래시 화면을 적용한다.

(새로운 스플래시 화면 디자인 작업이 필요하지 않고, Google을 제외하고 모두가 행복한 방법이 아닐까요... ㅎㅎ)

 

3. 일단 방치하고 조금 더 지켜본다.

(아직.. 아무도 모르는거 같은 눈치인데...  👀  )

 

 

 


🔥🔥

자 이제 바뀐 안드로이드 스플래시 화면 적용법을 적용해봐야 겠습니다.

 

  • build.gradle ( 22.04월 기준 splashscreen 최신 버전 정보입니다. )

 

  • themes.xml

 

windowSplashScreenBackground -> 특정 단색으로 배경을 채웁니다.

windowSplashScreenAnimatedIcon -> 시작 창 중앙의 아이콘을 대체합니다. AnimationVectorDrawable를 사용하여 애니메이션으로 노출도 가능합니다.

windowSplashScreenAnimationDuration -> 스플래시 시간 설정 (최대 1,000ms)

windowSplashScreenBrandingImage-> 스플래시 화면 하단에 표시할 이미지를 설정할 수 있습니다. 디자인 가이드라인에서는 브랜드 이미지 사용을 권장하지 않습니다.

 

자료 참고 -> https://itnext.io/a-comprehensive-guide-to-android-12s-splash-screen-api-644609c811fa

 

 

 

  • AndroidManifest.xml ( SplashActivity 없이 MainActivity에서 스플래시 구현 자세한 내용은 아래에 있습니다. )

 

  • MainActivity.kt

 

여기서 잠깐!! 🖐🖐

 

 

 

기존 스플래시 화면구성
SplashActivity -> MainActivity

Android12 Splash
MainaActivity ( theme 속성 추가 및 installSplashScreen() 메소드 추가하여 사용 )

 

Android12 Splash 사용을 하면 기존 방식처럼 스플래시 액티비티를 생성하고 해당 액티비티에서 스플래시 이미지 및 이미지 작업을 하는것이 아닌, 테마속성과 SplashScreenAPI 를 사용하여 메인에서도 바로 적용 가능합니다.

( SplashActivity를 따로 나누어 초기 데이터 통신 등 작업이 필요하다면 기존처럼 분리하여 사용하는게 더 편할거 같기도.... )

 

추가적으로 Android12 SplashScreen 화면에서

windowSplashScreenAnimatedIcon : AnimationVectorDrawable 아이콘으로 사용하여 움직임을 적용할 수 있고

정적인 아이콘 사용후 스플래시 애니메이션 효과를 줄 수 있습니다 (Android12 버전 이상 에서만...)

해당 소스를 MainActivity에 추가 해줍니다.

 

 

Android12 Splash Screen

 


 

다음으로 Android12 SplashScreen 를 강제로 막는 방법입니다.

( 이 방법이 좋은 방법인지 아닌지는 잘 모르겠습니다... )   😅

Android12 Splash 막기를 통해 기존 운영하던 Splash를 Android12 Splash 와 겹침없이

기존 스플래시 디자인 느낌 그대로 사용하려고 찾아봤습니다.

 

Android12 Splash disable? Android12 스플래시 막기? 

에 대해 설명드리겠습니다.

 

 

  • themes.xml

  • AndroidManifest.xml


 

Android12 Splash Screen 의 장점이라면 앱이 설치되고 첫 실행 시 처음보여지는 스플래시 액티비티가 실행되어 보여지기 까지 약간의 버벅거리는 시간이 존재한다고 합니다. (낮은 스팩의 모바일 기기라면 더 오랜 시간)

하지만 Android12 Splash는 바로 반응한다고 합니다. (정말 일까..?)

실행시 앱의 현재 앱 상태 (cold-start, hot-start, warm-start)에 따라 제어해준다고 합니다.

https://developer.android.google.cn/topic/performance/vitals/launch-time?hl=ko#cold 

 

앱 시작 시간  |  Android 개발자  |  Android Developers

사용자는 앱이 응답하고 빠르게 로드되기를 기대합니다. 시작 시간이 느린 앱은 이 기대를 충족하지 못하며 사용자에게 실망스러울 수 있습니다. 이러한 종류의 좋지 못한 경험으로 인해 사용

developer.android.google.cn

 

그리고 Google 에서 모든 앱의 스플래시 디자인이 통일되어 보여지길 원하는게 아닐까요??  🧑‍💻🧑‍💻🧑‍💻

 

 


 

 - 추가적으로 Flutter Splash Screen에 대한 내용을 원하신다면 💁‍♂️💁‍♂️💁‍♂️

 

[Flutter] Flutter Splash Screen (플러터 스플래시 화면)

🧑‍💻🧑‍💻 앱 개발의 시작이자 출입문과 같은 역할을 하는 스플래시 화면 via GIPHY Flutter에서 Splash Screen을 구현 방법을 알아보겠습니다. Flutter Splash Screen. 🔥 자 당연한 이야기지만 Flutter에

salmonpack.tistory.com

 

 


여기까지 저의 긴 글을 읽어주셔서 감사합니다.

제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 해보겠습니다.

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기