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

Android 11 veya önceki sürümlerde özel başlangıç ekranı uyguluyorsanız uygulamanızı SplashScreen API'ye taşıyarak Android 12 ve sonraki sürümlerde doğru şekilde görüntülenmesini sağlayın.

Android 12'den itibaren sistem, tüm uygulamalar için soğuk ve hazır başlangıçlarda Android sisteminin varsayılan başlangıç ekranını uygular. Bu sistem başlangıç ekranı, varsayılan olarak uygulamanızın başlatıcı simge öğesi ve tek renkliyse temanızın windowBackground öğesi kullanılarak oluşturulur.

Uygulamanızı taşımazsanız Android 12 ve sonraki sürümlerdeki uygulama başlatma deneyiminiz azalabilir veya istenmeyen sonuçlar doğurabilir.

  • 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 sistem 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 uygulanırsa uygulamanızı Android 12 veya sonraki sürümleri çalıştıran cihazlarda başlattığınızda birden fazla başlangıç ekranı gösterilir: sistem başlangıç ekranı ve ardından mevcut başlangıç ekranı etkinliğiniz.

Bu belgede açıklanan taşıma işlemini tamamlayarak bu olumsuz veya istenmeyen deneyimlerin önüne geçebilirsiniz. Geçiş işleminden sonra API, başlatma süresini iyileştirir, başlangıç ekranı deneyimi üzerinde tam kontrol sağlar ve platformdaki diğer uygulamalarla daha tutarlı bir lansman deneyimi oluşturur.

Başlangıç ekranı karşılaştırma kitaplığı

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

Android 11 ve önceki sürümlerde doğrudan SplashScreen API'yi kullanarak geçiş yaparsanız 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 sahip.

SplashScreen uyumluluk kitaplığını kullanarak taşıma yaparsanız sistem, Android'in tüm sürümlerinde aynı başlangıç ekranını gösterir.

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

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

Bu prosedür, taşıma yaptığınız uygulama türü için geçerlidir. Özel bir Activity uygulamasından geçiş yapıyorsanız özelleştirilmiş başlangıç ekranınızı Activity uyarlamak için bu belgede açıklanan en iyi uygulamaları izleyin. SplashScreen API, özel bir başlangıç ekranı etkinliğiyle ortaya çıkan başlatma gecikmesini de azaltır.

Başlangıç ekranınızı taşımak için aşağıdakileri yapın:

  1. build.gradle dosyasında compileSdkVersion öğenizi değiştirin ve SplashScreen uyumluluk 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 adlı çocuğun ebeveyni ile bir tema oluşturun. postSplashScreenTheme değerini Activity öğesinin kullanması gereken temaya, windowSplashScreenAnimatedIcon değerini ise çekilebilir veya animasyonlu bir çekilebilire 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 arka plan rengi eklemek isterseniz Theme.SplashScreen.IconBackground temasını kullanıp 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şlangıç 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ı ekranda daha uzun süre tutmak için isteğe bağlı olarak kullanabileceğiniz başlangıç ekranı nesnesini döndürür. Animasyonu özelleştirme hakkında daha fazla ayrıntı için Başlangıç ekranını ekranda daha uzun süre tutma ve Başlangıç ekranını kapatmak için animasyonu özelleştirme konularına bakın.

Özel başlangıç ekranı etkinliğinizi başlangıç ekranına uyarlama

Android 12 ve sonraki sürümler için başlangıç ekranına geçtikten sonra önceki özel başlangıç ekranınızı (Activity) ne yapacağınıza karar verin. Bu işlem için aşağıdaki seçenekleri kullanabilirsiniz:

  • Özel etkinliği saklayabilir, ancak görüntülenmesini engelleyebilirsiniz.
  • Marka bilinci oluşturma nedenleriyle özel etkinliği kaldırma.
  • Özel etkinliği kaldırın ve uygulamanızı gerektiği şekilde uyarlayın.

Özel Etkinliğin görüntülenmesini engelleme

Önceki başlangıç ekranınız (Activity) öncelikli olarak yönlendirme için kullanılıyorsa bu ekranı nasıl kaldırabileceğinizi düşünün. Örneğin, gerçek etkinliğe doğrudan bağlantı oluşturabilir veya alt bileşenler içeren tekil bir etkinliğe geçebilirsiniz. Bu mümkün değilse yönlendirme etkinliğini korumak ancak oluşturulmasını durdurmak için SplashScreen.setKeepOnScreenCondition aracını kullanabilirsiniz. Bu işlem, başlangıç ekranını bir sonraki etkinliğe aktarır ve geçişin sorunsuz olmasını sağlar.

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şturma için özel aktiviteyi sakla

Marka bilinci oluşturma amacıyla önceki bir başlangıç ekranını Activity kullanmak istiyorsanız animasyonu açılış 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.

Bir iletişim kutusu görüntülemeniz gerekiyorsa bunu sonraki özel başlangıç ekranı etkinliğinde veya sistem başlangıç ekranından sonra ana etkinlik üzerinde görüntülemenizi öneririz.

Özel başlangıç ekranı Etkinliği'ni kaldırma

Genel olarak, başlangıç ekranlarının yinelenmesini önlemek, verimliliği artırmak ve başlangıç ekranı yükleme sürelerini kısaltmak için önceki özel başlangıç ekranınızı Activity birlikte kaldırmanızı öneririz. Gereksiz başlangıç ekranı etkinliklerinin gösterilmesini önlemek 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. Başlangıçta uygulamanın çalışması için gerekli olmayan bileşenleri veya kitaplıkları yüklemekten ya da başlatmaktan kaçının. Bunları daha sonra, uygulama ihtiyaç duyduğunda yükleyebilirsiniz.

    Uygulamanızın düzgün çalışması için gerçekten bir bileşene ihtiyaç duyuyorsa bunu yalnızca gerçekten gerekli olduğunda (başlatma zamanında değil) yükleyin veya 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 başlatmak için Uygulama Başlatma kitaplığını da kullanabilirsiniz. Bu sırada, başlangıç etkinliği için gerekli tüm modüllerin yüklendiğinden emin olun ve geç yüklenen modüllerin kullanılabildiği yerlerde titremelere izin vermeyin.

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

  • 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 hafif animasyonlar uygulamayı düşünebilirsiniz. İçerik yüklenirken sorunsuz bir geçiş sağlamak amacıyla, yüklenen içerik yapısının iskelet yapısına uygun olduğundan ve mümkün olduğunca emin olun.

  • Önbelleğe almayı kullanma 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 bir sonraki geri döndüğünde, siz daha yeni içerikler yüklerken önbelleğe alınan bu içeriği gösterebilirsiniz.

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