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 başlangıç ekranı, uygulamanızın başlatıcı simgesi öğesi ve temanızın windowBackground
kullanılarak oluşturulur (tek renkse).
Uygulamanızı taşımadığınız takdirde Android 12 ve sonraki sürümlerde uygulamanızın başlatılma deneyimi kötüleşebilir veya istenmeyen sonuçlar ortaya çıkabilir.
Mevcut başlangıç ekranınız geçersiz kılan özel bir tema
android:windowBackground
kullanılarak uygulanıyorsa 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çlanan deneyimi olmayabilir.Mevcut başlangıç ekranınız özel bir
Activity
kullanılarak uygulanıyorsa uygulamanızı Android 12 veya sonraki bir sürümü çalıştıran cihazlarda başlatmak, başlangıç ekranlarının yinelenmesine neden olur: Sistem başlangıç ekranı görüntülenir ve ardından mevcut başlangıç ekranı etkinliğiniz gösterilir.
Bu belgede açıklanan taşıma sürecini tamamlayarak bu tür 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 sahibi olmanızı 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
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österimi için tutarlı bir görünüm ve tarz oluşturur. Bu doküman, compat kitaplığı kullanılarak yazılmıştır.
SplashScreen
API'yi doğrudan 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 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.
Başlangıç ekranı uygulamanızı taşıma
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
'den 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:
build.gradle
dosyasındacompileSdkVersion
değerini değiştirin ve bağımlılıklaraSplashScreen
uyumluluk kitaplığını ekleyin.build.gradle android { compileSdkVersion 31 ... } dependencies { ... implementation 'androidx.core:core-splashscreen:1.0.0-beta02' }
Theme.SplashScreen
üst öğesiyle 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 vewindowSplashScreenIconBackground
özelliğini ayarlayabilirsiniz.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"> ...
installSplashScreen
işlevini,installSplashScreen
işlevini çağırmadan önce başlangıç etkinliğinde çağırı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. 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çenekleriniz vardır:
- Özel etkinliği saklayın ancak gösterilmesini engelleyin.
- Markalama nedeniyle özel etkinliği tutma
- Özel etkinliği kaldırın ve uygulamanızı gerektiği şekilde uyarlayın.
Ö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şturmayı 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 SplashScreen
API'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 azaltmak 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.
Bileşenleriniz, modülleriniz veya kitaplıklarınız için geç yüklemeyi kullanın. Uygulamanın başlatıldığında çalışması için gerekli olmayan bileşenleri veya kitaplıkları yüklemekten ya da başlatmaktan kaçının. 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 gerektiğinde (başlatma sırasında değil) yükleyin veya uygulamayı başlattı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 App Startup kitaplığını kullanmaktan da yararlanabilirsiniz. Bunu yaparken başlangıç etkinliği için gerekli tüm modülleri yüklemeye devam ettiğinizden ve geç yüklenen modüllerin kullanıma sunulduğu yerlerde sarsıntıya neden olmadığınızdan emin olun.
Az miktarda veriyi yerel olarak yüklerken yer tutucu oluşturun. Önerilen tema yaklaşımını kullanın ve uygulama hazır olana kadar oluşturmayı bekletin. Geriye dönük uyumlu bir başlangıç ekranı uygulamak için Başlangıç ekranını daha uzun süre ekranda tutma başlıklı makalede belirtilen adımları uygulayın.
Yer tutucuları göster'i seçin. Süresi belirsiz olan ağ tabanlı yüklemelerde, karşılama ekranını kapatın ve eşzamansız yükleme için yer tutucular gösterin. Yükleme durumunu yansıtan, içerik alanına ince animasyonlar uygulamayı düşünebilirsiniz. İçerik yüklendiğinde sorunsuz bir geçiş sağlamak için yüklenen içerik yapısının iskelet yapısıyla mümkün olduğunca eşleştiğinden emin olun.
Önbelleğe alma özelliğini kullanın. 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ı bir sonraki ziyaretinde uygulamanıza döndüğünde, daha yeni içerikleri yüklerken bu önbelleğe alınmış içeriği gösterebilirsiniz.