mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 16:26:47 +00:00
Merge "Ensure starting split animation scale is always 1"
This commit is contained in:
@@ -192,13 +192,12 @@ public class FloatingTaskView extends FrameLayout {
|
||||
}
|
||||
|
||||
public void addAnimation(PendingAnimation animation, RectF startingBounds, Rect endBounds,
|
||||
View viewToCover, boolean fadeWithThumbnail) {
|
||||
boolean fadeWithThumbnail) {
|
||||
final BaseDragLayer dragLayer = mActivity.getDragLayer();
|
||||
int[] dragLayerBounds = new int[2];
|
||||
dragLayer.getLocationOnScreen(dragLayerBounds);
|
||||
SplitOverlayProperties prop = new SplitOverlayProperties(endBounds,
|
||||
startingBounds, viewToCover, dragLayerBounds[0],
|
||||
dragLayerBounds[1]);
|
||||
startingBounds, dragLayerBounds[0], dragLayerBounds[1]);
|
||||
|
||||
ValueAnimator transitionAnimator = ValueAnimator.ofFloat(0, 1);
|
||||
animation.add(transitionAnimator);
|
||||
@@ -221,10 +220,10 @@ public class FloatingTaskView extends FrameLayout {
|
||||
initialWindowRadius, 0, animDuration, LINEAR);
|
||||
final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration, LINEAR);
|
||||
final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration, LINEAR);
|
||||
final FloatProp mTaskViewScaleX = new FloatProp(prop.initialTaskViewScaleX,
|
||||
prop.finalTaskViewScaleX, 0, animDuration, LINEAR);
|
||||
final FloatProp mTaskViewScaleY = new FloatProp(prop.initialTaskViewScaleY,
|
||||
prop.finalTaskViewScaleY, 0, animDuration, LINEAR);
|
||||
final FloatProp mTaskViewScaleX = new FloatProp(1f, prop.finalTaskViewScaleX, 0,
|
||||
animDuration, LINEAR);
|
||||
final FloatProp mTaskViewScaleY = new FloatProp(1f, prop.finalTaskViewScaleY, 0,
|
||||
animDuration, LINEAR);
|
||||
@Override
|
||||
public void onUpdate(float percent, boolean initOnly) {
|
||||
// Calculate the icon position.
|
||||
@@ -241,24 +240,20 @@ public class FloatingTaskView extends FrameLayout {
|
||||
|
||||
private static class SplitOverlayProperties {
|
||||
|
||||
private final float initialTaskViewScaleX;
|
||||
private final float initialTaskViewScaleY;
|
||||
private final float finalTaskViewScaleX;
|
||||
private final float finalTaskViewScaleY;
|
||||
private final float dX;
|
||||
private final float dY;
|
||||
|
||||
SplitOverlayProperties(Rect endBounds, RectF startTaskViewBounds, View view,
|
||||
SplitOverlayProperties(Rect endBounds, RectF startTaskViewBounds,
|
||||
int dragLayerLeft, int dragLayerTop) {
|
||||
float maxScaleX = endBounds.width() / startTaskViewBounds.width();
|
||||
float maxScaleY = endBounds.height() / startTaskViewBounds.height();
|
||||
|
||||
initialTaskViewScaleX = view.getScaleX();
|
||||
initialTaskViewScaleY = view.getScaleY();
|
||||
finalTaskViewScaleX = maxScaleX;
|
||||
finalTaskViewScaleY = maxScaleY;
|
||||
|
||||
// Animate the app icon to the center of the window bounds in screen coordinates.
|
||||
// Animate to the center of the window bounds in screen coordinates.
|
||||
float centerX = endBounds.centerX() - dragLayerLeft;
|
||||
float centerY = endBounds.centerY() - dragLayerTop;
|
||||
|
||||
|
||||
@@ -2736,7 +2736,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
));
|
||||
mFirstFloatingTaskView.setAlpha(1);
|
||||
mFirstFloatingTaskView.addAnimation(anim, startingTaskRect,
|
||||
mTempRect, mSplitHiddenTaskView, true /*fadeWithThumbnail*/);
|
||||
mTempRect, true /*fadeWithThumbnail*/);
|
||||
} else {
|
||||
mSplitSelectSource.view.setVisibility(INVISIBLE);
|
||||
mFirstFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
|
||||
@@ -2744,7 +2744,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
mSplitSelectSource.drawable, startingTaskRect, null /*additionalOffsetter*/);
|
||||
mFirstFloatingTaskView.setAlpha(1);
|
||||
mFirstFloatingTaskView.addAnimation(anim, startingTaskRect,
|
||||
mTempRect, mSplitSelectSource.view, true /*fadeWithThumbnail*/);
|
||||
mTempRect, true /*fadeWithThumbnail*/);
|
||||
}
|
||||
anim.addEndListener(success -> {
|
||||
if (success) {
|
||||
@@ -4028,7 +4028,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
|
||||
mFirstFloatingTaskView.getBoundsOnScreen(firstTaskStartingBounds);
|
||||
mFirstFloatingTaskView.addAnimation(pendingAnimation,
|
||||
new RectF(firstTaskStartingBounds), firstTaskEndingBounds, mFirstFloatingTaskView,
|
||||
new RectF(firstTaskStartingBounds), firstTaskEndingBounds,
|
||||
false /*fadeWithThumbnail*/);
|
||||
|
||||
mSecondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
|
||||
@@ -4040,8 +4040,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
));
|
||||
mSecondFloatingTaskView.setAlpha(1);
|
||||
mSecondFloatingTaskView.addAnimation(pendingAnimation, secondTaskStartingBounds,
|
||||
secondTaskEndingBounds, taskView.getThumbnail(),
|
||||
true /*fadeWithThumbnail*/);
|
||||
secondTaskEndingBounds, true /*fadeWithThumbnail*/);
|
||||
pendingAnimation.addEndListener(aBoolean ->
|
||||
mSplitSelectStateController.setSecondTaskId(taskView.getTask().key.id,
|
||||
aBoolean1 -> RecentsView.this.resetFromSplitSelectionState()));
|
||||
|
||||
Reference in New Issue
Block a user