diff --git a/app/src/main/java/com/trianguloy/urlchecker/activities/BackupActivity.java b/app/src/main/java/com/trianguloy/urlchecker/activities/BackupActivity.java
index 7439da5..7ea0e67 100644
--- a/app/src/main/java/com/trianguloy/urlchecker/activities/BackupActivity.java
+++ b/app/src/main/java/com/trianguloy/urlchecker/activities/BackupActivity.java
@@ -29,6 +29,7 @@ import com.trianguloy.urlchecker.modules.list.VirusTotalModule;
import com.trianguloy.urlchecker.utilities.AndroidSettings;
import com.trianguloy.urlchecker.utilities.generics.GenericPref;
import com.trianguloy.urlchecker.utilities.methods.AndroidUtils;
+import com.trianguloy.urlchecker.utilities.methods.Animations;
import com.trianguloy.urlchecker.utilities.methods.JavaUtils;
import com.trianguloy.urlchecker.utilities.methods.JavaUtils.Function;
import com.trianguloy.urlchecker.utilities.methods.PackageUtils;
@@ -73,6 +74,8 @@ public class BackupActivity extends Activity {
setTitle(R.string.btn_backupRestore);
AndroidUtils.configureUp(this);
+ Animations.enableAnimationsRecursively(this);
+
prefs = GenericPref.getPrefs(this);
chk_data = findViewById(R.id.chk_data);
chk_data_prefs = findViewById(R.id.chk_data_prefs);
diff --git a/app/src/main/java/com/trianguloy/urlchecker/activities/ModulesActivity.java b/app/src/main/java/com/trianguloy/urlchecker/activities/ModulesActivity.java
index 352d7f1..2f702e7 100644
--- a/app/src/main/java/com/trianguloy/urlchecker/activities/ModulesActivity.java
+++ b/app/src/main/java/com/trianguloy/urlchecker/activities/ModulesActivity.java
@@ -100,7 +100,7 @@ public class ModulesActivity extends Activity {
// inflate
View parent = Inflater.inflate(R.layout.config_module, list);
parent.setTag(module.getId());
- Animations.enableAnimations(parent);
+ Animations.enableAnimationsRecursively(parent); // instead of full activity to avoid 'replacing' when reordering
// configure enable toggle
Switch toggleEnable = parent.findViewById(R.id.enable);
diff --git a/app/src/main/java/com/trianguloy/urlchecker/activities/SettingsActivity.java b/app/src/main/java/com/trianguloy/urlchecker/activities/SettingsActivity.java
index 554ca98..a276841 100644
--- a/app/src/main/java/com/trianguloy/urlchecker/activities/SettingsActivity.java
+++ b/app/src/main/java/com/trianguloy/urlchecker/activities/SettingsActivity.java
@@ -14,6 +14,7 @@ import com.trianguloy.urlchecker.fragments.BrowserButtonsFragment;
import com.trianguloy.urlchecker.fragments.ResultCodeInjector;
import com.trianguloy.urlchecker.utilities.AndroidSettings;
import com.trianguloy.urlchecker.utilities.methods.AndroidUtils;
+import com.trianguloy.urlchecker.utilities.methods.Animations;
import com.trianguloy.urlchecker.utilities.methods.PackageUtils;
import java.util.Objects;
@@ -35,6 +36,7 @@ public class SettingsActivity extends Activity {
configureBrowserButtons();
configureDayNight();
configureLocale();
+ Animations.ANIMATIONS(this).attachToSwitch(findViewById(R.id.animations));
// if this was reloaded, some settings may have change, so reload previous one too
if (AndroidSettings.wasReloaded(this)) AndroidSettings.markForReloading(this);
diff --git a/app/src/main/java/com/trianguloy/urlchecker/dialogs/MainDialog.java b/app/src/main/java/com/trianguloy/urlchecker/dialogs/MainDialog.java
index e822375..3bb047d 100644
--- a/app/src/main/java/com/trianguloy/urlchecker/dialogs/MainDialog.java
+++ b/app/src/main/java/com/trianguloy/urlchecker/dialogs/MainDialog.java
@@ -24,6 +24,7 @@ import com.trianguloy.urlchecker.modules.list.DrawerModule;
import com.trianguloy.urlchecker.url.UrlData;
import com.trianguloy.urlchecker.utilities.AndroidSettings;
import com.trianguloy.urlchecker.utilities.methods.AndroidUtils;
+import com.trianguloy.urlchecker.utilities.methods.Animations;
import com.trianguloy.urlchecker.utilities.methods.Inflater;
import java.util.ArrayList;
@@ -256,6 +257,8 @@ public class MainDialog extends Activity {
if (ll_main.getChildCount() == 0) {
ll_main.addView(egg()); // ;)
}
+
+ Animations.enableAnimationsRecursively(this);
}
/**
diff --git a/app/src/main/java/com/trianguloy/urlchecker/utilities/methods/Animations.java b/app/src/main/java/com/trianguloy/urlchecker/utilities/methods/Animations.java
index ee451f6..5276b66 100644
--- a/app/src/main/java/com/trianguloy/urlchecker/utilities/methods/Animations.java
+++ b/app/src/main/java/com/trianguloy/urlchecker/utilities/methods/Animations.java
@@ -1,26 +1,43 @@
package com.trianguloy.urlchecker.utilities.methods;
import android.animation.LayoutTransition;
+import android.app.Activity;
+import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
+import com.trianguloy.urlchecker.utilities.generics.GenericPref;
+
/**
* Animations-related functionality
*/
public interface Animations {
+
+ static GenericPref.Bool ANIMATIONS(Context cntx) {
+ return new GenericPref.Bool("animations", true, cntx);
+ }
+
/**
- * Enables animations for a specific view
+ * Enables animations on all views from this activity
*/
- static void enableAnimations(View view) {
- if (view instanceof ViewGroup) {
- final LayoutTransition lt = ((ViewGroup) view).getLayoutTransition();
- if (lt != null) {
- lt.enableTransitionType(LayoutTransition.CHANGING);
- } else {
- AndroidUtils.assertError(view + " doesn't have a LayoutTransition");
- }
- } else {
- AndroidUtils.assertError(view + " isn't a ViewGroup");
+ static void enableAnimationsRecursively(Activity cntx) {
+ if (ANIMATIONS(cntx).get()) enableAnimationsRecursively(cntx.findViewById(android.R.id.content));
+ }
+
+ /**
+ * Enables animations from all views starting from this parent
+ */
+ static void enableAnimationsRecursively(View parent) {
+ if (ANIMATIONS(parent.getContext()).get()) _enableAnimationsRecursively(parent);
+ }
+
+ static void _enableAnimationsRecursively(View view) {
+ if (view instanceof ViewGroup group) {
+ var lt = new LayoutTransition();
+ lt.enableTransitionType(LayoutTransition.CHANGING);
+ group.setLayoutTransition(lt);
+
+ for (var i = 0; i < group.getChildCount(); ++i) _enableAnimationsRecursively(group.getChildAt(i));
}
}
}
diff --git a/app/src/main/res/layout/activity_backup.xml b/app/src/main/res/layout/activity_backup.xml
index d1fd727..59e8080 100644
--- a/app/src/main/res/layout/activity_backup.xml
+++ b/app/src/main/res/layout/activity_backup.xml
@@ -9,7 +9,6 @@
@@ -70,7 +69,6 @@
+
+
+
+
+
+
+
+
+ android:layout_height="wrap_content">
+
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 9f9ae7f..b6ca116 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -52,6 +52,7 @@ Traducciones: %s."
Oscuro
Claro
Idioma:
+ Activar animaciones
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c9ea8a0..9ed4004 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -52,6 +52,7 @@ Translations: %s."
Dark
Light
Locale:
+ Enable animations
Repeat tutorial
Backup / Restore