스플래시 화면 구현을 Android 12 이상으로 이전

Android 11 이하에서 맞춤 스플래시 화면을 구현하는 경우 SplashScreen API에 연결하여 Android 12 이상에서 제대로 표시되는지 확인합니다.

Android 12부터 시스템은 Android 시스템 기본 스플래시를 적용합니다. 화면 켜짐 콜드웜 시작합니다. 기본적으로 이 시스템 스플래시 화면은 앱의 런처 아이콘 요소와 테마의 windowBackground(단일 색상인 경우)를 사용하여 구성됩니다.

앱을 이전하지 않으면 Android 12 이상에서 앱 실행 환경이 저하되거나 의도하지 않은 결과를 초래할 수 있습니다.

  • 기존 스플래시 화면이 android:windowBackground를 재정의하는 맞춤 테마 시스템이 맞춤 스플래시 화면을 기본 Android 시스템으로 대체합니다. 스플래시 화면 이는 앱의 의도한 환경이 아닐 수 있습니다.

  • 기존 스플래시 화면이 전용 Activity를 사용하여 구현된 경우 Android 12 이상을 실행하는 기기에서 앱을 실행하면 중복 스플래시 화면: 시스템 스플래시 화면 표시된 다음 기존 스플래시 화면 활동이 표시됩니다.

다음 마이그레이션 프로세스를 설명합니다. 마이그레이션한 후에는 API가 시작 시간을 개선하고, 스플래시 화면 환경을 완벽하게 제어할 수 있습니다. 플랫폼의 다른 앱과의 보다 일관된 시작 환경을 제공합니다.

SplashScreen compat 라이브러리

SplashScreen API를 직접 사용할 수도 있지만 대신 Androidx SplashScreen compat 라이브러리를 사용하는 것이 좋습니다. compat 라이브러리는 SplashScreen API를 사용하고 이전 버전과의 호환성을 사용 설정하고 모든 Android 버전에서 스플래시 화면 표시를 위한 일관된 디자인을 제공합니다. 이 문서는 compat 라이브러리를 사용하여 작성되었습니다.

SplashScreen API를 직접 사용하여 이전하는 경우 Android 11 이하에서는 스플래시 화면이 이전과 동일하게 표시됩니다. Android 12부터 스플래시 화면에 Android 12 디자인이 적용됩니다.

SplashScreen compat 라이브러리를 사용하여 이전하는 경우 시스템에 동일한 스플래시 화면을 사용할 수 있습니다.

스플래시 화면 구현 이전

기존 스플래시 화면을 이전하려면 다음 단계를 완료하세요. Android 12 및 이후 버전에 적용됩니다.

이 절차는 이전하려는 모든 구현 유형에 적용됩니다. 전용 Activity에서 이전하는 경우 이 문서에 설명된 권장사항을 따라 맞춤설정된 스플래시 화면 Activity를 조정합니다. SplashScreen API는 전용 스플래시 화면 활동으로 인해 생긴 시작 지연 시간도 줄여줍니다.

스플래시 화면을 이전하려면 다음 단계를 따르세요.

  1. build.gradle 파일에서 compileSdkVersion을 변경하고 종속 항목의 SplashScreen compat 라이브러리

    build.gradle
    
    android {
       compileSdkVersion 31
       ...
    }
    dependencies {
       ...
       implementation 'androidx.core:core-splashscreen:1.0.0-beta02'
    }
    
  2. 상위 요소가 Theme.SplashScreen인 테마를 만듭니다. postSplashScreenTheme의 값을 Activity가 사용해야 하는 테마로 설정하고 windowSplashScreenAnimatedIcon의 값을 드로어블 또는 애니메이션된 드로어블로 설정합니다. 다른 속성은 선택사항입니다.

    <style name="Theme.App.Starting" parent="Theme.SplashScreen">
       <!-- Set the splash screen background, animated icon, and animation
       duration. -->
       <item name="windowSplashScreenBackground">@color/...</item>
    
       <!-- Use windowSplashScreenAnimatedIcon to add a drawable or an animated
            drawable. One of these is required. -->
       <item name="windowSplashScreenAnimatedIcon">@drawable/...</item>
       <!-- Required for animated icons. -->
       <item name="windowSplashScreenAnimationDuration">200</item>
    
       <!-- Set the theme of the Activity that directly follows your splash
       screen. This is required. -->
       <item name="postSplashScreenTheme">@style/Theme.App</item>
    </style>
    

    아이콘 아래에 배경색을 추가하려면 Theme.SplashScreen.IconBackground 테마를 사용하고 windowSplashScreenIconBackground 속성을 설정하면 됩니다.

  3. 매니페스트에서 시작 활동의 테마를 이전 단계에서 만든 테마로 바꿉니다.

    <manifest>
       <application android:theme="@style/Theme.App.Starting">
        <!-- or -->
            <activity android:theme="@style/Theme.App.Starting">
    ...
    
  4. super.onCreate()를 호출하기 전에 시작 활동에서 installSplashScreen을 호출합니다.

    Kotlin

    class MainActivity : Activity() {
    
       override fun onCreate(savedInstanceState: Bundle?) {
           // Handle the splash screen transition.
           val splashScreen = installSplashScreen()
    
           super.onCreate(savedInstanceState)
           setContentView(R.layout.main_activity)
    ...
    

    자바

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
             // Handle the splash screen transition.
             SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
    
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main_activity);
        }
    }
    

