From d0112bbbe4f0256f1b384e68faa307875309579b Mon Sep 17 00:00:00 2001 From: ottoptj Date: Fri, 31 May 2024 12:23:40 +0300 Subject: [PATCH] Got rid of status bar and made animation apply to the window instead of the layout. --- app/build.gradle.kts | 5 +- .../java/eu/ottop/yamlauncher/Animations.kt | 54 ++++++------------- .../java/eu/ottop/yamlauncher/MainActivity.kt | 2 +- app/src/main/res/layout/activity_main.xml | 2 - app/src/main/res/values-night/themes.xml | 6 +-- app/src/main/res/values-v23/themes.xml | 3 +- app/src/main/res/values/themes.xml | 7 ++- 7 files changed, 25 insertions(+), 54 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fd57a8b..f78aab4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -41,14 +41,11 @@ android { dependencies { implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.6.1") + implementation("androidx.appcompat:appcompat:1.7.0") implementation("com.google.android.material:material:1.12.0") implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.navigation:navigation-fragment-ktx:2.7.7") implementation("androidx.navigation:navigation-ui-ktx:2.7.7") implementation("com.google.code.gson:gson:2.10") implementation("androidx.recyclerview:recyclerview:1.3.2") - testImplementation("junit:junit:4.13.2") - androidTestImplementation("androidx.test.ext:junit:1.1.5") - androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/Animations.kt b/app/src/main/java/eu/ottop/yamlauncher/Animations.kt index be5c36b..861f38e 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/Animations.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/Animations.kt @@ -4,7 +4,9 @@ import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.animation.ArgbEvaluator import android.animation.ObjectAnimator +import android.animation.ValueAnimator import android.app.Activity +import android.graphics.drawable.ColorDrawable import android.view.View import android.view.WindowManager import androidx.core.content.ContextCompat @@ -34,56 +36,32 @@ class Animations () { val originalColor = ContextCompat.getColor(activity, R.color.original_color) val newColor = ContextCompat.getColor(activity, R.color.new_color) - val backgroundColorAnimator: ObjectAnimator = ObjectAnimator.ofObject( - binding.root, - "backgroundColor", - ArgbEvaluator(), - originalColor, - newColor - ) + val colorDrawable = ColorDrawable(originalColor) + activity.window.setBackgroundDrawable(colorDrawable) - backgroundColorAnimator.setDuration(duration) + val backgroundColorAnimator = ValueAnimator.ofObject(ArgbEvaluator(), originalColor, newColor) + backgroundColorAnimator.addUpdateListener { animator -> + colorDrawable.color = animator.animatedValue as Int + } + backgroundColorAnimator.duration = duration - val window = activity.window - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) - - val statusBarColorAnimator = ObjectAnimator.ofArgb( - window, - "statusBarColor", - originalColor, - newColor - ) - statusBarColorAnimator.setDuration(duration) backgroundColorAnimator.start() - statusBarColorAnimator.start() } fun backgroundOut(activity: Activity, binding: ActivityMainBinding, duration: Long = 100) { val originalColor = ContextCompat.getColor(activity, R.color.new_color) val newColor = ContextCompat.getColor(activity, R.color.original_color) - val backgroundColorAnimator: ObjectAnimator = ObjectAnimator.ofObject( - binding.root, - "backgroundColor", - ArgbEvaluator(), - originalColor, - newColor - ) + val colorDrawable = ColorDrawable(originalColor) + activity.window.setBackgroundDrawable(colorDrawable) - backgroundColorAnimator.setDuration(duration) + val backgroundColorAnimator = ValueAnimator.ofObject(ArgbEvaluator(), originalColor, newColor) + backgroundColorAnimator.addUpdateListener { animator -> + colorDrawable.color = animator.animatedValue as Int + } + backgroundColorAnimator.duration = duration - val window = activity.window - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) - - val statusBarColorAnimator = ObjectAnimator.ofArgb( - window, - "statusBarColor", - originalColor, - newColor - ) - statusBarColorAnimator.setDuration(duration) backgroundColorAnimator.start() - statusBarColorAnimator.start() } private fun View.slideInFromBottom(duration: Long = 100) { if (visibility != View.VISIBLE) { diff --git a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt index 338921e..fe89754 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt @@ -16,6 +16,7 @@ import android.text.TextWatcher import android.view.GestureDetector import android.view.MotionEvent import android.view.View +import android.view.WindowManager import android.view.inputmethod.InputMethodManager import android.widget.EditText import android.widget.LinearLayout @@ -71,7 +72,6 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap setContentView(binding.root) setSupportActionBar(null) - launcherApps = getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps gestureDetector = GestureDetector(this, GestureListener()) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 7901c9f..f2a7ea1 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,7 +5,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="fill_vertical" - android:fitsSystemWindows="true" android:orientation="vertical" tools:context=".MainActivity"> @@ -77,7 +76,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="fill_vertical" - android:fitsSystemWindows="true" android:gravity="fill_vertical" android:orientation="vertical" android:visibility="visible"> diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 48cb98c..12bbade 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -1,11 +1,9 @@ - \ No newline at end of file diff --git a/app/src/main/res/values-v23/themes.xml b/app/src/main/res/values-v23/themes.xml index 0aafcdc..8980861 100644 --- a/app/src/main/res/values-v23/themes.xml +++ b/app/src/main/res/values-v23/themes.xml @@ -1,9 +1,10 @@ \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 46dd09d..7bfbe2b 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,11 +1,10 @@ -