Başlangıç ekranı uygulamanızı Android 12 ve sonraki bir sürüme taşıma

Android 11 veya önceki sürümlerde özel bir başlangıç ekranı kullanıyorsanız Android 12 ve sonraki sürümlerde doğru şekilde görüntülendiğinden emin olmak için uygulamanızı SplashScreen API'ye taşıyın.

Android 12'den itibaren sistem, tüm uygulamalar için baştan başlatmada ve hazır durumda başlatmada Android sistem varsayılan başlangıç ekranını uygular. Varsayılan olarak bu sistem başlangıç ekranı, uygulamanızın başlatıcı simgesi öğesi ve tek bir renkse temanızın windowBackground öğesi kullanılarak oluşturulur.

Uygulamanızı taşımazsanız Android 12 ve sonraki sürümlerde uygulama başlatma deneyiminiz kötüleşebilir veya istenmeyen sonuçlarla karşılaşabilirsiniz.

  • Mevcut başlangıç ekranınız android:windowBackground özelliğini geçersiz kılan özel bir tema kullanılarak uygulanırsa sistem, Android 12 ve sonraki sürümlerde özel başlangıç ekranınızı varsayılan bir Android sistemi başlangıç ekranıyla değiştirir. Bu, uygulamanızın amaçladığı deneyim olmayabilir.

  • Mevcut başlangıç ekranınız özel bir Activity kullanılarak uygulandıysa uygulamanızın Android 12 veya sonraki sürümleri çalıştıran cihazlarda başlatılması yinelenen başlangıç ekranlarına neden olur: sistem başlangıç ekranı ekranları ve ardından mevcut başlangıç ekranı etkinliğiniz.

Bu belgede açıklanan taşıma işlemini tamamlayarak bu bozulmuş veya istenmeyen deneyimleri önleyebilirsiniz. Taşıma işleminden sonra API, başlatma süresini iyileştirir, başlangıç ekranı deneyimi üzerinde tam kontrol sahibi olmanızı sağlar ve platformdaki diğer uygulamalarla daha tutarlı bir başlatma deneyimi oluşturur.

SplashScreen uyumlu kitaplığı

Doğrudan SplashScreen API'yi kullanabilirsiniz ancak bunun yerine Androidx SplashScreen uyumlu kitaplığını kullanmanızı önemle tavsiye ederiz. Uyumluluk kitaplığı SplashScreen API'yi kullanır, geriye dönük uyumluluğu sağlar ve tüm Android sürümlerinde başlangıç ekranı ekranı için tutarlı bir görünüm ve tarz oluşturur. Bu belge, uyumlu kitaplık kullanılarak yazılmıştır.

Doğrudan SplashScreen API'yi kullanarak taşıma işlemi yaparsanız Android 11 ve önceki sürümlerde başlangıç ekranınız taşıma işleminden öncekiyle tam olarak aynı görünür. Başlangıç ekranı, Android 12'den itibaren Android 12 görünüm ve tarzına sahiptir.

SplashScreen uyumluluk kitaplığını kullanarak taşıma işlemi gerçekleştirirseniz sistem, tüm Android sürümlerinde aynı başlangıç ekranını görüntüler.

Başlangıç ekranı uygulamanızı taşıma

Mevcut başlangıç ekranı uygulamanızı Android 12 ve sonraki bir sürüme taşımak için aşağıdaki adımları tamamlayın.

Bu prosedür, verilerinizi taşıdığınız uygulama türü için geçerlidir. Özel bir Activity öğesinden geçiş yapıyorsanız özelleştirilmiş başlangıç ekranınızı Activity uyarlamak için bu dokümanda açıklanan en iyi uygulamaları uygulayın. SplashScreen API, özel bir başlangıç ekranı etkinliği nedeniyle ortaya çıkan başlatma gecikmesini de azaltır.

Başlangıç ekranınızı taşımak için şunları yapın:

  1. build.gradle dosyasında, compileSdkVersion öğenizi değiştirin ve SplashScreen uyumlu kitaplığını bağımlılıklara ekleyin.

    build.gradle
    
    android {
       compileSdkVersion 31
       ...
    }
    dependencies {
       ...
       implementation 'androidx.core:core-splashscreen:1.0.0-beta02'
    }
    
  2. Theme.SplashScreen kullanıcısının ebeveyni ile bir tema oluşturun. postSplashScreenTheme değerini Activity tarafından kullanılması gereken temaya, windowSplashScreenAnimatedIcon değerini ise çekilebilir veya animasyonlu bir çekilebilirliğe ayarlayın. Diğer özellikler isteğe bağlıdır.

    <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>
    

    Simgenizin altına bir arka plan rengi eklemek istiyorsanız Theme.SplashScreen.IconBackground temasını kullanarak windowSplashScreenIconBackground özelliğini ayarlayabilirsiniz.

  3. Manifest'te, başlangıç etkinliğinin temasını önceki adımda oluşturduğunuz temayla değiştirin.

    <manifest>
       <application android:theme="@style/Theme.App.Starting">
        <!-- or -->
            <activity android:theme="@style/Theme.App.Starting">
    ...
    
  4. super.onCreate() numaralı telefonu aramadan önce başlatma etkinliğinde installSplashScreen adlı kişiyi arayın.

    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)
    ...
    

    Java

    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, animasyonu özelleştirmek veya başlangıç ekranını daha uzun süre ekranda tutmak için isteğe bağlı olarak kullanabileceğiniz başlangıç ekranı nesnesini döndürür. Animasyonu özelleştirmeyle ilgili daha fazla bilgi için Başlangıç ekranını uzun süre ekranda tutma ve Başlangıç ekranını kapatmak için animasyonu özelleştirme bölümlerine bakın.

