Android Splash Screen dünü ve bu günü

Ersin Yıldız
3 min readJan 4, 2023

--

Merhaba, bu yazıda Android uygulamalarının kullanıcıyı karşılama rolünü üstlenen, olmazsa olmaz ekranların başında gelen Splash ekranlarından bahsedeceğim. Karşılama ekranı da diyebileceğimiz bu ekranların geliştirilmesinde kullanılan yaklaşımların zaman içindeki değişimini ve geldiği son durumu anlatmak istiyorum.

Photo by <a href=”https://unsplash.com/@sigmund?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Sigmund</a> on <a href=”https://unsplash.com/photos/UCHsKCRWS7s?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
Photo by Sigmund on Unsplash

Nedir?

Splash Screen, veya Material Design jargonunda bilinen adıyla Launch Screen, mobil uygulama kullanıcılarının ilgili uygulamayla ilk deneyimini edindiği ekranlardır. Dolayısıyla branding açısından da önemli bir ekrandır. Bunun yanında asıl işlevlerin yüklenmesinin zaman aldığı durumlarda kullanıcıya boş ekran göstermemek için de iyi bir çözümdür. Android geliştiricileri tarafından da çok uzun sürelerdir geliştirilmekte ve bahsedilen amaçlarla kullanılmaktadırlar.

Dünden bu güne..

1. Karanlık Dönem :)

Android geliştiriciliğinin ilk zamanlarından bu yana Splash ekranları geliştiriliyor ve bu android’e özgü bir tasarım yaklaşımı değil. Bu dönemde henüz Material Design gibi bir tasarım standartlaştırma yaklaşımı da duyurulmamışken Splash ekranları geliştiricilerin hayal gücü ile sınırlıydı.

Genellikle Splash için özel bir Activity oluşturulur ve veritabanı oluşturmak, ilk çalıştırma için gerekli backend istekleri yapmak gibi operasyonlar bu ekrana devredilirdi. Eğer uygulamanın böyle bir ihtiyacı yoksa bile branding için Timer yardımıyla ekranda logo 2–3 saniye kadar gösterilirdi. Bu döneme ait herhangi bir blog yazısında bu yaklaşımı rahatlıkla görebilirsiniz. Bu yaklaşımın günümüz şartlarında performansı kötü etkilediğini düşünsek de, uygulamanın yüklenmesi aşamasında kullanıcıya boş beyaz bir ekran göstermektense o dönem için gayet makul bir yaklaşım olduğunu da kabul etmek gerekir. Bu yaklaşımda yapılabilecek en doğru davranış Splash Activity’i olabildiğince hafif tasarlamak ve ilk yüklemede hızlıca görüntülenebilmesini sağlamak olabilir. Ve sonrasında arkaplan işlemleri dahi olsa 3sn üzerinde bekletmemek de önemlidir.

2. Aydınlanma çağı ( Launcher Theme Yaklaşımı )

2020'lerde Splash ekranlarının daha performanslı ve efektif geliştirilmesine yönelik birkaç blog yazısına denk gelmiştim. Bu yaklaşımda karanlık dönemdeki Splash Activity’nin kendisinin de oluşturulmasından doğan yükten (overhead) kaçınmanın yolu anlatılıyordu.

Android işletim sistemi layout’u oluşturmadan önce Theme’i oluşturmuş olur. Bu özellik kullanılarak şu adımlarla yeni yaklaşım implemente edilmekteydi :

  • Splash Activity için yeni bir Theme tanımlaması yapılır. Bu theme içinde layer-list yöntemiyle görüntülenecek görsel öğeler belirtilebilir. Aynı zamanda yükleme esnasında görüntülenen windowBackground değeri de branding için özelleştirilebilir.
  • Splash Activity içinde ilk yüklemeler yapılmak istenirse yapılır ve bir sonraki Activity çağırılır.
  • Çağırılan bu activity’nin onCreate methodunda uygulamanın asıl teması setlenir.

Bu yöntemle kullanıcıya hiç beyaz yükleme ekranı göstermeden çok hızlı bir şekilde Splash ekranı gösterebilir olduk ve kullanıcı deneyimine pozitif çok katkısı oldu.

3. Uzay Çağı (?) — AndroidX Splash Screen API Dönemi

Google 2021'nin ortalarında Splash Screen API alpha sürümünü yayınlayarak bu konuya dahil oldu ve kendi standardını getirmek adına ilk adımı attı. Android 12 ve sonraki versiyonlarda uygulamaların tamamında, uygulamanın logosundan oluşan Splash ekranı göstermeye başladı. Artık Splash Screen Android için Google tarafından da kabul edilen bir standard haline geldi diyebiliriz. Peki bu noktada geliştiricilere ne düşüyor ?

Splash Screen API 2022 ortasında 1.0 sürümüyle beta programından çıkarak geriye dönük uyumluluğu ile birlikte release oldu. Belirli bir standarda dayansa da belirli sınırlarda özelleştirmeye de açık. Android ekibi açıklayıcı iki dokümanla Splash Screen geçişini kolaylaştırmayı amaçlamış. Geçiş adımları çok karmaşık ve eforlu görünmemekte.

Geçiş yapılmadığı durumda oluşan başlıca handikap ise Android 12 ve 13'de hem sistemin varsayılan Splash ekranı, hemen sonrasında da uygulamanın custom Splash ekranının görüntülenmesi. Yani ardı ardına kullanıcıya iki Splash gösterilmesi olarak gösterilebilir.

Android ekibinin açıklayıcı Splash Screen dokümanı : Link

Mevcut uygulamalarda Migration adımlarını anlatan ayrı bir doküman : Link

Ayrıca konuyu her yönüyle ele alan şu iki blog yazısını da tavsiye ederim :

Bu yazı mevcut uygulamalarımı yeni Splash Screen yaklaşımına uyumlu hale getirirken yaptığım araştırmaların ve önceki tecrübelerimin bir özeti niteliğinde fakat biraz aceleye de gelmedi değil. Single Activity Multiple Fragment yapısındaki bir uygulamanın Migration işleminde kazandığım tecrübeyi ayrı bir yazıda yazarak bu yazının sonuna ekleyeceğim. Umarım faydası olmuştur.

--

--