Merge branch 'customicon' into cmp-rewrite

This commit is contained in:
tapframe 2026-08-03 14:46:12 +05:30
commit 5d78dfc314
137 changed files with 2065 additions and 49 deletions

View file

@ -29,11 +29,6 @@
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:supportsPictureInPicture="true"
android:theme="@style/Theme.Nuvio.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@ -74,6 +69,96 @@
</intent-filter>
</activity>
<activity
android:name="com.nuvio.app.launcher.AppIconDefault"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:enabled="true"
android:exported="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsPictureInPicture="true"
android:theme="@style/Theme.Nuvio.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.nuvio.app.launcher.AppIconArcticBlue"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:enabled="false"
android:exported="true"
android:icon="@mipmap/ic_launcher_arctic_blue"
android:label="@string/app_name"
android:supportsPictureInPicture="true"
android:theme="@style/Theme.Nuvio.Splash.ArcticBlue">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.nuvio.app.launcher.AppIconEmerald"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:enabled="false"
android:exported="true"
android:icon="@mipmap/ic_launcher_emerald"
android:label="@string/app_name"
android:supportsPictureInPicture="true"
android:theme="@style/Theme.Nuvio.Splash.Emerald">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.nuvio.app.launcher.AppIconRoseGold"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:enabled="false"
android:exported="true"
android:icon="@mipmap/ic_launcher_rose_gold"
android:label="@string/app_name"
android:supportsPictureInPicture="true"
android:theme="@style/Theme.Nuvio.Splash.RoseGold">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.nuvio.app.launcher.AppIconCopper"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:enabled="false"
android:exported="true"
android:icon="@mipmap/ic_launcher_copper"
android:label="@string/app_name"
android:supportsPictureInPicture="true"
android:theme="@style/Theme.Nuvio.Splash.Copper">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.nuvio.app.launcher.AppIconGraphite"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:enabled="false"
android:exported="true"
android:icon="@mipmap/ic_launcher_graphite"
android:label="@string/app_name"
android:supportsPictureInPicture="true"
android:theme="@style/Theme.Nuvio.Splash.Graphite">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="com.nuvio.app.features.player.PlayerNowPlayingService"
android:exported="false"

View file

