Pause the AllSetActivity background animation more reliably. am: f016c44adc

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/19360020

Change-Id: I724b2874f4726057f337d46fe25e7f7232961ace
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Schneider Victor-tulias
2022-07-21 18:18:11 +00:00
committed by Automerger Merge Worker
@@ -82,6 +82,8 @@ public class AllSetActivity extends Activity {
private static final int MAX_SWIPE_DURATION = 350;
private static final float ANIMATION_PAUSE_ALPHA_THRESHOLD = 0.1f;
private TISBindHelper mTISBindHelper;
private TISBinder mBinder;
@@ -144,6 +146,10 @@ public class AllSetActivity extends Activity {
}
private void runOnUiHelperThread(Runnable runnable) {
if (!isResumed()
|| getContentViewAlphaForSwipeProgress() <= ANIMATION_PAUSE_ALPHA_THRESHOLD) {
return;
}
Executors.UI_HELPER_EXECUTOR.execute(runnable);
}
@@ -192,6 +198,7 @@ public class AllSetActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
maybeResumeOrPauseBackgroundAnimation();
if (mBinder != null) {
mBinder.getTaskbarManager().setSetupUIVisible(true);
mBinder.setSwipeUpProxy(this::createSwipeUpProxy);
@@ -210,6 +217,7 @@ public class AllSetActivity extends Activity {
protected void onPause() {
super.onPause();
clearBinderOverride();
maybeResumeOrPauseBackgroundAnimation();
if (mSwipeProgress.value >= 1) {
finishAndRemoveTask();
}
@@ -244,10 +252,25 @@ public class AllSetActivity extends Activity {
return mSwipeProgress;
}
private float getContentViewAlphaForSwipeProgress() {
return Utilities.mapBoundToRange(
mSwipeProgress.value, 0, HINT_BOTTOM_FACTOR, 1, 0, LINEAR);
}
private void maybeResumeOrPauseBackgroundAnimation() {
boolean shouldPlayAnimation =
getContentViewAlphaForSwipeProgress() > ANIMATION_PAUSE_ALPHA_THRESHOLD
&& isResumed();
if (mAnimatedBackground.isAnimating() && !shouldPlayAnimation) {
mAnimatedBackground.pauseAnimation();
} else if (!mAnimatedBackground.isAnimating() && shouldPlayAnimation) {
mAnimatedBackground.resumeAnimation();
}
}
private void onSwipeProgressUpdate() {
mBackground.setProgress(mSwipeProgress.value);
float alpha = Utilities.mapBoundToRange(
mSwipeProgress.value, 0, HINT_BOTTOM_FACTOR, 1, 0, LINEAR);
float alpha = getContentViewAlphaForSwipeProgress();
mContentView.setAlpha(alpha);
mContentView.setTranslationY((alpha - 1) * mSwipeUpShift);
@@ -259,12 +282,7 @@ public class AllSetActivity extends Activity {
mLauncherStartAnim.setPlayFraction(Utilities.mapBoundToRange(
mSwipeProgress.value, 0, 1, 0, 1, FAST_OUT_SLOW_IN));
}
if (alpha == 0f) {
mAnimatedBackground.pauseAnimation();
} else if (!mAnimatedBackground.isAnimating()) {
mAnimatedBackground.resumeAnimation();
}
maybeResumeOrPauseBackgroundAnimation();
}
/**