Foggy day
[Android] SplashScreen 완벽 적용 본문
이번 포스팅에서는 Android에서 SplashScreen을 적용하는 방법을 알아보겠습니다. 좀 더 정확하게는 앱 실행 후 launch activity가 나오기 전에 잠시 동안 나오는 window 화면의 UI를 수정하는 내용입니다. 아무 설정을 하지 않는다면 일반적으로 빈 화면이 노출됩니다.
여기서 말하는 SplashScreen은 SplashActivity를 말하는 것이 아닙니다. Android 12부터 사용 가능한 Splash API를 의미합니다. SplashActivity를 사용하지 않는 방법도 있지만, 예제에서는 SplashActivity와 SplashScreen을 둘 다 사용하겠습니다. 일반적으로 SplashActivity에서 처리해야 하는 작업들이 있기 때문입니다.
1. Dependency
2. Resource
3. Theme
4. SplashActivity
1. Dependency
App gradle에서 디펜던시를 추가해 주세요
implementation("androidx.core:core-splashscreen:1.0.1")
2. Resource
window화면에서 보여줄 Resource를 추가해 주세요
저는 아이콘을 안 보여줄 것이기 때문에 빈 화면의 xml 추가했습니다.
res/drawable/transparent_layer.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/transparent" />
</layer-list>
그리고 window 배경에 적용할 이미지를 drawable에 추가해 주세요
res/drawable/splash_bg.xml
3. Theme
themes.xml 파일에서 style을 추가하겠습니다.
<style name="Theme.CustomSplash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@drawable/splash_bg</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/transparent_layer</item>
<item name="postSplashScreenTheme">@style/Theme.Probing</item>
</style>
<style name="Theme.MyApp" parent="Theme.AppCompat.NoActionBar">
<item name="backgroundColor">@color/white</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>
</style>
- windowSplashScreenBackground
앱 시작 시 나타나는 window화면의 배경입니다. drawable의 resource를 입력해도 되고, 컬러를 입력해도 됩니다. - windowSplashScreenAnimatedIcon
화면 가운데에 나올 Icon입니다. drawable에 있는 파일을 추가하면 됩니다. drawable을 설정하기에 따라서 애니메이션 기능도 구현할 수 있습니다. 저는 아이콘을 안 보여줄 것이기 때문에 transparent_layer 파일을 입력했습니다. - postSplashScreenTheme
Theme.CustomSplash를 적용시킨 후에 적용할 Theme를 입력하면 됩니다. 예제에서는 Theme.MyApp이라는 style을 추가 사용했습니다.
4. SplashActivity
앱 실행 후 최초 진입할 Activity입니다.
SplashActivity를 추가해 주시고, manifest에서 앞서 만든 theme을 적용하겠습니다.
<activity
android:name=".activity.SplashActivity"
android:theme="@style/Theme.CustomSplash"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
그리고 SplashActivity.kt에서 SplashScreen을 적용시키겠습니다.
installSplashScreen() 코드를 넣어야 theme들이 window화면에 적용됩니다.
@SuppressLint("CustomSplashScreen")
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
setContentView(R.layout.activity_splash)
}
}
여기까지 작업이 완료됐다면 앱을 실행할 때 추가한 drawable들이 노출되는 것을 확인할 수 있습니다.
'Android' 카테고리의 다른 글
[Android] Android에서 SharedPreference 사용하면서 발생할 수 있는 오류 (0) | 2024.04.03 |
---|---|
[Android] 접근성 서비스(AccessibilityService) - Click Event (0) | 2024.03.24 |
[Android] Hex 투명도 표 (0) | 2024.03.15 |
[Android] Overlay View 그리기 (2) | 2024.03.12 |
[Android] Audio 음성 녹음 기능 구현 (0) | 2024.01.23 |