installSplashScreen은 스플래시 화면 객체를 반환하며, 이 객체를 사용하여 애니메이션을 맞춤설정하거나 화면에 스플래시 화면을 더 오래 표시할 수 있습니다. 애니메이션 맞춤설정에 관한 자세한 내용은 다음을 참조하세요. 스플래시 화면을 화면에 더 오래 표시스플래시 화면 닫기 애니메이션 맞춤설정

맞춤 스플래시 화면 활동을 스플래시 화면에 맞게 조정

Android 12 이상용 스플래시 화면으로 이전한 후 이전 맞춤 스플래시 화면 Activity을 어떻게 할지 결정합니다. 다음과 같은 옵션이 있습니다.

  • 맞춤 활동은 유지하되 표시되지 않도록 합니다.
  • 브랜딩을 위해 맞춤 활동을 유지합니다.
  • 맞춤 활동을 삭제하고 필요에 따라 앱을 조정합니다.

맞춤 활동 표시 차단

이전 스플래시 화면 Activity가 주로 라우팅에 사용된 경우 삭제하는 방법을 고려해 보세요. 예를 들어 실제 활동에 직접 연결하거나 하위 구성요소가 있는 단일 활동으로 이동할 수 있습니다. 그렇지 않은 경우 가능한 경우 SplashScreen.setKeepOnScreenCondition 라우팅 활동을 유지하지만 렌더링을 중지하는 것이 좋습니다. 만들기 스플래시 화면을 다음 활동으로 전송하며 전환하지 않아도 됩니다

Kotlin

  class RoutingActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        val splashScreen = installSplashScreen()
        super.onCreate(savedInstanceState)

        // Keep the splash screen visible for this Activity.
        splashScreen.setKeepOnScreenCondition { true }
        startSomeNextActivity()
        finish()
     }
   ...
  

자바

  public class RoutingActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      SplashScreen splashScreen = SplashScreen.installSplashScreen(this);

       super.onCreate(savedInstanceState);

       // Keep the splash screen visible for this Activity.
       splashScreen.setKeepOnScreenCondition(() -> true );
       startSomeNextActivity();
       finish();
    }
  ...
  

브랜딩에 맞춤 활동 유지

브랜딩을 위해 이전 스플래시 화면(Activity)을 사용하려면 다음 단계를 따르세요. 시스템 스플래시 화면에서 맞춤 스플래시 화면으로 전환할 수 있습니다. 스플래시를 닫는 애니메이션을 맞춤설정하여 Activity 화면에서 확인할 수 있습니다. 하지만 가능한 경우 이 시나리오를 피하고 SplashScreen API를 사용하여 스플래시 화면을 브랜딩하는 것이 가장 좋습니다.

대화상자를 표시해야 하는 경우 후속 맞춤 스플래시 화면 활동에 표시할 것을 권장하거나 <start> 토큰으로 전달됩니다.

맞춤 스플래시 화면 활동 삭제

일반적으로는 이전 맞춤 스플래시 화면(Activity)을 완전히 삭제하여 스플래시 화면 중복을 방지하고 효율성을 높이며 스플래시 화면 로드 시간을 줄이는 것이 좋습니다. 중복 스플래시 화면 활동이 표시되지 않게 하기 위해 사용할 수 있는 여러 가지 방법이 있습니다.

  • 구성요소, 모듈 또는 라이브러리에 지연 로드를 사용합니다. 로드 안함 앱이 초기화하는 데 필요하지 않은 구성요소나 라이브러리를 초기화하거나 실행할 수 있습니다 나중에 앱에서 필요할 때 로드합니다.

    앱이 제대로 작동하기 위해 필요한 구성요소가 있다면 시작 시가 아닌 실제로 필요할 때만 로드하거나 앱이 시작된 후 백그라운드 스레드를 사용하여 로드하세요. Application.onCreate()를 가능한 한 가볍게 유지해 보세요.

    또한 앱 시작 라이브러리를 사용하여 애플리케이션을 시작할 때 구성요소를 초기화할 수 있습니다. 이렇게 할 때 시작 활동에 필요한 모든 모듈을 계속 로드하고 지연 로드된 모듈이 나타나는 버벅거림을 발생시키지 않아야 합니다.

  • 소량의 데이터를 로컬에서 로드하는 동안 자리표시자를 만듭니다. 사용 테마 설정 접근 방식을 따르도록 하고 앱이 테마 설정을 완료할 때까지 렌더링을 있습니다. 이전 버전과 호환되는 스플래시 화면을 구현하려면 스플래시 화면을 화면에 더 오래 표시에 설명된 단계를 따르세요.

  • 자리표시자 표시 무기한 기간이 있는 네트워크 기반 로드의 경우 스플래시 화면을 닫고 비동기 로딩을 위한 자리표시자를 표시합니다. 로드 상태를 반영하는 콘텐츠 영역에는 섬세한 애니메이션을 적용하는 것이 좋습니다. 콘텐츠가 로드될 때 원활한 전환을 지원하려면 로드된 콘텐츠 구조가 스켈레톤 구조와 최대한 일치하는지 확인합니다.

  • 캐싱 사용 사용자가 앱을 처음으로 열면 로드 표시기를 표시합니다. 이 다음에 사용자가 앱으로 돌아올 때 이 캐시된 콘텐츠를 표시하고 최신 콘텐츠를 로드할 수 있습니다.

를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">
</ph>
그림 1. UI 자리표시자를 표시합니다.