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ı uygularsanız uygulamanızı Android 12 ve sonraki sürümlerde doğru şekilde görüntülenmesini sağlamak için SplashScreen API'ye taşıyın.

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. Varsayılan olarak bu sistem başlangıç ekranı, uygulamanızın başlatıcı simge öğesi kullanılarak oluşturulur ve windowBackground olduğunu unutmayın.

Uygulamanızı taşımazsanız Android 12 ve kalitesi düşebilir veya istenmeyen sonuçlar doğurabilir.

  • Mevcut başlangıç ekranınız bir geçerli olan özel tema android:windowBackground, Sistem, özel başlangıç ekranınızı varsayılan bir Android sistemiyle değiştirir başlangıç ekranı (Android 12 ve sonraki sürümlerde). Bu, uygulamanızın amacı olmayabilir sunmaktır.

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

Bu belgede açıklanan taşıma işlemini tamamlayarak bu düşük kaliteli veya istenmeyen deneyimleri önleyebilirsiniz. Taşıma işleminden sonra API, başlatma süresini iyileştirir, açılış 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ığı

SplashScreen API'yi doğrudan kullanabilirsiniz ancak Androidx SplashScreen uyumlu kitaplığı . 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 karşılaştırma kullanılarak yazılmıştır kitaplığını açar.

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 tamamen 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 karşılaştırma kitaplığını kullanarak taşıma işlemi gerçekleştirirseniz sistem tüm Android sürümlerinde aynı başlangıç ekranı kullanılır.

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ı uygulayın.

Bu prosedür, taşıdığınız uygulama türü için geçerlidir. var. Özel bir Activity hizmetinden veri taşıyorsanız en iyi uyarlamak için bu dokümanda açıklanan uygulamaları özelleştirilmiş başlangıç ekranı Activity. 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 compat 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. Örneğin, postSplashScreenTheme ve Activity için kullanılması gereken tema çizilebilir veya animasyonlu hale getirilecek windowSplashScreenAnimatedIcon değeri çekilebilir. 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 istiyorsanız Theme.SplashScreen.IconBackground temasını kullanabilir ve windowSplashScreenIconBackground özelliğini ayarlayabilirsiniz.

  3. Manifest'te, başlangıç etkinliğinin temasını belirlediğiniz temayla değiştirin hesap oluşturabilirsiniz.

    <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, başlangıç ekranı nesnesini döndürür. Bu nesneyi isteğe bağlı olarak animasyonu özelleştirmek veya başlangıç ekranını ekranda daha uzun süre tutmak için kullanabilirsiniz. Animasyonu özelleştirmeyle ilgili daha fazla ayrıntı için bkz. Başlangıç ekranını ekranda daha uzun süre tutma ve Başlangıç ekranını kapatmak için animasyonu özelleştirin.

Ö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) yapılacak. Aşağıdakiler mevcut: seçenekler:

  • Ö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österilmesini engelleme

Önceki açılış ekranınız Activity öncelikle yönlendirme için kullanılıyorsa 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 yerinde tutmak ancak oluşturmasını durdurmak için SplashScreen.setKeepOnScreenCondition kullanabilirsiniz. Bu işlem, açılış 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 kaldırma

Marka bilinci oluşturma amacıyla önceki bir başlangıç ekranını Activity kullanmak istiyorsanız sistem başlangıç ekranından özel başlangıç ekranınıza geçebiliriz Animasyonu açılışı kapatmak için özelleştirerek Activity dokunun. Ancak, mümkünse bu senaryodan kaçınmak ve SplashScreen kullanmak en iyisidir. Başlangıç ekranınızı markalamanızı sağlayacak API.

Bir iletişim kutusu görüntülemeniz gerekirse sonraki özel başlangıç ekranı etkinliğinde veya ana etkinlik bölümünde otomatik olarak seçebilirsiniz.

Ö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 açılış ekranı etkinliklerini göstermemek 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. Yüklemekten kaçınma veya uygulamanın çalışması için gerekli olmayan bileşenleri ya da kitaplıkları büyük önem taşır. Uygulama ihtiyaç duyduğunda bunları daha sonra yükleyin.

    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.

    Ayrıca, Bileşenleri başlatmak için Uygulama Başlatma kitaplığı unutmayın. Bunu yaparken, başlangıç etkinliği için gereken tüm modülleri yüklemeye devam ettiğinizden ve yavaşça yüklenen modüllerin kullanıma sunulduğu yerlerde takılmalara neden olmadığından emin olun.

  • Az miktarda veri yerel olarak yüklerken yer tutucu oluşturun. Şunu kullanın: önerilen tema yaklaşımını seçin ve oluşturma hazır. 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. Yüklenen içerik yapısının iskelet yapısı içerik yüklenirken geçişin yumuşak bir geçişini mümkün olduğunca kolaylaştırmaktır.

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

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