Splash Activity의 사용 개요
안드로이드 앱을 만들 때 사용자 경험을 높이기 위해 가장 먼저 보이는 스플래시 스크린은 굉장히 중요하다고 생각한다. 자신의 어플 로고나 이름을 띄워 앱의 존재감을 되새길 수 있는 중요포인트라고 생각한다. 나는 스플래시 화면을 SplashScreen API를 사용하여 화면 구현을 해보고자 했다.
목표
- 앱 실행 시 로고 아이콘이 보이도록 스플래시 화면 구성
- SplashScreen API를 활용하여 SplashActivity 생성을 따로 하지 않으며 MainActivity 하나로 스플래시 구성
구현 순서
1️⃣ Splash 이미지 추가
- res/drawable 폴더에 splash_icon.png와같은 아이콘 이미지를 추가한다.
- 나의 경우에는 아직 정해진 로고나 어플명이 없어서 제일 좋아하는 과일은 포도의 사진으로 대체했다.
2️⃣ colors.xml에서 컬러 정의
- colors.xml에서 자신이 사용할 색상을 정의해두면 변수명으로 색상을 사용하기에 용이하다.
<resources>
<color name="white">#FFFFFF</color>
<color name="primary">#017356</color>
</resources>
3️⃣ themes.xml 설정
<resources>
<!-- Splash 테마 -->
<style name="Theme.Coffee" parent="Theme.Material3.DayNight.NoActionBar">
<item name="windowSplashScreenBackground">@color/white</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/splash_icon</item>
<item name="windowSplashScreenIconBackgroundColor">@color/white</item>
<item name="postSplashScreenTheme">@style/Theme.Coffee.App</item>
</style>
<!-- 앱의 실제 테마 -->
<style name="Theme.Coffee.App" parent="Theme.Material3.DayNight.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorOnPrimary">@color/white</item>
</style>
</resources>
- Theme.Coffee는 런처에서 앱을 켤 때 가장 먼저 적용되는 테마이다.
- 여기에서 windowSplashScreen* 세트가 OS 스플래시의 룩을 결정한다.
- postSplashScreenTheme은 스플래시가 끝나고 액티비티가 사용할 실제테마를 의미하며 이때 Theme.Coffee.App이 실행되도록 작성했다.
포인트: Manifest에서는 Theme.Coffee만 걸어두면 스플래시동안은 Theme.Coffeerk 실행되고 끝나고는 자동으로 Theme.Coffee.App으로 스위칭되어 실행된다.
4️⃣ build.gradle(:app)
- SplashScreenAPI 이용을 위해 dependencies를 추가해줘야 한다.
android {
compileSdk 34
defaultConfig {
applicationId "com.zloow.coffee"
minSdk 21
targetSdk 34
}
}
dependencies {
implementation "androidx.core:core-splashscreen:1.0.1"
}
5️⃣ AndroidManifest.xml
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/Theme.Coffee">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 런처가 Manifest를 실행할 때 적용할 전체 테마로 Theme.Coffee를 걸어둔다.
- 그러면 OS가 스플래시를 그리고 스플래시 종료 시 자동으로 Theme.Coffee.App으로 넘어가게 된다.
- <activity...> 의 의미:
-> 이 안드로이드 앱에 MainActivity라는 화면이 존재한다고 OS에 등록하는 것
-> Activity를 이렇게 Manifest에 등록을 해야만 시스템이 인식하고 실행이 가능하다.
- <intent-filter>...</intent-filter>
-> 이 액티비티가 어떤 Intent를 처리할 수 있는지 지정
-> 여기서 쓰인 건 앱 진입점을 정의하는 필수세트이다.
6️⃣ MainActivity.java 설정
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.splashscreen.SplashScreen;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// 스플래시 화면 활성화
SplashScreen.installSplashScreen(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
- 이 액티비티에서는 SplahScreen API를 쓸거에요 라는 선언을 한다.
- 이 시점에는 os가 이미 스플래시를 보여주고 있고 setCountView()로 메인 레이아웃을 붙이면 첫 프레임이 그려지는 순간 스플래시가 자연스럽게 사라진다.
앱 실행과정
: 런처 -> Manifest -> Splash -> Activity
마무리
SplashScreen API를 활용하니 MainActivity로만으로도 자연스럽게 전환을 할 수 있어서 좋았다. 간단한 로고 이미지만 있어도 완성도 높은 시작화면을 만들 수 있다는 점이 장점이라고 생각한다.
'앱개발 > Java - AndroidStudio' 카테고리의 다른 글
| Layout과 Button, TextView 위젯, button click 이벤트 (1) | 2025.03.23 |
|---|---|
| Toast 메세지와 Snackbar 메세지 띄우기 (0) | 2025.03.22 |
| [Java] AndroidStudio에서 Java로 개발하기 (1) | 2025.03.22 |