Merge branch 'customicon' into cmp-rewrite
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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()
|
||||
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 3 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 950 B |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 814 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 4 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 2 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 3 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 11 KiB |
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 20 KiB |