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 uygulamasını SplashScreen API'ye aktarmak için Android 12 ve sonraki sürümlerde doğru şekilde görüntülendiğinden emin olun.

Android 12'den itibaren sistem, Android sistem varsayılan açılışını uygular. ekranı açık soğuk ve sıcak başlangıcı tüm uygulamalar için. 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 verebilir.

  • Mevcut başlangıç ekranınız bir android:windowBackground özelliğini geçersiz kılacak özel bir tema, 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 sahip olacaksınız.

  • 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ğinizi izler.

taşıma sürecini yönetmek için aşağıdaki adımları uygulayın. Taşıma 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 Androidx SplashScreen uyumlu kitaplığı . Uyumluluk kitaplığı SplashScreen API'yi kullanır. geriye dönük uyumluluk sağlar ve başlangıç ekranı için tutarlı bir görünüm ve tarz oluşturur tüm Android sürümlerinde gösterilir. Bu doküman, uyumluluk kodu kullanılarak yazılmıştır kitaplığını açar.

Android 11 ve önceki sürümlere taşıma işlemini doğrudan SplashScreen API'yi kullanarak yapıyorsanız Başlangıç ekranınız taşıma işleminden öncekiyle tamamen aynı görünür. Başlangıç tarihi Android 12'nin başlangıç ekranı, Android 12'nin tarzını sunar.

SplashScreen uyumluluk kitaplığını kullanarak taşıma yaparsanız sistem tüm Android sürümlerinde aynı başlangıç ekranı kullanılır.

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

Mevcut başlangıç ekranınızı taşımak için aşağıdaki adımları tamamlayın ve bu sürümlerdeki talimatları 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, başlatmayı da azaltır özel bir başlangıç ekranı etkinliğiyle eklenen gecikmeyi gösterir.

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ılara göre gösterir.

    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. Ö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 bir arka plan rengi eklemek istiyorsanız Theme.SplashScreen.IconBackground temasını ve windowSplashScreenIconBackground özelliği için de geçerlidir.

  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. Aramadan önce başlangıç etkinliğinde installSplashScreen adlı kişiyi arayın super.onCreate().

    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. Bunu isteğe bağlı olarak animasyonu özelleştirmek veya başlangıç ekranını ekranda daha uzun süre tutmak için kullanın. gerekir. 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örüntülenmesini engelleme

Önceki başlangıç ekranınız (Activity) öncelikli olarak yönlendirme için kullanılıyorsa nasıl kaldırabileceğinizi düşünün. Örneğin, her ay web sitenizdeki gerçek veya alt bileşenlere sahip tekil bir etkinliğe geçmelerini sağlar. YouTube'da her şeyi olduğu gibi SplashScreen.setKeepOnScreenCondition oluşturmak yerine yönlendirme etkinliğini kaybetmemek için kullanılır. İşlem devam ediyor başlangıç ekranını bir sonraki etkinliğe aktarır ve için geçerlidir.

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 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 başlangıç ekranı Etkinliği'ni kaldırma

Genel olarak önceki özel başlangıç ekranınızı (Activity) kaldırmanızı öneririz. başlangıç ekranlarının yinelenmesini önlemek, verimliliği artırmak, ve başlangıç ekranı yüklenme sürelerini azaltabilirsiniz. Proje yöneticilerinin kullanabilirsiniz.

  • 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. 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 bunu yalnızca veya bunu yüklemek için bir arka plan ileti dizisi kullanarak uygulama başladıktan sonra. Application.onCreate() cihazınızı mümkün olduğunca hafif tutmaya çalışın yapmasını sağlar.

    Ayrıca, Bileşenleri başlatmak için Uygulama Başlatma kitaplığı unutmayın. Bunu yaparken tüm için gerekli modülleri devreye sokmayın ve geç yüklenen modüller kullanılabilir hale gelir.

  • Yerel olarak az miktarda veri 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 başlangıç ekranı uygulamak için adımları Başlangıç ekranını ekranda daha uzun süre tutun.

  • 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, görünümü yansıtan incelikli animasyonlar yükleme durumu. 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 İlgili içeriği oluşturmak için kullanılan Kullanıcı uygulamanıza tekrar döndüğünde önbelleğe alınmış bu içeriği o ana kadar Daha yeni içerikler yüklemeniz gerekir.

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