어느날 갑자기 안드로이드 앱 스플래시 화면이 이상하게 보이기 시작했습니다.
대응.. 해야겠죠... ㅎㅎ 🥲🥲🥲
현상은 다음과 같습니다.
처음 보이는 앱 아이콘 모양 -> Android12 기본 삽입되는 Splash
그 후 보이는 쿠팡 글씨 화면 -> 앱에서 구현한 SplashActivity 화면
결론 부터 말해드리겠습니다.
해당 현상은 OS12 버전 이상에서만 나타나는 현상으로, Google 에서 강제적으로 앱 아이콘 모양의 스플래시를 화면에 노출해주고 있죠.
https://developer.android.google.cn/about/versions/12/features/splash-screen?hl=ko
세가지 대응방법이 있다고 생각합니다.
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 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
그리고 Google 에서 모든 앱의 스플래시 디자인이 통일되어 보여지길 원하는게 아닐까요?? 🧑💻🧑💻🧑💻
- 추가적으로 Flutter Splash Screen에 대한 내용을 원하신다면 💁♂️💁♂️💁♂️
여기까지 저의 긴 글을 읽어주셔서 감사합니다.
제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 해보겠습니다.
'Android > 스터디 노트' 카테고리의 다른 글
[Android] RecyclerView Drag&Drop/Swipe 기능 구현(ItemTouchHelper) 드래그 앤 드롭 (1) | 2022.08.21 |
---|---|
[Android] RecyclerView 깜빡이는 현상 해결 (notifyDataSetChanged) (0) | 2022.08.17 |
[Android] Kotlin RecyclerView 알아보기 (0) | 2022.08.17 |
[Google Play Store] 구글 테스트 계정의 모든것, 구글심사 테스트 계정, 인앱결제 테스트 계정 (4) | 2022.07.25 |
[Android] SHA-1 key 확인 (AndroidStudio - Bumblebee ver.) (0) | 2022.05.11 |
최근댓글