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 @@