diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 680b020..e9220fc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -46,6 +46,7 @@ dependencies { implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3:1.3.1") + implementation("androidx.core:core-splashscreen:1.0.1") // Required for preview support debugImplementation("androidx.compose.ui:ui-tooling") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 06574bf..80c129d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,7 +7,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" - android:theme="@android:style/Theme.Material.NoActionBar" + android:theme="@style/Theme.App.Starting" android:enableOnBackInvokedCallback="true" tools:targetApi="tiramisu"> @@ -15,7 +15,7 @@ + android:theme="@style/Theme.App.Starting"> diff --git a/app/src/main/java/ru/hepolise/volumekeytrackcontrol/ui/SettingsActivity.kt b/app/src/main/java/ru/hepolise/volumekeytrackcontrol/ui/SettingsActivity.kt index 443a371..a30a59e 100644 --- a/app/src/main/java/ru/hepolise/volumekeytrackcontrol/ui/SettingsActivity.kt +++ b/app/src/main/java/ru/hepolise/volumekeytrackcontrol/ui/SettingsActivity.kt @@ -1,5 +1,7 @@ package ru.hepolise.volumekeytrackcontrol.ui +import android.animation.AnimatorSet +import android.animation.ObjectAnimator import android.annotation.SuppressLint import android.content.Context import android.content.Intent @@ -7,6 +9,9 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Vibrator +import android.view.View +import android.view.animation.AccelerateInterpolator +import android.view.animation.AnticipateInterpolator import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -73,6 +78,8 @@ import androidx.compose.ui.text.withLink import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.core.animation.doOnEnd +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import ru.hepolise.volumekeytrackcontrol.util.Constants import ru.hepolise.volumekeytrackcontrol.util.SharedPreferencesUtil.LONG_PRESS_DURATION import ru.hepolise.volumekeytrackcontrol.util.SharedPreferencesUtil.LONG_PRESS_DURATION_DEFAULT_VALUE @@ -95,7 +102,34 @@ import ru.hepolise.volumekeytrackcontrolmodule.R class SettingsActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { + val splashscreen = installSplashScreen() + var keepSplashScreen = true super.onCreate(savedInstanceState) + splashscreen.setKeepOnScreenCondition { keepSplashScreen } + keepSplashScreen = false + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + splashScreen.setOnExitAnimationListener { splashScreenView -> + val scaleX = ObjectAnimator.ofFloat(splashScreenView, View.SCALE_X, 1f, 0.6f) + val scaleY = ObjectAnimator.ofFloat(splashScreenView, View.SCALE_Y, 1f, 0.6f) + + val fadeOut = ObjectAnimator.ofFloat(splashScreenView, View.ALPHA, 1f, 0f) + + scaleX.interpolator = AnticipateInterpolator() + scaleY.interpolator = AnticipateInterpolator() + fadeOut.interpolator = AccelerateInterpolator() + + val duration = 400L + scaleX.duration = duration + scaleY.duration = duration + fadeOut.duration = duration + + AnimatorSet().apply { + playTogether(scaleX, scaleY, fadeOut) + doOnEnd { splashScreenView.remove() } + start() + } + } + } enableEdgeToEdge() setContent { MaterialTheme( diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..47ec007 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file