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

Android 11 veya önceki sürümlerde özel bir başlangıç ekranı uyguladıysanı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 baştan başlatma ve hazırda başlatma işlemlerinde Android sisteminin varsayılan başlangıç ekranını uygular. Varsayılan olarak bu sistem açılış ekranı, uygulamanızın başlatıcı simgesi öğesi ve temanızın windowBackground kullanılarak oluşturulur (tek renkliyse).

Uygulamanızı taşımıyorsanız Android 12 ve sonraki sürümlerde uygulamanızın başlatma deneyimi kötüleşebilir veya istenmeyen sonuçlar ortaya çıkabilir.

Bu belgede açıklanan taşıma sürecini tamamlayarak bu kötüleşmiş veya istenmeyen deneyimleri önleyebilirsiniz. Taşıma işleminden sonra API; başlatma süresini kısaltır, açılış ekranı deneyimi üzerinde tam kontrol sağlar ve platformdaki diğer uygulamalarla daha tutarlı bir başlatma deneyimi oluşturur.

SplashScreen compat kitaplığı

SplashScreen API'yi doğrudan kullanabilirsiniz ancak bunun yerine Androidx SplashScreen compat 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 karşılama ekranı gösterimi için tutarlı bir görünüm ve tarz oluşturur. Bu doküman, compat kitaplığı kullanılarak yazılmıştır.

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

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

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

Bu işlem, hangi uygulama türünden taşıma yaptığınıza bakılmaksızın geçerlidir. Özel bir Activity alanından taşıma yapıyorsanız özelleştirilmiş karşılama ekranınızı Activity uyarlamak için bu belgede açıklanan en iyi uygulamaları uygulayın. SplashScreen API, özel bir açılış 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 değerini değiştirin ve bağımlılıklara SplashScreen uyumluluk kitaplığını ekleyin.
build.gradle  
android {  
   compileSdkVersion 31  
   ...  
}  
dependencies {  
   ...  
   implementation 'androidx.core:core-splashscreen:1.0.0-beta02'  
}  
  1. Theme.SplashScreen üst öğesiyle bir tema oluşturun. postSplashScreenTheme değerini, Activity öğesinin kullanması gereken temaya, windowSplashScreenAnimatedIcon değerini ise ç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 istiyorsanız Theme.SplashScreen.IconBackground temasını kullanabilir ve windowSplashScreenIconBackground özelliğini ayarlayabilirsiniz. 3. Manifest dosyasında, 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">  
...  
  1. installSplashScreen işlevini, super.onCreate() işlevini çağırmadan önce başlangıç etkinliğinde çağırı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, animasyonu özelleştirmek veya başlangıç ekranını daha uzun süre ekranda tutmak için isteğe bağlı olarak kullanabilirsiniz. Animasyonu özelleştirme hakkında daha fazla bilgi için Açılış ekranını daha uzun süre ekranda tutma ve Açılış 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ümlerde karşılama ekranına geçtikten sonra önceki özel karşılama ekranınızla ne yapacağınıza karar verin Activity. Aşağıdaki seçenekler sunulur:

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

Önceki karşılama ekranınız Activity öncelikle yönlendirme için kullanılıyorsa bu ekranı kaldırmanın yollarını değerlendirin. Ö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 kullanabilirsiniz. Bu işlem, başlangıç ekranını sonraki etkinliğe aktarır ve sorunsuz bir geçişi destekler.

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

...

Markalama için özel etkinliği saklama

Markalama 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çiş yapabilirsiniz. Ancak mümkünse bu senaryodan kaçınmak ve başlangıç ekranınıza marka eklemek için SplashScreenAPI'yi kullanmak en iyisidir.

İletişim kutusu göstermeniz gerekiyorsa bunu, sonraki özel başlangıç ekranı etkinliğinin veya sistem başlangıç ekranından sonraki ana etkinliğin üzerinde göstermenizi öneririz.

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

Genel olarak, açılış ekranlarının yinelenmesini önlemek, verimliliği artırmak ve açılış ekranı yükleme sürelerini kısaltmak için önceki özel açılış ekranınızı tamamen kaldırmanızı öneririz. Activity Gereksiz karşılama ekranı etkinliklerinin gösterilmesini önlemek için kullanabileceğiniz farklı teknikler vardır.

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