Loading quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java +35 −8 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.RectF; import android.util.AttributeSet; import android.util.FloatProperty; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; Loading @@ -33,6 +34,8 @@ import androidx.annotation.Nullable; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.testing.TestLogging; import com.android.launcher3.testing.shared.TestProtocol; import com.android.launcher3.util.MultiPropertyFactory; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; import com.android.launcher3.views.BaseDragLayer; /** Loading @@ -40,6 +43,25 @@ import com.android.launcher3.views.BaseDragLayer; */ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { private static final int INDEX_ALL_OTHER_STATES = 0; private static final int INDEX_STASH_ANIM = 1; private static final int INDEX_COUNT = 2; private static final FloatProperty<TaskbarDragLayer> BG_ALPHA = new FloatProperty<>("taskbarBgAlpha") { @Override public void setValue(TaskbarDragLayer dragLayer, float alpha) { dragLayer.mBackgroundRenderer.getPaint().setAlpha((int) (alpha * 255)); dragLayer.invalidate(); } @Override public Float get(TaskbarDragLayer dragLayer) { return dragLayer.mBackgroundRenderer.getPaint().getAlpha() / 255f; } }; private final TaskbarBackgroundRenderer mBackgroundRenderer; private final ViewTreeObserver.OnComputeInternalInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets; Loading @@ -49,6 +71,8 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { private float mTaskbarBackgroundOffset; private final MultiPropertyFactory<TaskbarDragLayer> mTaskbarBackgroundAlpha; public TaskbarDragLayer(@NonNull Context context) { this(context, null); } Loading @@ -66,7 +90,11 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { int defStyleAttr, int defStyleRes) { super(context, attrs, 1 /* alphaChannelCount */); mBackgroundRenderer = new TaskbarBackgroundRenderer(mActivity); mBackgroundRenderer.getPaint().setAlpha(0); mTaskbarBackgroundAlpha = new MultiPropertyFactory<>(this, BG_ALPHA, INDEX_COUNT, (a, b) -> a * b, 1f); mTaskbarBackgroundAlpha.get(INDEX_ALL_OTHER_STATES).setValue(0); mTaskbarBackgroundAlpha.get(INDEX_STASH_ANIM).setValue(1); } public void init(TaskbarDragLayerController.TaskbarDragLayerCallbacks callbacks) { Loading Loading @@ -133,13 +161,12 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { super.dispatchDraw(canvas); } /** * Sets the alpha of the background color behind all the Taskbar contents. * @param alpha 0 is fully transparent, 1 is fully opaque. */ protected void setTaskbarBackgroundAlpha(float alpha) { mBackgroundRenderer.getPaint().setAlpha((int) (alpha * 255)); invalidate(); protected MultiProperty getBackgroundRendererAlpha() { return mTaskbarBackgroundAlpha.get(INDEX_ALL_OTHER_STATES); } protected MultiProperty getBackgroundRendererAlphaForStash() { return mTaskbarBackgroundAlpha.get(INDEX_STASH_ANIM); } /** Loading quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java +8 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.util.DimensionUtils; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; import com.android.launcher3.util.TouchController; import java.io.PrintWriter; Loading Loading @@ -62,12 +63,14 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa private TaskbarStashViaTouchController mTaskbarStashViaTouchController; private AnimatedFloat mOnBackgroundNavButtonColorIntensity; private MultiProperty mBackgroundRendererAlpha; private float mLastSetBackgroundAlpha; public TaskbarDragLayerController(TaskbarActivityContext activity, TaskbarDragLayer taskbarDragLayer) { mActivity = activity; mTaskbarDragLayer = taskbarDragLayer; mBackgroundRendererAlpha = mTaskbarDragLayer.getBackgroundRendererAlpha(); final Resources resources = mTaskbarDragLayer.getResources(); mFolderMargin = resources.getDimensionPixelSize(R.dimen.taskbar_folder_margin); } Loading Loading @@ -152,11 +155,15 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa * mNotificationShadeBgTaskbar.value * mImeBgTaskbar.value * mAssistantBgTaskbar.value; mLastSetBackgroundAlpha = mBgOverride.value * Math.max(bgNavbar, bgTaskbar); mTaskbarDragLayer.setTaskbarBackgroundAlpha(mLastSetBackgroundAlpha); mBackgroundRendererAlpha.setValue(mLastSetBackgroundAlpha); updateOnBackgroundNavButtonColorIntensity(); } public MultiProperty getBackgroundRendererAlphaForStash() { return mTaskbarDragLayer.getBackgroundRendererAlphaForStash(); } /** * Sets the translation of the background during the swipe up gesture. */ Loading quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +15 −8 Original line number Diff line number Diff line Loading @@ -232,6 +232,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba // Taskbar background properties. private AnimatedFloat mTaskbarBackgroundOffset; private AnimatedFloat mTaskbarImeBgAlpha; private MultiProperty mTaskbarBackgroundAlphaForStash; // TaskbarView icon properties. private MultiProperty mIconAlphaForStash; private AnimatedFloat mIconScaleForStash; Loading Loading @@ -303,6 +304,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba TaskbarDragLayerController dragLayerController = controllers.taskbarDragLayerController; mTaskbarBackgroundOffset = dragLayerController.getTaskbarBackgroundOffset(); mTaskbarImeBgAlpha = dragLayerController.getImeBgTaskbar(); mTaskbarBackgroundAlphaForStash = dragLayerController.getBackgroundRendererAlphaForStash(); TaskbarViewController taskbarViewController = controllers.taskbarViewController; mIconAlphaForStash = taskbarViewController.getTaskbarIconAlpha().get( Loading Loading @@ -747,37 +749,42 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba final float backgroundOffsetTarget = isStashed ? 1 : 0; final float iconAlphaTarget = isStashed ? 0 : 1; final float stashedHandleAlphaTarget = isStashed ? 1 : 0; final float backgroundAlphaTarget = isStashed ? 0 : 1; // Timing for the alpha values depend on the animation played long iconAlphaStartDelay = 0, iconAlphaDuration = 0, stashedHandleAlphaDelay = 0, stashedHandleAlphaDuration = 0; long iconAlphaStartDelay = 0, iconAlphaDuration = 0, backgroundAndHandleAlphaStartDelay = 0, backgroundAndHandleAlphaDuration = 0; if (duration > 0) { if (animationType == TRANSITION_HANDLE_FADE) { // When fading, the handle fades in/out at the beginning of the transition with // TASKBAR_STASH_ALPHA_DURATION. stashedHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; backgroundAndHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; // The iconAlphaDuration must be set to duration for the skippable interpolators // below to work. iconAlphaDuration = duration; } else { iconAlphaStartDelay = TASKBAR_STASH_ALPHA_START_DELAY; iconAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; stashedHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; backgroundAndHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; if (isStashed) { if (animationType == TRANSITION_HOME_TO_APP) { iconAlphaStartDelay = TASKBAR_STASH_ICON_ALPHA_HOME_TO_APP_START_DELAY; } stashedHandleAlphaDelay = iconAlphaStartDelay; stashedHandleAlphaDuration = Math.max(0, duration - iconAlphaStartDelay); backgroundAndHandleAlphaStartDelay = iconAlphaStartDelay; backgroundAndHandleAlphaDuration = Math.max(0, duration - iconAlphaStartDelay); } } } play(as, mTaskbarStashedHandleAlpha.animateToValue(stashedHandleAlphaTarget), stashedHandleAlphaDelay, stashedHandleAlphaDuration, LINEAR); backgroundAndHandleAlphaStartDelay, backgroundAndHandleAlphaDuration, LINEAR); play(as, mTaskbarBackgroundAlphaForStash.animateToValue(backgroundAlphaTarget), backgroundAndHandleAlphaStartDelay, backgroundAndHandleAlphaDuration, LINEAR); // The rest of the animations might be "skipped" in TRANSITION_HANDLE_FADE transitions. AnimatorSet skippable = as; Loading Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java +35 −8 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.RectF; import android.util.AttributeSet; import android.util.FloatProperty; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; Loading @@ -33,6 +34,8 @@ import androidx.annotation.Nullable; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.testing.TestLogging; import com.android.launcher3.testing.shared.TestProtocol; import com.android.launcher3.util.MultiPropertyFactory; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; import com.android.launcher3.views.BaseDragLayer; /** Loading @@ -40,6 +43,25 @@ import com.android.launcher3.views.BaseDragLayer; */ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { private static final int INDEX_ALL_OTHER_STATES = 0; private static final int INDEX_STASH_ANIM = 1; private static final int INDEX_COUNT = 2; private static final FloatProperty<TaskbarDragLayer> BG_ALPHA = new FloatProperty<>("taskbarBgAlpha") { @Override public void setValue(TaskbarDragLayer dragLayer, float alpha) { dragLayer.mBackgroundRenderer.getPaint().setAlpha((int) (alpha * 255)); dragLayer.invalidate(); } @Override public Float get(TaskbarDragLayer dragLayer) { return dragLayer.mBackgroundRenderer.getPaint().getAlpha() / 255f; } }; private final TaskbarBackgroundRenderer mBackgroundRenderer; private final ViewTreeObserver.OnComputeInternalInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets; Loading @@ -49,6 +71,8 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { private float mTaskbarBackgroundOffset; private final MultiPropertyFactory<TaskbarDragLayer> mTaskbarBackgroundAlpha; public TaskbarDragLayer(@NonNull Context context) { this(context, null); } Loading @@ -66,7 +90,11 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { int defStyleAttr, int defStyleRes) { super(context, attrs, 1 /* alphaChannelCount */); mBackgroundRenderer = new TaskbarBackgroundRenderer(mActivity); mBackgroundRenderer.getPaint().setAlpha(0); mTaskbarBackgroundAlpha = new MultiPropertyFactory<>(this, BG_ALPHA, INDEX_COUNT, (a, b) -> a * b, 1f); mTaskbarBackgroundAlpha.get(INDEX_ALL_OTHER_STATES).setValue(0); mTaskbarBackgroundAlpha.get(INDEX_STASH_ANIM).setValue(1); } public void init(TaskbarDragLayerController.TaskbarDragLayerCallbacks callbacks) { Loading Loading @@ -133,13 +161,12 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { super.dispatchDraw(canvas); } /** * Sets the alpha of the background color behind all the Taskbar contents. * @param alpha 0 is fully transparent, 1 is fully opaque. */ protected void setTaskbarBackgroundAlpha(float alpha) { mBackgroundRenderer.getPaint().setAlpha((int) (alpha * 255)); invalidate(); protected MultiProperty getBackgroundRendererAlpha() { return mTaskbarBackgroundAlpha.get(INDEX_ALL_OTHER_STATES); } protected MultiProperty getBackgroundRendererAlphaForStash() { return mTaskbarBackgroundAlpha.get(INDEX_STASH_ANIM); } /** Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java +8 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.util.DimensionUtils; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; import com.android.launcher3.util.TouchController; import java.io.PrintWriter; Loading Loading @@ -62,12 +63,14 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa private TaskbarStashViaTouchController mTaskbarStashViaTouchController; private AnimatedFloat mOnBackgroundNavButtonColorIntensity; private MultiProperty mBackgroundRendererAlpha; private float mLastSetBackgroundAlpha; public TaskbarDragLayerController(TaskbarActivityContext activity, TaskbarDragLayer taskbarDragLayer) { mActivity = activity; mTaskbarDragLayer = taskbarDragLayer; mBackgroundRendererAlpha = mTaskbarDragLayer.getBackgroundRendererAlpha(); final Resources resources = mTaskbarDragLayer.getResources(); mFolderMargin = resources.getDimensionPixelSize(R.dimen.taskbar_folder_margin); } Loading Loading @@ -152,11 +155,15 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa * mNotificationShadeBgTaskbar.value * mImeBgTaskbar.value * mAssistantBgTaskbar.value; mLastSetBackgroundAlpha = mBgOverride.value * Math.max(bgNavbar, bgTaskbar); mTaskbarDragLayer.setTaskbarBackgroundAlpha(mLastSetBackgroundAlpha); mBackgroundRendererAlpha.setValue(mLastSetBackgroundAlpha); updateOnBackgroundNavButtonColorIntensity(); } public MultiProperty getBackgroundRendererAlphaForStash() { return mTaskbarDragLayer.getBackgroundRendererAlphaForStash(); } /** * Sets the translation of the background during the swipe up gesture. */ Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +15 −8 Original line number Diff line number Diff line Loading @@ -232,6 +232,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba // Taskbar background properties. private AnimatedFloat mTaskbarBackgroundOffset; private AnimatedFloat mTaskbarImeBgAlpha; private MultiProperty mTaskbarBackgroundAlphaForStash; // TaskbarView icon properties. private MultiProperty mIconAlphaForStash; private AnimatedFloat mIconScaleForStash; Loading Loading @@ -303,6 +304,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba TaskbarDragLayerController dragLayerController = controllers.taskbarDragLayerController; mTaskbarBackgroundOffset = dragLayerController.getTaskbarBackgroundOffset(); mTaskbarImeBgAlpha = dragLayerController.getImeBgTaskbar(); mTaskbarBackgroundAlphaForStash = dragLayerController.getBackgroundRendererAlphaForStash(); TaskbarViewController taskbarViewController = controllers.taskbarViewController; mIconAlphaForStash = taskbarViewController.getTaskbarIconAlpha().get( Loading Loading @@ -747,37 +749,42 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba final float backgroundOffsetTarget = isStashed ? 1 : 0; final float iconAlphaTarget = isStashed ? 0 : 1; final float stashedHandleAlphaTarget = isStashed ? 1 : 0; final float backgroundAlphaTarget = isStashed ? 0 : 1; // Timing for the alpha values depend on the animation played long iconAlphaStartDelay = 0, iconAlphaDuration = 0, stashedHandleAlphaDelay = 0, stashedHandleAlphaDuration = 0; long iconAlphaStartDelay = 0, iconAlphaDuration = 0, backgroundAndHandleAlphaStartDelay = 0, backgroundAndHandleAlphaDuration = 0; if (duration > 0) { if (animationType == TRANSITION_HANDLE_FADE) { // When fading, the handle fades in/out at the beginning of the transition with // TASKBAR_STASH_ALPHA_DURATION. stashedHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; backgroundAndHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; // The iconAlphaDuration must be set to duration for the skippable interpolators // below to work. iconAlphaDuration = duration; } else { iconAlphaStartDelay = TASKBAR_STASH_ALPHA_START_DELAY; iconAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; stashedHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; backgroundAndHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION; if (isStashed) { if (animationType == TRANSITION_HOME_TO_APP) { iconAlphaStartDelay = TASKBAR_STASH_ICON_ALPHA_HOME_TO_APP_START_DELAY; } stashedHandleAlphaDelay = iconAlphaStartDelay; stashedHandleAlphaDuration = Math.max(0, duration - iconAlphaStartDelay); backgroundAndHandleAlphaStartDelay = iconAlphaStartDelay; backgroundAndHandleAlphaDuration = Math.max(0, duration - iconAlphaStartDelay); } } } play(as, mTaskbarStashedHandleAlpha.animateToValue(stashedHandleAlphaTarget), stashedHandleAlphaDelay, stashedHandleAlphaDuration, LINEAR); backgroundAndHandleAlphaStartDelay, backgroundAndHandleAlphaDuration, LINEAR); play(as, mTaskbarBackgroundAlphaForStash.animateToValue(backgroundAlphaTarget), backgroundAndHandleAlphaStartDelay, backgroundAndHandleAlphaDuration, LINEAR); // The rest of the animations might be "skipped" in TRANSITION_HANDLE_FADE transitions. AnimatorSet skippable = as; Loading