Loading quickstep/src/com/android/quickstep/views/TaskMenuView.java +16 −9 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ public class TaskMenuView extends AbstractFloatingView { private static final int REVEAL_OPEN_DURATION = 150; private static final int REVEAL_CLOSE_DURATION = 100; private final float mThumbnailTopMargin; private BaseDraggingActivity mActivity; private TextView mTaskName; private IconView mTaskIcon; Loading @@ -103,6 +104,7 @@ public class TaskMenuView extends AbstractFloatingView { super(context, attrs, defStyleAttr); mActivity = BaseDraggingActivity.fromContext(context); mThumbnailTopMargin = getResources().getDimension(R.dimen.task_thumbnail_top_margin); } @Override Loading Loading @@ -154,11 +156,16 @@ public class TaskMenuView extends AbstractFloatingView { return (type & TYPE_TASK_MENU) != 0; } public static boolean showForTask(TaskView taskView) { public void setPosition(float x, float y) { setX(x); setY(y + mThumbnailTopMargin); } public static TaskMenuView showForTask(TaskView taskView) { BaseDraggingActivity activity = BaseDraggingActivity.fromContext(taskView.getContext()); final TaskMenuView taskMenuView = (TaskMenuView) activity.getLayoutInflater().inflate( R.layout.task_menu, activity.getDragLayer(), false); return taskMenuView.populateAndShowForTask(taskView); return taskMenuView.populateAndShowForTask(taskView) ? taskMenuView : null; } private boolean populateAndShowForTask(TaskView taskView) { Loading Loading @@ -188,7 +195,7 @@ public class TaskMenuView extends AbstractFloatingView { // Move the icon and text up half an icon size to lay over the TaskView LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mTaskIcon.getLayoutParams(); params.topMargin = (int) -getResources().getDimension(R.dimen.task_thumbnail_top_margin); params.topMargin = (int) -mThumbnailTopMargin; mTaskIcon.setLayoutParams(params); for (TaskSystemShortcut menuOption : MENU_OPTIONS) { Loading @@ -213,12 +220,12 @@ public class TaskMenuView extends AbstractFloatingView { mActivity.getDragLayer().getDescendantRectRelativeToSelf(taskView, sTempRect); Rect insets = mActivity.getDragLayer().getInsets(); BaseDragLayer.LayoutParams params = (BaseDragLayer.LayoutParams) getLayoutParams(); params.width = sTempRect.width(); params.gravity = Gravity.LEFT; params.width = taskView.getMeasuredWidth(); params.gravity = Gravity.START; setLayoutParams(params); setX(Math.round(sTempRect.left - insets.left)); setY(Math.round(sTempRect.top - insets.top + getResources().getDimension(R.dimen.task_thumbnail_top_margin))); setScaleX(taskView.getScaleX()); setScaleY(taskView.getScaleY()); setPosition(sTempRect.left - insets.left, sTempRect.top - insets.top); } private void animateOpen() { Loading @@ -232,7 +239,7 @@ public class TaskMenuView extends AbstractFloatingView { private void animateOpenOrClosed(boolean closing) { if (mOpenCloseAnimator != null && mOpenCloseAnimator.isRunning()) { return; mOpenCloseAnimator.end(); } mOpenCloseAnimator = LauncherAnimUtils.createAnimatorSet(); Loading quickstep/src/com/android/quickstep/views/TaskView.java +33 −2 Original line number Diff line number Diff line Loading @@ -110,8 +110,24 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback } }; private final OnAttachStateChangeListener mTaskMenuStateListener = new OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View view) { } @Override public void onViewDetachedFromWindow(View view) { if (mMenuView != null) { mMenuView.removeOnAttachStateChangeListener(this); mMenuView = null; } } }; private Task mTask; private TaskThumbnailView mSnapshotView; private TaskMenuView mMenuView; private IconView mIconView; private float mCurveScale; private float mZoomScale; Loading Loading @@ -200,13 +216,22 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback public void onTaskDataLoaded(Task task, ThumbnailData thumbnailData) { mSnapshotView.setThumbnail(task, thumbnailData); mIconView.setDrawable(task.icon); mIconView.setOnClickListener(icon -> TaskMenuView.showForTask(this)); mIconView.setOnClickListener(icon -> showTaskMenu()); mIconView.setOnLongClickListener(icon -> { requestDisallowInterceptTouchEvent(true); return TaskMenuView.showForTask(this); return showTaskMenu(); }); } private boolean showTaskMenu() { getRecentsView().snapToPage(getRecentsView().indexOfChild(this)); mMenuView = TaskMenuView.showForTask(this); if (mMenuView != null) { mMenuView.addOnAttachStateChangeListener(mTaskMenuStateListener); } return mMenuView != null; } @Override public void onTaskDataUnloaded() { mSnapshotView.setThumbnail(null, null); Loading Loading @@ -266,6 +291,12 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback mSnapshotView.setDimAlpha(curveInterpolation * MAX_PAGE_SCRIM_ALPHA); setCurveScale(getCurveScaleForCurveInterpolation(curveInterpolation)); if (mMenuView != null) { mMenuView.setPosition(getX() - getRecentsView().getScrollX(), getY()); mMenuView.setScaleX(getScaleX()); mMenuView.setScaleY(getScaleY()); } } @Override Loading Loading
quickstep/src/com/android/quickstep/views/TaskMenuView.java +16 −9 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ public class TaskMenuView extends AbstractFloatingView { private static final int REVEAL_OPEN_DURATION = 150; private static final int REVEAL_CLOSE_DURATION = 100; private final float mThumbnailTopMargin; private BaseDraggingActivity mActivity; private TextView mTaskName; private IconView mTaskIcon; Loading @@ -103,6 +104,7 @@ public class TaskMenuView extends AbstractFloatingView { super(context, attrs, defStyleAttr); mActivity = BaseDraggingActivity.fromContext(context); mThumbnailTopMargin = getResources().getDimension(R.dimen.task_thumbnail_top_margin); } @Override Loading Loading @@ -154,11 +156,16 @@ public class TaskMenuView extends AbstractFloatingView { return (type & TYPE_TASK_MENU) != 0; } public static boolean showForTask(TaskView taskView) { public void setPosition(float x, float y) { setX(x); setY(y + mThumbnailTopMargin); } public static TaskMenuView showForTask(TaskView taskView) { BaseDraggingActivity activity = BaseDraggingActivity.fromContext(taskView.getContext()); final TaskMenuView taskMenuView = (TaskMenuView) activity.getLayoutInflater().inflate( R.layout.task_menu, activity.getDragLayer(), false); return taskMenuView.populateAndShowForTask(taskView); return taskMenuView.populateAndShowForTask(taskView) ? taskMenuView : null; } private boolean populateAndShowForTask(TaskView taskView) { Loading Loading @@ -188,7 +195,7 @@ public class TaskMenuView extends AbstractFloatingView { // Move the icon and text up half an icon size to lay over the TaskView LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mTaskIcon.getLayoutParams(); params.topMargin = (int) -getResources().getDimension(R.dimen.task_thumbnail_top_margin); params.topMargin = (int) -mThumbnailTopMargin; mTaskIcon.setLayoutParams(params); for (TaskSystemShortcut menuOption : MENU_OPTIONS) { Loading @@ -213,12 +220,12 @@ public class TaskMenuView extends AbstractFloatingView { mActivity.getDragLayer().getDescendantRectRelativeToSelf(taskView, sTempRect); Rect insets = mActivity.getDragLayer().getInsets(); BaseDragLayer.LayoutParams params = (BaseDragLayer.LayoutParams) getLayoutParams(); params.width = sTempRect.width(); params.gravity = Gravity.LEFT; params.width = taskView.getMeasuredWidth(); params.gravity = Gravity.START; setLayoutParams(params); setX(Math.round(sTempRect.left - insets.left)); setY(Math.round(sTempRect.top - insets.top + getResources().getDimension(R.dimen.task_thumbnail_top_margin))); setScaleX(taskView.getScaleX()); setScaleY(taskView.getScaleY()); setPosition(sTempRect.left - insets.left, sTempRect.top - insets.top); } private void animateOpen() { Loading @@ -232,7 +239,7 @@ public class TaskMenuView extends AbstractFloatingView { private void animateOpenOrClosed(boolean closing) { if (mOpenCloseAnimator != null && mOpenCloseAnimator.isRunning()) { return; mOpenCloseAnimator.end(); } mOpenCloseAnimator = LauncherAnimUtils.createAnimatorSet(); Loading
quickstep/src/com/android/quickstep/views/TaskView.java +33 −2 Original line number Diff line number Diff line Loading @@ -110,8 +110,24 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback } }; private final OnAttachStateChangeListener mTaskMenuStateListener = new OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View view) { } @Override public void onViewDetachedFromWindow(View view) { if (mMenuView != null) { mMenuView.removeOnAttachStateChangeListener(this); mMenuView = null; } } }; private Task mTask; private TaskThumbnailView mSnapshotView; private TaskMenuView mMenuView; private IconView mIconView; private float mCurveScale; private float mZoomScale; Loading Loading @@ -200,13 +216,22 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback public void onTaskDataLoaded(Task task, ThumbnailData thumbnailData) { mSnapshotView.setThumbnail(task, thumbnailData); mIconView.setDrawable(task.icon); mIconView.setOnClickListener(icon -> TaskMenuView.showForTask(this)); mIconView.setOnClickListener(icon -> showTaskMenu()); mIconView.setOnLongClickListener(icon -> { requestDisallowInterceptTouchEvent(true); return TaskMenuView.showForTask(this); return showTaskMenu(); }); } private boolean showTaskMenu() { getRecentsView().snapToPage(getRecentsView().indexOfChild(this)); mMenuView = TaskMenuView.showForTask(this); if (mMenuView != null) { mMenuView.addOnAttachStateChangeListener(mTaskMenuStateListener); } return mMenuView != null; } @Override public void onTaskDataUnloaded() { mSnapshotView.setThumbnail(null, null); Loading Loading @@ -266,6 +291,12 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback mSnapshotView.setDimAlpha(curveInterpolation * MAX_PAGE_SCRIM_ALPHA); setCurveScale(getCurveScaleForCurveInterpolation(curveInterpolation)); if (mMenuView != null) { mMenuView.setPosition(getX() - getRecentsView().getScrollX(), getY()); mMenuView.setScaleX(getScaleX()); mMenuView.setScaleY(getScaleY()); } } @Override Loading