Android Yeni Splash Screen

Android 12 ile hayatımıza default olarak gelen yeni splash ekranları girdi. Peki bu splash ekranları özelleştirmek istersek ?

Yeni splash screen apisini nasıl kullanacağımızı ele alacağız.

Bağımlılığımız ekliyoruz

dependencies {
implementation "androidx.core:core-splashscreen:1.0.0"
}

themes.xml dosyalarımızı düzenliyoruz. (Night temayı da güncellemeyi unutmayın!)

<style name="Theme.Qr.Splash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/green_100</item>
<item name="windowSplashScreenAnimatedIcon">@mipmap/ic_launcher_round</item>
<item name="postSplashScreenTheme">@style/Theme.YOUR_MAIN_THEME</item>
</style>

Burada splash screen temamızı belirledik. Splash screen de hangi icon görünecek. Arka plan rengi ne olacak vb değerleri girdik.

Yazdığımız temayı AndroidManifest.xml dosyasında kullanıyoruz.

<application
android:name="com.ramo.qr.MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Qr.Splash">
</application>

İşlem tamam.

Biraz daha özelleştirelim

Peki splash screen de kodsal olarak bir takım işler yapmak istersek nasıl yaparız?

Onun da kodları şu şekilde.

class MainActivity : AppCompatActivity() {
private var splashOperationEnd = false
override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen()
super.onCreate(savedInstanceState)
splashScreen.setKeepOnScreenCondition {
return@setKeepOnScreenCondition splashOperationEnd.not()
}
CoroutineScope(Dispatchers.IO).launch {
// splash operations
splashOperationEnd = true
}
}
}

Buradaki esas mantık setKeepOnScreenCondition fonksionu ile splash in ekranda tutulup tutulmayacağını belirleyen unsur. Bizim askenron işlemlerimiz ne zaman tamamlanırsa boolean değeri değiştiriyoruz ve Splash screen kendisi ekrandan kayboluyor.

Bu yönemi kullanarak eski şekilde kullandığımız Splash ekranlarımızı daha modern şehilde handle edebiliriz.

Kaynaklar


Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site reCAPTCHA ve Google tarafından korunmaktadır Gizlilik Politikası ve Kullanım Şartları uygula.

ReCAPTCHA doğrulama süresi sona erdi. Lütfen sayfayı yeniden yükleyin.