Loading quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt +23 −11 Original line number Diff line number Diff line Loading @@ -55,6 +55,9 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { private val stashedHandleWidth = context.resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_width) private val stashedHandleHeight = context.resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_height) init { paint.color = context.getColor(R.color.taskbar_background) paint.flags = Paint.ANTI_ALIAS_FLAG Loading Loading @@ -102,8 +105,8 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { /** Draws the background with the given paint and height, on the provided canvas. */ fun draw(canvas: Canvas) { canvas.save() canvas.translate(0f, canvas.height - backgroundHeight - bottomMargin) if (!isTransientTaskbar || transientBackgroundBounds.isEmpty) { canvas.translate(0f, canvas.height - backgroundHeight - bottomMargin) // Draw the background behind taskbar content. canvas.drawRect(0f, 0f, canvas.width.toFloat(), backgroundHeight, paint) Loading @@ -114,12 +117,21 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { canvas.translate(canvas.width - rightCornerRadius, -rightCornerRadius) canvas.drawPath(invertedRightCornerPath, paint) } else { // Approximates the stash/unstash animation to transform the background. // backgroundHeight is a value from [0...maxBackgroundHeight], so we can use it as a // proxy to figure out the animation progress of the stash/unstash animation. val progress = backgroundHeight / maxBackgroundHeight // At progress 0, we draw the background as the stashed handle. // At progress 1, we draw the background as the full taskbar. val newBackgroundHeight = mapRange(progress, stashedHandleHeight.toFloat(), maxBackgroundHeight) val fullWidth = transientBackgroundBounds.width() val newWidth = mapRange(progress, stashedHandleWidth.toFloat(), fullWidth.toFloat()) val delta = fullWidth - newWidth canvas.translate(0f, bottomMargin * ((1f - progress) / 2f)) val halfWidthDelta = (fullWidth - newWidth) / 2f val radius = newBackgroundHeight / 2f val bottomMarginProgress = bottomMargin * ((1f - progress) / 2f) canvas.translate(0f, canvas.height - bottomMargin + bottomMarginProgress) // Draw shadow. val shadowAlpha = Loading @@ -131,20 +143,20 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { setColorAlphaBound(Color.BLACK, Math.round(shadowAlpha)) ) // Draw background. val radius = backgroundHeight / 2f // Aligns the bottom with the bottom of the stashed handle. val bottom = (-mapRange(1f - progress, 0f, stashedHandleHeight / 2f) + translationYForSwipe) canvas.drawRoundRect( transientBackgroundBounds.left + (delta / 2f), translationYForSwipe, transientBackgroundBounds.right - (delta / 2f), backgroundHeight + translationYForSwipe, transientBackgroundBounds.left + halfWidthDelta, bottom - newBackgroundHeight, transientBackgroundBounds.right - halfWidthDelta, bottom, radius, radius, paint ) } canvas.restore() } Loading Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt +23 −11 Original line number Diff line number Diff line Loading @@ -55,6 +55,9 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { private val stashedHandleWidth = context.resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_width) private val stashedHandleHeight = context.resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_height) init { paint.color = context.getColor(R.color.taskbar_background) paint.flags = Paint.ANTI_ALIAS_FLAG Loading Loading @@ -102,8 +105,8 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { /** Draws the background with the given paint and height, on the provided canvas. */ fun draw(canvas: Canvas) { canvas.save() canvas.translate(0f, canvas.height - backgroundHeight - bottomMargin) if (!isTransientTaskbar || transientBackgroundBounds.isEmpty) { canvas.translate(0f, canvas.height - backgroundHeight - bottomMargin) // Draw the background behind taskbar content. canvas.drawRect(0f, 0f, canvas.width.toFloat(), backgroundHeight, paint) Loading @@ -114,12 +117,21 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { canvas.translate(canvas.width - rightCornerRadius, -rightCornerRadius) canvas.drawPath(invertedRightCornerPath, paint) } else { // Approximates the stash/unstash animation to transform the background. // backgroundHeight is a value from [0...maxBackgroundHeight], so we can use it as a // proxy to figure out the animation progress of the stash/unstash animation. val progress = backgroundHeight / maxBackgroundHeight // At progress 0, we draw the background as the stashed handle. // At progress 1, we draw the background as the full taskbar. val newBackgroundHeight = mapRange(progress, stashedHandleHeight.toFloat(), maxBackgroundHeight) val fullWidth = transientBackgroundBounds.width() val newWidth = mapRange(progress, stashedHandleWidth.toFloat(), fullWidth.toFloat()) val delta = fullWidth - newWidth canvas.translate(0f, bottomMargin * ((1f - progress) / 2f)) val halfWidthDelta = (fullWidth - newWidth) / 2f val radius = newBackgroundHeight / 2f val bottomMarginProgress = bottomMargin * ((1f - progress) / 2f) canvas.translate(0f, canvas.height - bottomMargin + bottomMarginProgress) // Draw shadow. val shadowAlpha = Loading @@ -131,20 +143,20 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { setColorAlphaBound(Color.BLACK, Math.round(shadowAlpha)) ) // Draw background. val radius = backgroundHeight / 2f // Aligns the bottom with the bottom of the stashed handle. val bottom = (-mapRange(1f - progress, 0f, stashedHandleHeight / 2f) + translationYForSwipe) canvas.drawRoundRect( transientBackgroundBounds.left + (delta / 2f), translationYForSwipe, transientBackgroundBounds.right - (delta / 2f), backgroundHeight + translationYForSwipe, transientBackgroundBounds.left + halfWidthDelta, bottom - newBackgroundHeight, transientBackgroundBounds.right - halfWidthDelta, bottom, radius, radius, paint ) } canvas.restore() } Loading