فهرست منبع

android: Use androidx splash screen

Charles Lombardo 3 سال پیش
والد
کامیت
55e4c2d87b

+ 1 - 0
src/android/app/build.gradle

@@ -136,6 +136,7 @@ dependencies {
     implementation 'androidx.preference:preference:1.2.0'
     implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
     implementation "io.coil-kt:coil:2.2.2"
+    implementation 'androidx.core:core-splashscreen:1.0.0'
 
     // Allows FRP-style asynchronous operations in Android.
     implementation 'io.reactivex:rxandroid:1.2.1'

+ 1 - 1
src/android/app/src/main/AndroidManifest.xml

@@ -32,7 +32,7 @@
         <activity
             android:name="org.yuzu.yuzu_emu.ui.main.MainActivity"
             android:exported="true"
-            android:theme="@style/Theme.Yuzu.Main"
+            android:theme="@style/Theme.Yuzu.Splash.Main"
             android:resizeableActivity="false">
 
             <!-- This intentfilter marks this Activity as the one that gets launched from Home screen. -->

+ 4 - 1
src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt

@@ -14,12 +14,12 @@ import android.widget.FrameLayout
 import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
 import androidx.appcompat.widget.Toolbar
+import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
 import androidx.core.view.ViewCompat
 import androidx.core.view.WindowCompat
 import androidx.core.view.WindowInsetsCompat
 import androidx.core.view.updatePadding
 import com.google.android.material.appbar.AppBarLayout
-import com.google.android.material.color.MaterialColors
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import org.yuzu.yuzu_emu.NativeLibrary
 import org.yuzu.yuzu_emu.R
@@ -35,6 +35,9 @@ class MainActivity : AppCompatActivity(), MainView {
     private val presenter = MainPresenter(this)
 
     override fun onCreate(savedInstanceState: Bundle?) {
+        val splashScreen = installSplashScreen()
+        splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady() }
+
         ThemeHelper.setTheme(this)
 
         super.onCreate(savedInstanceState)

+ 6 - 0
src/android/app/src/main/res/values/themes.xml

@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 
+    <style name="Theme.Yuzu.Splash.Main" parent="Theme.SplashScreen">
+        <item name="windowSplashScreenBackground">@color/yuzu_surface</item>
+        <item name="windowSplashScreenAnimatedIcon">@drawable/ic_yuzu</item>
+        <item name="postSplashScreenTheme">@style/Theme.Yuzu.Main</item>
+    </style>
+
     <style name="Theme.Yuzu" parent="Theme.Material3.DayNight.NoActionBar">
         <item name="colorPrimary">@color/yuzu_primary</item>
         <item name="colorOnPrimary">@color/yuzu_onPrimary</item>