Transient Taskbar's Background animation
Added fold/unfold animation to the background of transient taskbar.
Note: The animation has only been added to transient taskbar
Test: manual
Fixes: 273929852
Change-Id: I2f35b6a1157341744d9c7b8306d7dbd8490702dc
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt
index 82b455d..ebe057c 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt
@@ -50,6 +50,7 @@
private val fullRightCornerRadius = context.rightCornerRadius.toFloat()
private var leftCornerRadius = fullLeftCornerRadius
private var rightCornerRadius = fullRightCornerRadius
+ private var widthInsetPercentage = 0f
private val square: Path = Path()
private val circle: Path = Path()
private val invertedLeftCornerPath: Path = Path()
@@ -157,12 +158,22 @@
transientBackgroundBounds.right - halfWidthDelta,
bottom
)
+ val horizontalInset = fullWidth * widthInsetPercentage
+ lastDrawnTransientRect.inset(horizontalInset, 0f)
canvas.drawRoundRect(lastDrawnTransientRect, radius, radius, paint)
}
canvas.restore()
}
+ /**
+ * Sets the width percentage to inset the transient taskbar's background from the left and from
+ * the right.
+ */
+ fun setBackgroundHorizontalInsets(insetPercentage: Float) {
+ widthInsetPercentage = insetPercentage
+ }
+
companion object {
const val DEFAULT_ROUNDNESS = 1f
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
index 1b3972d..c53460d 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
@@ -200,4 +200,13 @@
}
return super.dispatchKeyEvent(event);
}
+
+ /**
+ * Sets the width percentage to inset the transient taskbar's background from the left and from
+ * the right.
+ */
+ public void setBackgroundHorizontalInsets(float insetPercentage) {
+ mBackgroundRenderer.setBackgroundHorizontalInsets(insetPercentage);
+ invalidate();
+ }
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
index 7f88794..01cac2b 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
@@ -183,6 +183,15 @@
mLastSetBackgroundAlpha * (1 - mBgOffset.value));
}
+ /**
+ * Sets the width percentage to inset the transient taskbar's background from the left and from
+ * the right.
+ */
+ public void setBackgroundHorizontalInsets(float insetPercentage) {
+ mTaskbarDragLayer.setBackgroundHorizontalInsets(insetPercentage);
+
+ }
+
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarDragLayerController:");
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java
index 4c937a7..f12d518 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java
@@ -33,11 +33,14 @@
public class TaskbarUnfoldAnimationController implements
TaskbarControllers.LoggableTaskbarController {
+ private static final float MAX_WIDTH_INSET_FRACTION = 0.035f;
+
private final ScopedUnfoldTransitionProgressProvider mScopedUnfoldTransitionProgressProvider;
private final NaturalRotationUnfoldProgressProvider mNaturalUnfoldTransitionProgressProvider;
private final UnfoldMoveFromCenterAnimator mMoveFromCenterAnimator;
private final TransitionListener mTransitionListener = new TransitionListener();
private TaskbarViewController mTaskbarViewController;
+ private TaskbarDragLayerController mTaskbarDragLayerController;
public TaskbarUnfoldAnimationController(BaseTaskbarContext context,
ScopedUnfoldTransitionProgressProvider source,
@@ -63,6 +66,7 @@
mTaskbarViewController.addOneTimePreDrawListener(() ->
mScopedUnfoldTransitionProgressProvider.setReadyToHandleTransition(true));
mNaturalUnfoldTransitionProgressProvider.addCallback(mTransitionListener);
+ mTaskbarDragLayerController = taskbarControllers.taskbarDragLayerController;
}
/**
@@ -99,11 +103,14 @@
public void onTransitionFinished() {
mMoveFromCenterAnimator.onTransitionFinished();
mMoveFromCenterAnimator.clearRegisteredViews();
+ mTaskbarDragLayerController.setBackgroundHorizontalInsets(0f);
}
@Override
public void onTransitionProgress(float progress) {
mMoveFromCenterAnimator.onTransitionProgress(progress);
+ float insetPercentage = (1 - progress) * MAX_WIDTH_INSET_FRACTION;
+ mTaskbarDragLayerController.setBackgroundHorizontalInsets(insetPercentage);
}
}
}