Loading quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskThumbnailView.java +22 −22 Original line number Diff line number Diff line Loading @@ -51,7 +51,6 @@ import com.android.quickstep.TaskOverlayFactory.TaskOverlay; import com.android.quickstep.util.TaskCornerRadius; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.QuickStepContract; /** * A task in the Recents view. Loading @@ -60,6 +59,7 @@ public class TaskThumbnailView extends View { private final static ColorMatrix COLOR_MATRIX = new ColorMatrix(); private final static ColorMatrix SATURATION_COLOR_MATRIX = new ColorMatrix(); private final static Rect EMPTY_RECT = new Rect(); public static final Property<TaskThumbnailView, Float> DIM_ALPHA = new FloatProperty<TaskThumbnailView>("dimAlpha") { Loading @@ -83,12 +83,13 @@ public class TaskThumbnailView extends View { private final Paint mBackgroundPaint = new Paint(); private final Paint mClearPaint = new Paint(); private final Paint mDimmingPaintAfterClearing = new Paint(); private final float mWindowCornerRadius; private final Matrix mMatrix = new Matrix(); private float mClipBottom = -1; private Rect mScaledInsets = new Rect(); private Rect mCurrentDrawnInsets = new Rect(); private float mCurrentDrawnCornerRadius; private boolean mIsRotated; private Task mTask; Loading Loading @@ -117,7 +118,7 @@ public class TaskThumbnailView extends View { mDimmingPaintAfterClearing.setColor(Color.BLACK); mActivity = BaseActivity.fromContext(context); mIsDarkTextTheme = Themes.getAttrBoolean(mActivity, R.attr.isWorkspaceDarkText); mWindowCornerRadius = QuickStepContract.getWindowCornerRadius(context.getResources()); setCurrentDrawnInsetsAndRadius(EMPTY_RECT, mCornerRadius); } public void bind(Task task) { Loading Loading @@ -200,25 +201,24 @@ public class TaskThumbnailView extends View { @Override protected void onDraw(Canvas canvas) { TaskView taskView = (TaskView) getParent(); float fullscreenProgress = taskView.getFullscreenProgress(); if (mIsRotated) { // Don't show insets in the wrong orientation. fullscreenProgress = 0; } if (fullscreenProgress > 0) { // Draw the insets if we're being drawn fullscreen (we do this for quick switch). float cornerRadius = Utilities.mapRange(fullscreenProgress, mCornerRadius, mWindowCornerRadius); drawOnCanvas(canvas, -mScaledInsets.left * fullscreenProgress, -mScaledInsets.top * fullscreenProgress, getMeasuredWidth() + mScaledInsets.right * fullscreenProgress, getMeasuredHeight() + mScaledInsets.bottom * fullscreenProgress, cornerRadius / taskView.getRecentsView().getScaleX()); } else { drawOnCanvas(canvas, 0, 0, getMeasuredWidth(), getMeasuredHeight(), mCornerRadius); -mCurrentDrawnInsets.left, -mCurrentDrawnInsets.top, getMeasuredWidth() + mCurrentDrawnInsets.right, getMeasuredHeight() + mCurrentDrawnInsets.bottom, mCurrentDrawnCornerRadius); } public Rect getInsetsToDrawInFullscreen() { // Don't show insets in the wrong orientation. return mIsRotated ? EMPTY_RECT : mScaledInsets; } public void setCurrentDrawnInsetsAndRadius(Rect insets, float radius) { mCurrentDrawnInsets.set(insets); mCurrentDrawnCornerRadius = radius; invalidate(); } public float getCornerRadius() { Loading quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java +39 −11 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.app.ActivityOptions; import android.content.Context; import android.content.res.Resources; import android.graphics.Outline; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; Loading @@ -47,6 +48,7 @@ import android.widget.Toast; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.Interpolators; import com.android.launcher3.logging.UserEventDispatcher; Loading @@ -54,7 +56,6 @@ import com.android.launcher3.userevent.nano.LauncherLogProto; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch; import com.android.launcher3.util.PendingAnimation; import com.android.launcher3.util.Themes; import com.android.launcher3.util.ViewPool.Reusable; import com.android.quickstep.RecentsModel; import com.android.quickstep.TaskIconCache; Loading @@ -62,11 +63,13 @@ import com.android.quickstep.TaskOverlayFactory; import com.android.quickstep.TaskSystemShortcut; import com.android.quickstep.TaskThumbnailCache; import com.android.quickstep.TaskUtils; import com.android.quickstep.util.TaskCornerRadius; import com.android.quickstep.views.RecentsView.PageCallbacks; import com.android.quickstep.views.RecentsView.ScrollState; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityOptionsCompat; import com.android.systemui.shared.system.QuickStepContract; import java.util.List; import java.util.function.Consumer; Loading Loading @@ -150,6 +153,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { } }; private final TaskOutlineProvider mOutlineProvider; private Task mTask; private TaskThumbnailView mSnapshotView; private TaskMenuView mMenuView; Loading @@ -158,6 +163,9 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { private float mCurveScale; private float mZoomScale; private float mFullscreenProgress; private final Rect mCurrentDrawnInsets = new Rect(); private float mCornerRadius; private float mWindowCornerRadius; private ObjectAnimator mIconAndDimAnimator; private float mIconScaleAnimStartProgress = 0; Loading Loading @@ -199,7 +207,10 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { fromContext(context).getStatsLogManager().logTaskLaunch(getRecentsView(), TaskUtils.getLaunchComponentKeyForTask(getTask().key)); }); setOutlineProvider(new TaskOutlineProvider(context, getResources())); mCornerRadius = TaskCornerRadius.get(context); mWindowCornerRadius = QuickStepContract.getWindowCornerRadius(context.getResources()); mOutlineProvider = new TaskOutlineProvider(getResources(), mCornerRadius); setOutlineProvider(mOutlineProvider); } @Override Loading Loading @@ -521,17 +532,26 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { private static final class TaskOutlineProvider extends ViewOutlineProvider { private final int mMarginTop; private final float mRadius; private final Rect mInsets = new Rect(); private float mRadius; TaskOutlineProvider(Context context, Resources res) { TaskOutlineProvider(Resources res, float radius) { mMarginTop = res.getDimensionPixelSize(R.dimen.task_thumbnail_top_margin); mRadius = Themes.getDialogCornerRadius(context); mRadius = radius; } public void setCurrentDrawnInsetsAndRadius(Rect insets, float radius) { mInsets.set(insets); mRadius = radius; } @Override public void getOutline(View view, Outline outline) { outline.setRoundRect(0, mMarginTop, view.getWidth(), view.getHeight(), mRadius); outline.setRoundRect(-mInsets.left, mMarginTop - mInsets.top, view.getWidth() + mInsets.right, view.getHeight() + mInsets.bottom, mRadius); } } Loading Loading @@ -629,11 +649,19 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { mIconView.setVisibility(progress < 1 ? VISIBLE : INVISIBLE); setClipChildren(!isFullscreen); setClipToPadding(!isFullscreen); getThumbnail().invalidate(); } public float getFullscreenProgress() { return mFullscreenProgress; TaskThumbnailView thumbnail = getThumbnail(); Rect insets = thumbnail.getInsetsToDrawInFullscreen(); mCurrentDrawnInsets.set((int) (insets.left * mFullscreenProgress), (int) (insets.top * mFullscreenProgress), (int) (insets.right * mFullscreenProgress), (int) (insets.bottom * mFullscreenProgress)); float cornerRadius = Utilities.mapRange(mFullscreenProgress, mCornerRadius, mWindowCornerRadius) / getRecentsView().getScaleX(); thumbnail.setCurrentDrawnInsetsAndRadius(mCurrentDrawnInsets, cornerRadius); mOutlineProvider.setCurrentDrawnInsetsAndRadius(mCurrentDrawnInsets, cornerRadius); invalidateOutline(); } public boolean isRunningTask() { Loading Loading
quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskThumbnailView.java +22 −22 Original line number Diff line number Diff line Loading @@ -51,7 +51,6 @@ import com.android.quickstep.TaskOverlayFactory.TaskOverlay; import com.android.quickstep.util.TaskCornerRadius; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.QuickStepContract; /** * A task in the Recents view. Loading @@ -60,6 +59,7 @@ public class TaskThumbnailView extends View { private final static ColorMatrix COLOR_MATRIX = new ColorMatrix(); private final static ColorMatrix SATURATION_COLOR_MATRIX = new ColorMatrix(); private final static Rect EMPTY_RECT = new Rect(); public static final Property<TaskThumbnailView, Float> DIM_ALPHA = new FloatProperty<TaskThumbnailView>("dimAlpha") { Loading @@ -83,12 +83,13 @@ public class TaskThumbnailView extends View { private final Paint mBackgroundPaint = new Paint(); private final Paint mClearPaint = new Paint(); private final Paint mDimmingPaintAfterClearing = new Paint(); private final float mWindowCornerRadius; private final Matrix mMatrix = new Matrix(); private float mClipBottom = -1; private Rect mScaledInsets = new Rect(); private Rect mCurrentDrawnInsets = new Rect(); private float mCurrentDrawnCornerRadius; private boolean mIsRotated; private Task mTask; Loading Loading @@ -117,7 +118,7 @@ public class TaskThumbnailView extends View { mDimmingPaintAfterClearing.setColor(Color.BLACK); mActivity = BaseActivity.fromContext(context); mIsDarkTextTheme = Themes.getAttrBoolean(mActivity, R.attr.isWorkspaceDarkText); mWindowCornerRadius = QuickStepContract.getWindowCornerRadius(context.getResources()); setCurrentDrawnInsetsAndRadius(EMPTY_RECT, mCornerRadius); } public void bind(Task task) { Loading Loading @@ -200,25 +201,24 @@ public class TaskThumbnailView extends View { @Override protected void onDraw(Canvas canvas) { TaskView taskView = (TaskView) getParent(); float fullscreenProgress = taskView.getFullscreenProgress(); if (mIsRotated) { // Don't show insets in the wrong orientation. fullscreenProgress = 0; } if (fullscreenProgress > 0) { // Draw the insets if we're being drawn fullscreen (we do this for quick switch). float cornerRadius = Utilities.mapRange(fullscreenProgress, mCornerRadius, mWindowCornerRadius); drawOnCanvas(canvas, -mScaledInsets.left * fullscreenProgress, -mScaledInsets.top * fullscreenProgress, getMeasuredWidth() + mScaledInsets.right * fullscreenProgress, getMeasuredHeight() + mScaledInsets.bottom * fullscreenProgress, cornerRadius / taskView.getRecentsView().getScaleX()); } else { drawOnCanvas(canvas, 0, 0, getMeasuredWidth(), getMeasuredHeight(), mCornerRadius); -mCurrentDrawnInsets.left, -mCurrentDrawnInsets.top, getMeasuredWidth() + mCurrentDrawnInsets.right, getMeasuredHeight() + mCurrentDrawnInsets.bottom, mCurrentDrawnCornerRadius); } public Rect getInsetsToDrawInFullscreen() { // Don't show insets in the wrong orientation. return mIsRotated ? EMPTY_RECT : mScaledInsets; } public void setCurrentDrawnInsetsAndRadius(Rect insets, float radius) { mCurrentDrawnInsets.set(insets); mCurrentDrawnCornerRadius = radius; invalidate(); } public float getCornerRadius() { Loading
quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java +39 −11 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.app.ActivityOptions; import android.content.Context; import android.content.res.Resources; import android.graphics.Outline; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; Loading @@ -47,6 +48,7 @@ import android.widget.Toast; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.Interpolators; import com.android.launcher3.logging.UserEventDispatcher; Loading @@ -54,7 +56,6 @@ import com.android.launcher3.userevent.nano.LauncherLogProto; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch; import com.android.launcher3.util.PendingAnimation; import com.android.launcher3.util.Themes; import com.android.launcher3.util.ViewPool.Reusable; import com.android.quickstep.RecentsModel; import com.android.quickstep.TaskIconCache; Loading @@ -62,11 +63,13 @@ import com.android.quickstep.TaskOverlayFactory; import com.android.quickstep.TaskSystemShortcut; import com.android.quickstep.TaskThumbnailCache; import com.android.quickstep.TaskUtils; import com.android.quickstep.util.TaskCornerRadius; import com.android.quickstep.views.RecentsView.PageCallbacks; import com.android.quickstep.views.RecentsView.ScrollState; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityOptionsCompat; import com.android.systemui.shared.system.QuickStepContract; import java.util.List; import java.util.function.Consumer; Loading Loading @@ -150,6 +153,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { } }; private final TaskOutlineProvider mOutlineProvider; private Task mTask; private TaskThumbnailView mSnapshotView; private TaskMenuView mMenuView; Loading @@ -158,6 +163,9 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { private float mCurveScale; private float mZoomScale; private float mFullscreenProgress; private final Rect mCurrentDrawnInsets = new Rect(); private float mCornerRadius; private float mWindowCornerRadius; private ObjectAnimator mIconAndDimAnimator; private float mIconScaleAnimStartProgress = 0; Loading Loading @@ -199,7 +207,10 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { fromContext(context).getStatsLogManager().logTaskLaunch(getRecentsView(), TaskUtils.getLaunchComponentKeyForTask(getTask().key)); }); setOutlineProvider(new TaskOutlineProvider(context, getResources())); mCornerRadius = TaskCornerRadius.get(context); mWindowCornerRadius = QuickStepContract.getWindowCornerRadius(context.getResources()); mOutlineProvider = new TaskOutlineProvider(getResources(), mCornerRadius); setOutlineProvider(mOutlineProvider); } @Override Loading Loading @@ -521,17 +532,26 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { private static final class TaskOutlineProvider extends ViewOutlineProvider { private final int mMarginTop; private final float mRadius; private final Rect mInsets = new Rect(); private float mRadius; TaskOutlineProvider(Context context, Resources res) { TaskOutlineProvider(Resources res, float radius) { mMarginTop = res.getDimensionPixelSize(R.dimen.task_thumbnail_top_margin); mRadius = Themes.getDialogCornerRadius(context); mRadius = radius; } public void setCurrentDrawnInsetsAndRadius(Rect insets, float radius) { mInsets.set(insets); mRadius = radius; } @Override public void getOutline(View view, Outline outline) { outline.setRoundRect(0, mMarginTop, view.getWidth(), view.getHeight(), mRadius); outline.setRoundRect(-mInsets.left, mMarginTop - mInsets.top, view.getWidth() + mInsets.right, view.getHeight() + mInsets.bottom, mRadius); } } Loading Loading @@ -629,11 +649,19 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { mIconView.setVisibility(progress < 1 ? VISIBLE : INVISIBLE); setClipChildren(!isFullscreen); setClipToPadding(!isFullscreen); getThumbnail().invalidate(); } public float getFullscreenProgress() { return mFullscreenProgress; TaskThumbnailView thumbnail = getThumbnail(); Rect insets = thumbnail.getInsetsToDrawInFullscreen(); mCurrentDrawnInsets.set((int) (insets.left * mFullscreenProgress), (int) (insets.top * mFullscreenProgress), (int) (insets.right * mFullscreenProgress), (int) (insets.bottom * mFullscreenProgress)); float cornerRadius = Utilities.mapRange(mFullscreenProgress, mCornerRadius, mWindowCornerRadius) / getRecentsView().getScaleX(); thumbnail.setCurrentDrawnInsetsAndRadius(mCurrentDrawnInsets, cornerRadius); mOutlineProvider.setCurrentDrawnInsetsAndRadius(mCurrentDrawnInsets, cornerRadius); invalidateOutline(); } public boolean isRunningTask() { Loading