From 14bdf5e9274e62db34acdbe225de8f19e4046fec Mon Sep 17 00:00:00 2001 From: Kasia Krejszeff Date: Fri, 7 Mar 2025 20:33:46 +0000 Subject: [PATCH] Tap to pause/play the lottie animation in remaining PrivateSpace setup screens This is to conform to a11y motion stopping requirements. Test: manually Bug: 379258725 Flag: EXEMPT bugfix Change-Id: Ic06cb03f5490def37894b8f448e9e435ad5baf35 --- .../privatespace/PrivateSpaceSetLockFragment.java | 12 ++++++++++++ .../settings/privatespace/SetupSuccessFragment.java | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/com/android/settings/privatespace/PrivateSpaceSetLockFragment.java b/src/com/android/settings/privatespace/PrivateSpaceSetLockFragment.java index 28ac97fb0b0..47cf3baa76c 100644 --- a/src/com/android/settings/privatespace/PrivateSpaceSetLockFragment.java +++ b/src/com/android/settings/privatespace/PrivateSpaceSetLockFragment.java @@ -51,6 +51,8 @@ public class PrivateSpaceSetLockFragment extends InstrumentedFragment { private static final String TAG = "PrivateSpaceSetLockFrag"; private static final int HEADER_TEXT_MAX_LINES = 4; + private boolean mIsAnimationPlaying = true; + @Override public View onCreateView( LayoutInflater inflater, @@ -91,6 +93,7 @@ public class PrivateSpaceSetLockFragment extends InstrumentedFragment { requireActivity().getOnBackPressedDispatcher().addCallback(this, callback); LottieAnimationView lottieAnimationView = rootView.findViewById(R.id.lottie_animation); LottieColorUtils.applyDynamicColors(getContext(), lottieAnimationView); + lottieAnimationView.setOnClickListener(v -> handleAnimationClick(lottieAnimationView)); return rootView; } @@ -130,4 +133,13 @@ public class PrivateSpaceSetLockFragment extends InstrumentedFragment { Log.w(TAG, "Private profile user handle is null"); } } + + private void handleAnimationClick(LottieAnimationView lottieAnimationView) { + if (mIsAnimationPlaying) { + lottieAnimationView.pauseAnimation(); + } else { + lottieAnimationView.playAnimation(); + } + mIsAnimationPlaying = !mIsAnimationPlaying; + } } diff --git a/src/com/android/settings/privatespace/SetupSuccessFragment.java b/src/com/android/settings/privatespace/SetupSuccessFragment.java index bfd9e961837..538912e1c65 100644 --- a/src/com/android/settings/privatespace/SetupSuccessFragment.java +++ b/src/com/android/settings/privatespace/SetupSuccessFragment.java @@ -49,6 +49,8 @@ import java.util.List; public class SetupSuccessFragment extends InstrumentedFragment { private static final String TAG = "SetupSuccessFragment"; + private boolean mIsAnimationPlaying = true; + @Override public View onCreateView( LayoutInflater inflater, @@ -80,6 +82,7 @@ public class SetupSuccessFragment extends InstrumentedFragment { requireActivity().getOnBackPressedDispatcher().addCallback(this, callback); LottieAnimationView lottieAnimationView = rootView.findViewById(R.id.lottie_animation); LottieColorUtils.applyDynamicColors(getContext(), lottieAnimationView); + lottieAnimationView.setOnClickListener(v -> handleAnimationClick(lottieAnimationView)); return rootView; } @@ -141,4 +144,13 @@ public class SetupSuccessFragment extends InstrumentedFragment { task.finishAndRemoveTask(); } } + + private void handleAnimationClick(LottieAnimationView lottieAnimationView) { + if (mIsAnimationPlaying) { + lottieAnimationView.pauseAnimation(); + } else { + lottieAnimationView.playAnimation(); + } + mIsAnimationPlaying = !mIsAnimationPlaying; + } }