@ -340,6 +340,10 @@ kotlin {
defFile(project.file("src/nativeInterop/cinterop/commoncrypto.def"))
compilerOpts("-I${project.projectDir}/src/nativeInterop/cinterop")
}
create("appicon") {
defFile(project.file("src/nativeInterop/cinterop/appicon.def"))
compilerOpts("-I${project.projectDir}/src/nativeInterop/cinterop")
}
if (iosDistribution == "full") {
check(nuvioEngineSliceDirectory.resolve("libCNuvioEngine.a").isFile) {
"Build the local Nuvio Engine Apple XCFramework before compiling iOS Full."

View file

@ -43,6 +43,7 @@ import com.nuvio.app.features.profiles.ProfileStorage
import com.nuvio.app.features.details.SeasonViewModeStorage
import com.nuvio.app.features.search.SearchHistoryStorage
import com.nuvio.app.features.settings.SentrySettingsStorage
import com.nuvio.app.features.settings.AppIconPlatform
import com.nuvio.app.features.settings.ThemeSettingsStorage
import com.nuvio.app.features.trakt.TraktAuthStorage
import com.nuvio.app.features.trakt.TraktCommentsStorage
@ -63,7 +64,7 @@ import com.nuvio.app.features.watchprogress.ContinueWatchingPreferencesStorage
import com.nuvio.app.features.watchprogress.ResumePromptStorage
import com.nuvio.app.features.watchprogress.WatchProgressStorage
class MainActivity : AppCompatActivity() {
open class MainActivity : AppCompatActivity() {
private var pipRemoteActionReceiver: PipRemoteActionReceiver? = null
override fun onCreate(savedInstanceState: Bundle?) {
@ -74,6 +75,7 @@ class MainActivity : AppCompatActivity() {
),
)
ThemeSettingsStorage.initialize(applicationContext)
AppIconPlatform.initialize(applicationContext)
SentrySettingsStorage.initialize(applicationContext)
SentryInitializer.start(application)
super.onCreate(savedInstanceState)

View file

@ -12,6 +12,7 @@ import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import com.nuvio.app.core.deeplink.buildDownloadsDeepLinkUrl
import com.nuvio.app.features.settings.AppIconPlatform
import kotlinx.coroutines.runBlocking
import nuvio.composeapp.generated.resources.*
import org.jetbrains.compose.resources.getString
@ -81,7 +82,8 @@ internal actual object DownloadsLiveStatusPlatform {
private fun buildNotification(context: Context, item: DownloadItem): android.app.Notification {
val subtitle = buildSubtitle(item)
val launchIntent = Intent(context, com.nuvio.app.MainActivity::class.java).apply {
val launchIntent = Intent().apply {
component = AppIconPlatform.currentLauncherComponent(context)
action = Intent.ACTION_VIEW
data = android.net.Uri.parse(buildDownloadsDeepLinkUrl())
flags = Intent.FLAG_ACTIVITY_NEW_TASK or

View file

@ -15,12 +15,14 @@ import androidx.core.app.ActivityCompat
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toBitmap
import androidx.work.Data
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.Operation
import androidx.work.WorkManager
import com.nuvio.app.core.storage.ProfileScopedKey
import com.nuvio.app.features.settings.AppIconPlatform
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.engine.okhttp.OkHttp
@ -205,7 +207,10 @@ internal actual object EpisodeReleaseNotificationPlatform {
): android.app.Notification {
val pendingIntent = buildPendingIntent(context, request)
val backdropBitmap = loadBackdropBitmap(request.backdropUrl)
val appIconBitmap = BitmapFactory.decodeResource(context.resources, com.nuvio.app.R.mipmap.ic_launcher)
val appIconBitmap = ContextCompat.getDrawable(
context,
AppIconPlatform.currentLauncherIconResource(context),
)?.toBitmap()
return NotificationCompat.Builder(context, channelId)
.setSmallIcon(com.nuvio.app.R.drawable.ic_notification_small)
@ -238,7 +243,8 @@ internal actual object EpisodeReleaseNotificationPlatform {
context: Context,
request: EpisodeReleaseNotificationRequest,
): PendingIntent {
val launchIntent = Intent(context, com.nuvio.app.MainActivity::class.java).apply {
val launchIntent = Intent().apply {
component = AppIconPlatform.currentLauncherComponent(context)
action = Intent.ACTION_VIEW
data = android.net.Uri.parse(request.deepLinkUrl)
flags = Intent.FLAG_ACTIVITY_NEW_TASK or

View file

@ -6,7 +6,6 @@ import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.work.CoroutineWorker
import androidx.work.WorkerParameters
import com.nuvio.app.MainActivity
import kotlin.math.abs
class EpisodeReleaseNotificationWorker(
@ -48,4 +47,4 @@ class EpisodeReleaseNotificationWorker(
return Result.success()
}
}
}

View file

@ -0,0 +1,117 @@
package com.nuvio.app.features.settings
import android.content.ComponentName
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
internal actual object AppIconPlatform {
actual val requiresCloseConfirmation: Boolean = true
private const val launcherPackage = "com.nuvio.app.launcher"
private val launcherComponents = AppIconOption.entries.map { option ->
option.platformName to "$launcherPackage.${option.platformName ?: "AppIconDefault"}"
}
private var context: Context? = null
fun initialize(context: Context) {
val appContext = context.applicationContext
this.context = appContext
restoreDefaultIfNeeded(appContext)
}
actual fun currentIconName(): String? {
val appContext = context ?: return null
return currentIconName(appContext)
}
fun currentLauncherIconResource(context: Context): Int {
val option = AppIconOption.fromPlatformName(currentIconName(context))
val resourceName = if (option == AppIconOption.ORIGINAL) {
"ic_launcher"
} else {
"ic_launcher_${option.key}"
}
return context.resources
.getIdentifier(resourceName, "mipmap", context.packageName)
.takeIf { it != 0 }
?: com.nuvio.app.R.mipmap.ic_launcher
}
fun currentLauncherComponent(context: Context): ComponentName {
val currentName = currentIconName(context)
val className = launcherComponents.first { it.first == currentName }.second
return component(context, className)
}
private fun currentIconName(context: Context): String? {
val packageManager = context.packageManager
val explicitlyEnabled = launcherComponents.firstOrNull { (_, className) ->
packageManager.getComponentEnabledSetting(component(context, className)) ==
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
}
return explicitlyEnabled?.first
}
private fun restoreDefaultIfNeeded(context: Context) {
val packageManager = context.packageManager
val hasEnabledComponent = launcherComponents.any { (_, className) ->
packageManager.getComponentEnabledSetting(component(context, className)) ==
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
}
if (hasEnabledComponent) return
val defaultClass = launcherComponents.first { it.first == null }.second
if (
packageManager.getComponentEnabledSetting(component(context, defaultClass)) !=
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
) {
return
}
packageManager.setComponentEnabledSetting(
component(context, defaultClass),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP,
)
}
actual suspend fun activateIcon(name: String?): Boolean {
val appContext = context ?: return false
val selectedClass = launcherComponents.firstOrNull { it.first == name }?.second ?: return false
val packageManager = appContext.packageManager
return runCatching {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
packageManager.setComponentEnabledSettings(
launcherComponents.map { (_, className) ->
PackageManager.ComponentEnabledSetting(
component(appContext, className),
if (className == selectedClass) {
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
} else {
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
},
PackageManager.DONT_KILL_APP,
)
},
)
} else {
launcherComponents.forEach { (_, className) ->
packageManager.setComponentEnabledSetting(
component(appContext, className),
if (className == selectedClass) {
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
} else {
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
},
PackageManager.DONT_KILL_APP,
)
}
}
}.isSuccess
}
private fun component(context: Context, className: String): ComponentName =
ComponentName(context.packageName, className)
}

View file

@ -0,0 +1,15 @@
package com.nuvio.app.launcher
import com.nuvio.app.MainActivity
class AppIconDefault : MainActivity()
class AppIconArcticBlue : MainActivity()
class AppIconEmerald : MainActivity()
class AppIconRoseGold : MainActivity()
class AppIconCopper : MainActivity()
class AppIconGraphite : MainActivity()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/nuvio_background" />
<background android:drawable="@color/app_icon_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/app_icon_background" />
<foreground android:drawable="@mipmap/ic_launcher_arctic_blue_foreground" />
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/app_icon_background" />
<foreground android:drawable="@mipmap/ic_launcher_copper_foreground" />
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/app_icon_background" />
<foreground android:drawable="@mipmap/ic_launcher_emerald_foreground" />
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/app_icon_background" />
<foreground android:drawable="@mipmap/ic_launcher_graphite_foreground" />
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/app_icon_background" />
<foreground android:drawable="@mipmap/ic_launcher_rose_gold_foreground" />
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/nuvio_background" />
<background android:drawable="@color/app_icon_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -9,4 +9,24 @@
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_logo</item>
<item name="postSplashScreenTheme">@style/Theme.Nuvio</item>
</style>
<style name="Theme.Nuvio.Splash.ArcticBlue" parent="@style/Theme.Nuvio.Splash">
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_logo_arctic_blue</item>
</style>
<style name="Theme.Nuvio.Splash.Emerald" parent="@style/Theme.Nuvio.Splash">
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_logo_emerald</item>
</style>
<style name="Theme.Nuvio.Splash.RoseGold" parent="@style/Theme.Nuvio.Splash">
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_logo_rose_gold</item>
</style>
<style name="Theme.Nuvio.Splash.Copper" parent="@style/Theme.Nuvio.Splash">
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_logo_copper</item>
</style>
<style name="Theme.Nuvio.Splash.Graphite" parent="@style/Theme.Nuvio.Splash">
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_logo_graphite</item>
</style>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="app_icon_background">#000000</color>
<color name="nuvio_background">#0D0D0D</color>
</resources>

View file

@ -5,4 +5,9 @@
</style>
<style name="Theme.Nuvio.Splash" parent="@style/Theme.Nuvio" />
<style name="Theme.Nuvio.Splash.ArcticBlue" parent="@style/Theme.Nuvio.Splash" />
<style name="Theme.Nuvio.Splash.Emerald" parent="@style/Theme.Nuvio.Splash" />
<style name="Theme.Nuvio.Splash.RoseGold" parent="@style/Theme.Nuvio.Splash" />
<style name="Theme.Nuvio.Splash.Copper" parent="@style/Theme.Nuvio.Splash" />
<style name="Theme.Nuvio.Splash.Graphite" parent="@style/Theme.Nuvio.Splash" />
</resources>

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Some files were not shown because too many files have changed in this diff Show more