Merge "Tapping task icon in overview with scroll to it and open" into ub-launcher3-master
This commit is contained in:
committed by
Android (Google) Code Review
commit
2203caa216
@@ -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;
|
||||
@@ -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
|
||||
@@ -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) {
|
||||
@@ -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) {
|
||||
@@ -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() {
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user