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.
Bir yanıt yazın