mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 11:18:21 +00:00
Add workspace scrim animation to the state transition to reduce jankiness.
b/20956087 Note: Will work on creating a separate view for the scrim animation rather than the drag layer on a separate CL. Change-Id: Idaced5c6867abe3ed9afa984c885023676b3a141
This commit is contained in:
@@ -192,8 +192,7 @@ public class WorkspaceStateTransitionAnimation {
|
||||
|
||||
@Thunk final ZoomInInterpolator mZoomInInterpolator = new ZoomInInterpolator();
|
||||
|
||||
// These properties refer to the background protection gradient used for AllApps and Customize
|
||||
@Thunk ValueAnimator mBackgroundFadeInAnimation;
|
||||
// These properties refer to the background protection gradient used for AllApps and Widget tray.
|
||||
@Thunk ValueAnimator mBackgroundFadeOutAnimation;
|
||||
|
||||
@Thunk float mSpringLoadedShrinkFactor;
|
||||
@@ -232,6 +231,7 @@ public class WorkspaceStateTransitionAnimation {
|
||||
accessibilityEnabled);
|
||||
animateSearchBar(states, animated, duration, hasOverlaySearchBar, layerViews,
|
||||
accessibilityEnabled);
|
||||
animateBackgroundGradient(states, animated, BACKGROUND_FADE_OUT_DURATION);
|
||||
return mStateAnimator;
|
||||
}
|
||||
|
||||
@@ -473,12 +473,6 @@ public class WorkspaceStateTransitionAnimation {
|
||||
AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (states.stateIsNormal) {
|
||||
animateBackgroundGradient(0f, animated);
|
||||
} else {
|
||||
animateBackgroundGradient(mWorkspaceScrimAlpha, animated);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -548,19 +542,17 @@ public class WorkspaceStateTransitionAnimation {
|
||||
}
|
||||
|
||||
/**
|
||||
* Animates the background scrim.
|
||||
* TODO(winsonc): Is there a better place for this?
|
||||
* Animates the background scrim. Add to the state animator to prevent jankiness.
|
||||
*
|
||||
* @param finalAlpha the final alpha for the background scrim
|
||||
* @param animated whether or not to set the background alpha immediately
|
||||
* @duration duration of the animation
|
||||
*/
|
||||
private void animateBackgroundGradient(float finalAlpha, boolean animated) {
|
||||
// Cancel any running background animations
|
||||
cancelAnimator(mBackgroundFadeInAnimation);
|
||||
cancelAnimator(mBackgroundFadeOutAnimation);
|
||||
|
||||
private void animateBackgroundGradient(TransitionStates states, boolean animated, int duration) {
|
||||
final DragLayer dragLayer = mLauncher.getDragLayer();
|
||||
final float startAlpha = dragLayer.getBackgroundAlpha();
|
||||
float finalAlpha = states.stateIsNormal ? 0 : mWorkspaceScrimAlpha;
|
||||
|
||||
if (finalAlpha != startAlpha) {
|
||||
if (animated) {
|
||||
mBackgroundFadeOutAnimation =
|
||||
@@ -573,8 +565,8 @@ public class WorkspaceStateTransitionAnimation {
|
||||
}
|
||||
});
|
||||
mBackgroundFadeOutAnimation.setInterpolator(new DecelerateInterpolator(1.5f));
|
||||
mBackgroundFadeOutAnimation.setDuration(BACKGROUND_FADE_OUT_DURATION);
|
||||
mBackgroundFadeOutAnimation.start();
|
||||
mBackgroundFadeOutAnimation.setDuration(duration);
|
||||
mStateAnimator.play(mBackgroundFadeOutAnimation);
|
||||
} else {
|
||||
dragLayer.setBackgroundAlpha(finalAlpha);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user