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. 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 kötüleşebilir veya istenmeyen sonuçlara yol açabilir.
Mevcut başlangıç ekranınız
android:windowBackground
değerini geçersiz kılan bir özel tema kullanılarak uygulandıysa sistem, Android 12 ve sonraki sürümlerde özel başlangıç ekranınızı varsayılan Android sistem başlangıç ekranıyla değiştirir. Bu, uygulamanızın amacı olmayabilir sunmaktır.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şlattığınızda yinelenen başlangıç ekranları gösterilir: Sistem başlangıç ekranı gösterilir, ardından mevcut başlangıç ekranı etkinliğiniz gösterilir.
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, 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 bunun yerine Androidx SplashScreen
uyumluluk kitaplığını kullanmanızı önemle tavsiye ederiz. 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 karşılaştırma kullanılarak yazılmıştır
kitaplığını tanıtır.
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 tam olarak aynı görünür. Başlangıç tarihi
Android 12'nin başlangıç ekranı, Android 12'nin tarzını sunar.
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 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
'ten geçiş yapıyorsanız özelleştirilmiş açılış ekranınızı Activity
uyarlamak için bu dokümanda açıklanan en iyi uygulamaları uygulayın. SplashScreen
API, özel bir açılış ekranı etkinliğiyle sunulan başlatma gecikmesini de azaltır.
Açılış ekranınızı taşımak için aşağıdakileri yapın:
build.gradle
dosyasındacompileSdkVersion
değerinizi değiştirin veSplashScreen
compat kitaplığını bağımlılıklara ekleyin.build.gradle android { compileSdkVersion 31 ... } dependencies { ... implementation 'androidx.core:core-splashscreen:1.0.0-beta02' }
Theme.SplashScreen
adlı çocuğun ebeveyni ile bir tema oluşturun. Örneğin,postSplashScreenTheme
veActivity
için kullanılması gereken tema çizilebilir veya animasyonlu hale getirilecekwindowSplashScreenAnimatedIcon
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 vewindowSplashScreenIconBackground
özelliğini ayarlayabilirsiniz.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"> ...
super.onCreate()
'u aramadan önce başlangıç etkinliğindeinstallSplashScreen
'ü arayın.class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { // Handle the splash screen transition. val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) ...
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. Şu seçeneklerden birini tercih edebilirsiniz:
- Özel etkinliği saklayın ancak gösterilmesini engelleyin.
- Marka bilinirliği için özel etkinliği saklayın.
- Ö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, 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.
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() } ...
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 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.
İletişim 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ği'ni kaldırma
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ı Activity
tamamen kaldırmanızı öneririz. 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. 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 bunu yalnızca veya bunu yüklemek için bir arka plan ileti dizisi kullanarak uygulama başladıktan sonra.
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. 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. Önerilen tema yaklaşımını kullanın ve uygulama hazır olana kadar oluşturma işlemini bekletin. 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ü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, 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 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 İ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.