Merge "Scale icons from search to make app icons big like AA -> workspace" into tm-qpr-dev

This commit is contained in:
Brandon Dayauon
2022-10-11 22:40:13 +00:00
committed by Android (Google) Code Review
4 changed files with 36 additions and 4 deletions
@@ -942,6 +942,11 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
return mIconSize;
}
public boolean isDisplaySearchResult() {
return mDisplay == DISPLAY_SEARCH_RESULT ||
mDisplay == DISPLAY_SEARCH_RESULT_SMALL;
}
private void updateTranslation() {
super.setTranslationX(mTranslationForReorderBounce.x + mTranslationForReorderPreview.x
+ mTranslationForMoveFromCenterAnimation.x
+12 -3
View File
@@ -106,6 +106,7 @@ import com.android.launcher3.util.PackageUserKey;
import com.android.launcher3.util.RunnableList;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.util.WallpaperOffsetInterpolator;
import com.android.launcher3.views.ActivityContext;
import com.android.launcher3.widget.LauncherAppWidgetHost;
import com.android.launcher3.widget.LauncherAppWidgetHost.ProviderChangedListener;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
@@ -152,6 +153,8 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T>
public static final int DEFAULT_PAGE = 0;
private final int mAllAppsIconSize;
private LayoutTransition mLayoutTransition;
@Thunk final WallpaperManager mWallpaperManager;
@@ -286,7 +289,7 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T>
mLauncher = Launcher.getLauncher(context);
mStateTransitionAnimation = new WorkspaceStateTransitionAnimation(mLauncher, this);
mWallpaperManager = WallpaperManager.getInstance(context);
mAllAppsIconSize = mLauncher.getDeviceProfile().allAppsIconSizePx;
mWallpaperOffset = new WallpaperOffsetInterpolator(this);
setHapticFeedbackEnabled(false);
@@ -1671,8 +1674,14 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T>
mDragSourceInternal = (ShortcutAndWidgetContainer) child.getParent();
}
if (child instanceof BubbleTextView && !dragOptions.isAccessibleDrag) {
dragOptions.preDragCondition = ((BubbleTextView) child).startLongPressAction();
if (child instanceof BubbleTextView) {
BubbleTextView btv = (BubbleTextView) child;
if (!dragOptions.isAccessibleDrag) {
dragOptions.preDragCondition = btv.startLongPressAction();
}
if (btv.isDisplaySearchResult()) {
dragOptions.preDragEndScale = (float) mAllAppsIconSize / btv.getIconSize();
}
}
final DragView dv;
@@ -31,6 +31,7 @@ import androidx.annotation.Nullable;
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.logging.InstanceId;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
@@ -90,6 +91,8 @@ public abstract class DragController<T extends ActivityContext>
protected boolean mIsInPreDrag;
private final int DRAG_VIEW_SCALE_DURATION_MS = 500;
/**
* Interface to receive notifications when a drag starts or stops
*/
@@ -214,6 +217,15 @@ public abstract class DragController<T extends ActivityContext>
mOptions.preDragCondition.onPreDragEnd(mDragObject, true /* dragStarted*/);
}
mIsInPreDrag = false;
if (mOptions.preDragEndScale != 0) {
mDragObject.dragView
.animate()
.scaleX(mOptions.preDragEndScale)
.scaleY(mOptions.preDragEndScale)
.setInterpolator(Interpolators.EMPHASIZED)
.setDuration(DRAG_VIEW_SCALE_DURATION_MS)
.start();
}
mDragObject.dragView.onDragStart();
for (DragListener listener : new ArrayList<>(mListeners)) {
listener.onDragStart(mDragObject, mOptions);
@@ -295,9 +307,9 @@ public abstract class DragController<T extends ActivityContext>
} else if (mIsInPreDrag) {
animateDragViewToOriginalPosition(null, null, -1);
}
mDragObject.dragView.clearAnimation();
mDragObject.dragView = null;
}
// Only end the drag if we are not deferred
if (!isDeferred) {
callOnDragEnd();
@@ -40,6 +40,12 @@ public class DragOptions {
/** Determines when a pre-drag should transition to a drag. By default, this is immediate. */
public PreDragCondition preDragCondition = null;
/**
* A drag scale that scales the original drag view size when the preDragCondition is met (or
* is ignored if preDragEndScale is 0).
*/
public float preDragEndScale;
/** Scale of the icons over the workspace icon size. */
public float intrinsicIconScaleFactor = 1f;