Merge "Fix taskbar drag view scale when returning to original icon" into tm-qpr-dev

This commit is contained in:
Tony Wickham
2023-02-22 16:24:48 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 5 deletions

View File

@@ -340,7 +340,7 @@ public class TaskbarDragController extends DragController<BaseTaskbarContext> im
if (DEBUG_DRAG_SHADOW_SURFACE) {
canvas.drawColor(0xffff0000);
}
float scale = mDragObject.dragView.getScaleX();
float scale = mDragObject.dragView.getEndScale();
canvas.scale(scale, scale);
mDragObject.dragView.draw(canvas);
canvas.restore();
@@ -601,7 +601,15 @@ public class TaskbarDragController extends DragController<BaseTaskbarContext> im
View target = findTaskbarTargetForIconView(originalView);
int[] toPosition = target.getLocationOnScreen();
float toScale = (float) target.getWidth() / mDragIconSize;
float iconSize = target.getWidth();
if (target instanceof BubbleTextView) {
Rect bounds = new Rect();
((BubbleTextView) target).getSourceVisualDragBounds(bounds);
toPosition[0] += bounds.left;
toPosition[1] += bounds.top;
iconSize = bounds.width();
}
float toScale = iconSize / mDragIconSize;
float toAlpha = (target == originalView) ? 1f : 0f;
MultiValueUpdateListener listener = new MultiValueUpdateListener() {
final FloatProp mDx = new FloatProp(fromX, toPosition[0], 0,

View File

@@ -83,6 +83,7 @@ public abstract class DragView<T extends Context & ActivityContext> extends Fram
protected final int mRegistrationX;
protected final int mRegistrationY;
private final float mInitialScale;
private final float mEndScale;
protected final float mScaleOnDrop;
protected final int[] mTempLoc = new int[2];
@@ -158,7 +159,7 @@ public abstract class DragView<T extends Context & ActivityContext> extends Fram
setClipToPadding(false);
}
final float scale = (width + finalScaleDps) / width;
mEndScale = (width + finalScaleDps) / width;
// Set the initial scale to avoid any jumps
setScaleX(initialScale);
@@ -169,8 +170,8 @@ public abstract class DragView<T extends Context & ActivityContext> extends Fram
mAnim.setDuration(VIEW_ZOOM_DURATION);
mAnim.addUpdateListener(animation -> {
final float value = (Float) animation.getAnimatedValue();
setScaleX(initialScale + (value * (scale - initialScale)));
setScaleY(initialScale + (value * (scale - initialScale)));
setScaleX(Utilities.mapRange(value, initialScale, mEndScale));
setScaleY(Utilities.mapRange(value, initialScale, mEndScale));
if (!isAttachedToWindow()) {
animation.cancel();
}
@@ -508,6 +509,10 @@ public abstract class DragView<T extends Context & ActivityContext> extends Fram
return mInitialScale;
}
public float getEndScale() {
return mEndScale;
}
@Override
public boolean hasOverlappingRendering() {
return false;