Özel başlangıç ekranı Etkinliğinizi başlangıç ekranına uyarlayın

Android 12 ve sonraki sürümlerin başlangıç ekranına geçiş yaptıktan sonra, önceki özel başlangıç ekranınızı (Activity) nasıl kullanacağınıza karar verin. Aşağıdaki seçenekleri kullanabilirsiniz:

  • Özel etkinliği saklayın, ancak gösterilmesini engelleyin.
  • Marka bilinci oluşturma nedeniyle özel etkinliği saklayın.
  • Özel etkinliği kaldırın ve uygulamanızı gerektiği gibi uyarlayın.

Özel Etkinliğin gösterilmesini engelleme

Önceki başlangıç ekranınız Activity birincil olarak yönlendirme amacıyla kullanılıyorsa bu ekranı kaldırmanın yollarını düşünün. Örneğin, doğrudan gerçek etkinliğe bağlantı verebilir veya alt bileşenleri olan tek bir etkinliğe geçebilirsiniz. Bu mümkün değilse yönlendirme etkinliğini kaldırmak ancak oluşturulmasını durdurmak için SplashScreen.setKeepOnScreenCondition aracını kullanabilirsiniz. Böylece başlangıç ekranı bir sonraki etkinliğe aktarılır ve sorunsuz bir geçiş sağlanır.

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()
     }
   ...
  

Java

  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();
    }
  ...
  

Marka bilinci oluşturmak için özel etkinliği koruyun

Marka bilinci oluşturma amacıyla önceki bir başlangıç ekranını Activity kullanmak istiyorsanız animasyonu başlangıç ekranını kapatacak şekilde özelleştirerek sistem başlangıç ekranından özel başlangıç ekranınıza Activity geçiş yapabilirsiniz. Ancak mümkünse bu senaryodan kaçınmak ve başlangıç ekranınızı markalamak için SplashScreen API'yi kullanmak en iyisidir.

İletişim kutusu görüntülemeniz gerekirse bunu sonraki özel başlangıç ekranı etkinliğinde veya sistem başlangıç ekranından sonra ana etkinliğin üzerinde görüntülemenizi öneririz.

Özel başlangıç ekranı etkinliğini kaldırma

Başlangıç ekranlarının yinelenmesini önlemek, verimliliği artırmak ve başlangıç ekranı yükleme sürelerini azaltmak için genellikle önceki özel başlangıç ekranınızı Activity tümüyle kaldırmanızı öneririz. Gereksiz başlangıç ekranı etkinlikleri göstermekten kaçınmak için kullanabileceğiniz farklı teknikler vardır.

  • Bileşenleriniz, modülleriniz veya kitaplıklarınız için geç yükleme özelliğini kullanın. Uygulamanın başlangıçta çalışması için gerekli olmayan bileşenleri veya kitaplıkları yüklemekten ya da başlatmaktan kaçının. Bunları daha sonra uygulama gerektiğinde yükleyin.

    Uygulamanızın düzgün çalışması için bir bileşene gerçekten ihtiyaç varsa onu yalnızca gerçekten gerekli olduğunda yükleyin ve lansman zamanında değil, uygulama başladıktan sonra yüklemek için bir arka plan iş parçacığı kullanın. Application.onCreate() cihazınızı mümkün olduğunca hafif tutmaya çalışın.

    Uygulama başlatılırken bileşenleri ilk kullanıma hazırlamak için Uygulama Başlangıç kitaplığından da yararlanabilirsiniz. Bunu yaparken, başlangıç etkinliği için gerekli tüm modülleri yüklediğinizden emin olun ve geç yüklenen modüllerin kullanılabilir hale geldiği yerlerde olumsuzluklar eklemeyin.

  • Yerel olarak az miktarda veri yüklerken yer tutucu oluşturun. Önerilen tema oluşturma yaklaşımını kullanın ve uygulama hazır olana kadar oluşturmayı bekletin. Geriye dönük uyumlu bir başlangıç ekranı uygulamak için Başlangıç ekranını uzun süre ekranda tutma bölümünde açıklanan adımları uygulayın.

  • Yer tutucuları gösterin. Belirsiz sürelere sahip ağ tabanlı yüklemeler için başlangıç ekranını kapatın ve eşzamansız yükleme için yer tutucuları gösterin. İçerik alanına, yükleme durumunu yansıtan ince animasyonlar uygulamayı düşünün. İçerik yüklenirken sorunsuz bir geçişi desteklemek için, yüklenen içerik yapısının iskelet yapıyla uyumlu olduğundan emin olun.

  • Önbelleğe almayı kullanın. Bir kullanıcı uygulamanızı ilk kez açtığında, aşağıdaki şekilde gösterildiği gibi bazı kullanıcı arayüzü öğeleri için yükleme göstergeleri gösterebilirsiniz. Kullanıcı uygulamanıza tekrar döndüğünde, daha yeni içerik yüklerken bu önbelleğe alınmış içeriği gösterebilirsiniz.

Şekil 1. Kullanıcı arayüzü yer tutucuları gösteriliyor.