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österildiğinden emin olun.

Android 12'den itibaren sistem, tüm uygulamalar için baştan ve hazırda başlatma durumlarında Android sistem varsayılan açılış ekranını uygular. Bu sistem açılış ekranı varsayılan olarak uygulamanızın başlatıcı simgesi öğesi ve temanızın windowBackground (tek renkse) kullanılarak oluşturulur.

Uygulamanızı taşımazsanız Android 12 ve sonraki sürümlerde uygulama başlatma deneyiminiz bozulabilir veya istenmeyen sonuçlara yol açabilir.

  • 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 düşük kaliteli veya istenmeyen deneyimleri önleyebilirsiniz. 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.

SplashScreen uyumlu kitaplığı

SplashScreen API'yi doğrudan kullanabilirsiniz ancak bunun yerine Androidx SplashScreen uyumluluk kitaplığını kullanmanızı önemle tavsiye ederiz. Uyumluluk kitaplığı, SplashScreen API'sini kullanır, geriye dönük uyumluluğu etkinleştirir ve tüm Android sürümlerinde açılış ekranı görüntüleme için tutarlı bir görünüm ve his oluşturur. Bu doküman, compat kitaplığı kullanılarak yazılmıştır.

Doğrudan SplashScreen API'yi kullanarak taşıma yaparsanız Android 11 ve önceki sürümlerde başlangıç ekranınız taşıma öncesiyle aynı görünür. Android 12'den itibaren başlangıç ekranı Android 12'nin görünümüne ve tarzına sahiptir.

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 açılış 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 açılış ekranı etkinliğiyle sunulan 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 değerinizi 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 üst öğesine sahip bir tema oluşturun. postSplashScreenTheme değerini Activity'ın kullanması gereken temaya, windowSplashScreenAnimatedIcon değerini ise bir çizilebilir veya animasyonlu çizilebilir öğeye 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. Manifestte, 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()'u aramadan önce başlangıç etkinliğinde installSplashScreen'ü 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, isteğe bağlı olarak animasyonu özelleştirmek veya başlangıç ekranını ekranda daha uzun süre tutmak için kullanabileceğiniz başlangıç ekranı nesnesini döndürür. Animasyonu özelleştirme hakkında daha fazla bilgi için Başlangıç ekranını daha uzun süre ekranda tutma ve Başlangıç ekranını kapatma animasyonunu özelleştirme başlıklı makaleleri inceleyin.

Ö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ızla Activity ne yapacağınıza karar verin. Şu seçeneklerden birini tercih edebilirsiniz:

  • Özel etkinliği saklayın ancak gösterilmesini engelleyin.
  • Marka bilinci oluşturma nedenleriyle özel etkinliği kaldırma.
  • Özel etkinliği kaldırın ve uygulamanızı gerektiği gibi 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ı kaldırmanın yolları üzerine 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 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 sorunsuz bir geçiş 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 etkinliği tutma

Marka bilinirliği nedeniyle önceki bir başlangıç ekranını Activity kullanmak istiyorsanız başlangıç ekranını kapatma animasyonunu özelleştirerek sistem başlangıç ekranından özel başlangıç ekranınıza Activity geçebilirsiniz. Ancak mümkünse bu senaryoyu önlemek 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 açılış ekranı etkinliğini kaldırın

Genel olarak, açılış ekranlarının kopyalanmasını önlemek, verimliliği artırmak ve açılış ekranı yükleme sürelerini azaltmak için önceki özel açılış ekranınızı Activitytamamen 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. Uygulamanın ilk çalıştırıldığında çalışması için gerekli olmayan bileşenleri veya kitaplıkları yüklemekten ya da ilk kullanıma hazırlamaktan 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 ihtiyacı varsa bu bileşeni yalnızca gerçekten ihtiyaç duyulduğunda yükleyin (başlatma sırasında değil) veya uygulama başladıktan sonra yüklemek için arka plan iş parçacığı kullanın. Application.onCreate() dosyanızı mümkün olduğunca küçük tutmaya çalışın.

    Uygulama başlangıcında 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ılabilmesine rağmen geç yüklenen modüllerin önüne geçitler eklemeyin.

  • Az miktarda veri yerel olarak 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 açılış ekranı uygulamak için Açılış ekranını daha uzun süre ekranda tutma başlıklı makalede açıklanan adımları uygulayın.

  • Yer tutucuları gösterin. Belirsiz süreleri olan ağ tabanlı yüklemeler için açılış 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 ekleyebilirsiniz. İçerik yüklendiğinde sorunsuz bir geçiş sağlamak için yüklenen içerik yapısının iskelet yapısıyla olabildiğince eşleştiğinden emin olun.

  • Önbelleğe alma özelliğini 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 geldiğinde, daha güncel içerikleri yüklerken bu önbelleğe alınmış içeriği gösterebilirsiniz.

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