스플래시 화면 구현을 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을 사용하여 작성됩니다. 있습니다.

Android 11 이하에서 SplashScreen API를 사용하여 직접 이전하는 경우 스플래시 화면이 이전하기 전과 동일하게 표시됩니다. 시작일 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인 테마를 만듭니다. 다음 값을 설정합니다. Activity에서 사용해야 하는 테마로 postSplashScreenTheme 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가 주로 라우팅에 사용된 경우 삭제하는 방법을 고려해 보세요. 예를 들어, http://www.example.com/ 등의 하위 구성 요소가 있는 단일 활동으로 이동하는 것입니다. 그렇지 않은 경우 가능한 경우 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> <ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
</ph> 그림 1. UI 자리표시자 표시