반응형

 

안드로이드 -  Splash screen (스플래쉬 화면) 적용하기

 

 

이번에는 앱을 실행시켰을 때, Main Activity 화면이 보여지기 전에 잠시 화면에 앱의 아이콘이나 로고등을 띄울 수 있는 Splash 화면을 적용하는 방법에 대해서 알아보도록 하겠습니다. 

 

 

   목차

  1. Splash screen (스플래쉬 화면)이란?
  2. Splash screen 구현방법

 

 

1. Splash screen (스플래쉬 화면)이란?

 

Splash screen (스플래쉬 화면)이란 앱을 실행시켰을 때 앱이 로딩되는 시간동안 앱의 아이콘이나 로고등을 화면에 잠시  보여주는 화면을 말합니다. 

 

Splash화면을 적용하는 방법으로 기존에는 Splash용 activity를 하나 만들어 Main Activity 이전에 Splash activity를 띄워 구현했습니다.

그러나 Android 12에서는 SplashScreen 기능을 따로 지원하며, 또한 Android 11 이하 버전에서도 SplashScreen 라이브러리를 사용하여 모든 Android 버전에서 동일한 Splash 화면이 적용될 수 있도록 지원해주고 있습니다.

여기에서는 Android12 이전 버전에서도 적용될 수 있는 Splash 화면 적용 방법에 대해서 알아보도록 하겠습니다. 

 

cf) 참고사항 링크

  1. 구글개발자 사이트 - "스플래쉬 화면"
  2. 구글개발자 사이트 - "기존 스플래쉬 화면구현을 Android12 이상으로 이전 방법"

 

splash 화면
Splash 화면

반응형

 

 

2. Splash screen 구현 방법

 

여기에서는 모든 버전에서 적용 가능한 Splash screen 구현방법으로 설명하도록 하겠습니다. (참고사항 2번 링크 참조)

 

1)  build.gradle 의존성 추가

 

build.gradle 파일에 아래와 같이 의존성을 추가해 줍니다.

  • 의존성 추가 : implementation 'androidx.core:core-splashscreen:1.0.0-alpha01'
android {
   compileSdkVersion 33
   ...
}
dependencies {
   ...
   implementation 'androidx.core:core-splashscreen:1.0.0-alpha01'
}

 

 

 

2) theme.xml 에 테마 추가

 

theme.xml에 Splash 화면을 위한 "Theme.SplashScreen" 테마 스타일을 만들어 주고, <item> 항목중 "postSplashScreenTheme"에는 Activity 화면에서 적용될 테마를 지정해 주도록 합니다. 

 

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.HelloWorld" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        ...
    </style>

    <!-- Splash screen theme. -->
    <style name="Theme.App.Starting" parent="Theme.SplashScreen">
        <item name="windowSplashScreenBackground">@color/teal_700</item>
        <item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
        <item name="postSplashScreenTheme">@style/Theme.HelloWorld</item>  # Required.
    </style>
</resources>

 

 

 

3) manifest 파일 설정

 

AndroidManifest.xml 파일의 <activity> 영역 안에 android:theme="@style/Theme.App.Starting"을 지정해 줍니다.

 

<manifest ... >
    <application ... >
        <activity ...
            android:theme="@style/Theme.App.Starting">
            ...
        </activity>
    </application>
</manifest>

 

 

 

 

4) MainActivity 설정

 

MainActivity에서 setContentView() 메소드를 호출하기전에 아래와 같이 Splash 화면 객체를 반환하는 SplashScreen.installSplashScreen() 메소드를 호출합니다. 

  • SplashScreen splashScreen = SplashScreen.installSplashScreen(this); 
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
        setContentView(R.layout.activity_main);
    }
}

 

반응형

+ Recent posts