fix(ui): тёмный сплэш с фирменной иконкой вместо белого экрана

- Theme.Radiola -> тёмная (windowBackground #0C1410), прозрачные системные бары
- Theme.Radiola.Splash (core-splashscreen): фон #0C1410 + иконка приложения
- installSplashScreen() в MainActivity; тема сплэша на launcher-активити
This commit is contained in:
nk
2026-06-03 00:27:29 +03:00
parent e190444577
commit eca0c49ad4
6 changed files with 22 additions and 2 deletions

View File

@@ -61,6 +61,7 @@ android {
dependencies { dependencies {
implementation(libs.androidx.core.ktx) implementation(libs.androidx.core.ktx)
implementation(libs.androidx.core.splashscreen)
implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.lifecycle.viewmodel.compose)
implementation(libs.androidx.activity.compose) implementation(libs.androidx.activity.compose)

View File

@@ -25,7 +25,7 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.Radiola" android:theme="@style/Theme.Radiola.Splash"
android:configChanges="orientation|screenSize|smallestScreenSize"> android:configChanges="orientation|screenSize|smallestScreenSize">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@@ -5,6 +5,7 @@ import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
@@ -45,6 +46,7 @@ class MainActivity : ComponentActivity() {
lateinit var tokenDataStore: TokenDataStore lateinit var tokenDataStore: TokenDataStore
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
startService(Intent(this, PlayerService::class.java)) startService(Intent(this, PlayerService::class.java))
lifecycleScope.launch { lifecycleScope.launch {

View File

@@ -5,4 +5,6 @@
<color name="teal_200">#FF03DAC5</color> <color name="teal_200">#FF03DAC5</color>
<color name="black">#FF000000</color> <color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
<color name="brand_bg">#FF0C1410</color>
<color name="brand_accent">#FFA8E05F</color>
</resources> </resources>

View File

@@ -1,3 +1,17 @@
<resources> <resources>
<style name="Theme.Radiola" parent="android:Theme.Material.Light.NoActionBar" /> <!-- Основная тема: тёмный фирменный фон (нет белого экрана при холодном старте) -->
<style name="Theme.Radiola" parent="android:Theme.Material.NoActionBar">
<item name="android:windowBackground">@color/brand_bg</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowLightStatusBar">false</item>
</style>
<!-- Сплэш (Android 12+ и бэкпорт через core-splashscreen):
тёмный фон + наша иконка, затем переход в основную тему. -->
<style name="Theme.Radiola.Splash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/brand_bg</item>
<item name="windowSplashScreenAnimatedIcon">@mipmap/ic_launcher</item>
<item name="postSplashScreenTheme">@style/Theme.Radiola</item>
</style>
</resources> </resources>

View File

@@ -25,6 +25,7 @@ coroutinesTest = "1.8.1"
[libraries] [libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version = "1.0.1" }
junit = { group = "junit", name = "junit", version.ref = "junit" } junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }