mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-04 09:56:49 +00:00
Merge "Fix screen rounded corner flicker." into tm-dev am: 8073fc8daf
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/17948370 Change-Id: I15a3ccac2d38046ee4bef5d3a19a8cac6fe67f63 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1354,7 +1354,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
*/
|
||||
private RectFSpringAnim getClosingWindowAnimators(AnimatorSet animation,
|
||||
RemoteAnimationTargetCompat[] targets, View launcherView, PointF velocityPxPerS,
|
||||
RectF closingWindowStartRect) {
|
||||
RectF closingWindowStartRect, float startWindowCornerRadius) {
|
||||
FloatingIconView floatingIconView = null;
|
||||
FloatingWidgetView floatingWidget = null;
|
||||
RectF targetRect = new RectF();
|
||||
@@ -1403,7 +1403,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
final float windowAlphaThreshold = 1f - SHAPE_PROGRESS_DURATION;
|
||||
|
||||
RectFSpringAnim.OnUpdateListener runner = new SpringAnimRunner(targets, targetRect,
|
||||
windowTargetBounds) {
|
||||
windowTargetBounds, startWindowCornerRadius) {
|
||||
@Override
|
||||
public void onUpdate(RectF currentRectF, float progress) {
|
||||
finalFloatingIconView.update(1f, 255 /* fgAlpha */, currentRectF, progress,
|
||||
@@ -1421,7 +1421,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
final float floatingWidgetAlpha = isTransluscent ? 0 : 1;
|
||||
FloatingWidgetView finalFloatingWidget = floatingWidget;
|
||||
RectFSpringAnim.OnUpdateListener runner = new SpringAnimRunner(targets, targetRect,
|
||||
windowTargetBounds) {
|
||||
windowTargetBounds, startWindowCornerRadius) {
|
||||
@Override
|
||||
public void onUpdate(RectF currentRectF, float progress) {
|
||||
final float fallbackBackgroundAlpha =
|
||||
@@ -1438,7 +1438,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
} else {
|
||||
// If no floating icon or widget is present, animate the to the default window
|
||||
// target rect.
|
||||
anim.addOnUpdateListener(new SpringAnimRunner(targets, targetRect, windowTargetBounds));
|
||||
anim.addOnUpdateListener(new SpringAnimRunner(
|
||||
targets, targetRect, windowTargetBounds, startWindowCornerRadius));
|
||||
}
|
||||
|
||||
// Use a fixed velocity to start the animation.
|
||||
@@ -1580,7 +1581,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
RemoteAnimationTargetCompat[] appTargets,
|
||||
RemoteAnimationTargetCompat[] wallpaperTargets,
|
||||
boolean fromUnlock,
|
||||
RectF startRect) {
|
||||
RectF startRect,
|
||||
float startWindowCornerRadius) {
|
||||
AnimatorSet anim = null;
|
||||
RectFSpringAnim rectFSpringAnim = null;
|
||||
|
||||
@@ -1612,7 +1614,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
.getDimension(R.dimen.unlock_staggered_velocity_dp_per_s);
|
||||
PointF velocity = new PointF(0, -velocityPxPerS);
|
||||
rectFSpringAnim = getClosingWindowAnimators(
|
||||
anim, appTargets, launcherView, velocity, startRect);
|
||||
anim, appTargets, launcherView, velocity, startRect,
|
||||
startWindowCornerRadius);
|
||||
if (!mLauncher.isInState(LauncherState.ALL_APPS)) {
|
||||
anim.play(new StaggeredWorkspaceAnim(mLauncher, velocity.y,
|
||||
true /* animateOverviewScrim */, launcherView).getAnimators());
|
||||
@@ -1711,7 +1714,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
|
||||
Pair<RectFSpringAnim, AnimatorSet> pair = createWallpaperOpenAnimations(
|
||||
appTargets, wallpaperTargets, mFromUnlock,
|
||||
new RectF(0, 0, mDeviceProfile.widthPx, mDeviceProfile.heightPx));
|
||||
new RectF(0, 0, mDeviceProfile.widthPx, mDeviceProfile.heightPx),
|
||||
QuickStepContract.getWindowCornerRadius(mLauncher));
|
||||
|
||||
mLauncher.clearForceInvisibleFlag(INVISIBLE_ALL);
|
||||
result.setAnimation(pair.second, mLauncher);
|
||||
@@ -1874,9 +1878,9 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
private final Rect mTmpRect = new Rect();
|
||||
|
||||
SpringAnimRunner(RemoteAnimationTargetCompat[] appTargets, RectF targetRect,
|
||||
Rect windowTargetBounds) {
|
||||
Rect windowTargetBounds, float startWindowCornerRadius) {
|
||||
mAppTargets = appTargets;
|
||||
mStartRadius = QuickStepContract.getWindowCornerRadius(mLauncher);
|
||||
mStartRadius = startWindowCornerRadius;
|
||||
mEndRadius = Math.max(1, targetRect.width()) / 2f;
|
||||
mSurfaceApplier = new SurfaceTransactionApplier(mDragLayer);
|
||||
mWindowTargetBounds.set(windowTargetBounds);
|
||||
|
||||
@@ -29,7 +29,6 @@ import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.os.Handler;
|
||||
import android.util.MathUtils;
|
||||
import android.util.Pair;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.SurfaceControl;
|
||||
@@ -195,10 +194,10 @@ public class LauncherBackAnimationController {
|
||||
float followWidth = screenWidth - dX;
|
||||
// The 'progress width' is the width of the window if it strictly linearly interpolates
|
||||
// to minimum scale base on progress.
|
||||
float progressWidth = MathUtils.lerp(1, MIN_WINDOW_SCALE, progress) * screenWidth;
|
||||
float progressWidth = Utilities.mapRange(progress, 1, MIN_WINDOW_SCALE) * screenWidth;
|
||||
// The final width is derived from interpolating between the follow with and progress width
|
||||
// using gesture progress.
|
||||
float width = MathUtils.lerp(followWidth, progressWidth, progress);
|
||||
float width = Utilities.mapRange(progress, followWidth, progressWidth);
|
||||
float height = screenHeight / screenWidth * width;
|
||||
float deltaYRatio = (event.getTouchY() - mInitialTouchPos.y) / screenHeight;
|
||||
// Base the window movement in the Y axis on the touch movement in the Y axis.
|
||||
@@ -221,13 +220,15 @@ public class LauncherBackAnimationController {
|
||||
return;
|
||||
}
|
||||
mCurrentRect.set(
|
||||
MathUtils.lerp(mCancelRect.left, mStartRect.left, progress),
|
||||
MathUtils.lerp(mCancelRect.top, mStartRect.top, progress),
|
||||
MathUtils.lerp(mCancelRect.right, mStartRect.right, progress),
|
||||
MathUtils.lerp(mCancelRect.bottom, mStartRect.bottom, progress));
|
||||
Utilities.mapRange(progress, mCancelRect.left, mStartRect.left),
|
||||
Utilities.mapRange(progress, mCancelRect.top, mStartRect.top),
|
||||
Utilities.mapRange(progress, mCancelRect.right, mStartRect.right),
|
||||
Utilities.mapRange(progress, mCancelRect.bottom, mStartRect.bottom));
|
||||
|
||||
float endCornerRadius = Utilities.mapRange(
|
||||
mBackProgress, mWindowScaleStartCornerRadius, mWindowScaleEndCornerRadius);
|
||||
float cornerRadius = Utilities.mapRange(
|
||||
progress, mWindowScaleEndCornerRadius, mWindowScaleStartCornerRadius);
|
||||
progress, endCornerRadius, mWindowScaleStartCornerRadius);
|
||||
applyTransform(mCurrentRect, cornerRadius);
|
||||
}
|
||||
|
||||
@@ -267,12 +268,15 @@ public class LauncherBackAnimationController {
|
||||
mLauncher.getStateManager().moveToRestState();
|
||||
}
|
||||
|
||||
float cornerRadius = Utilities.mapRange(
|
||||
mBackProgress, mWindowScaleStartCornerRadius, mWindowScaleEndCornerRadius);
|
||||
Pair<RectFSpringAnim, AnimatorSet> pair =
|
||||
mQuickstepTransitionManager.createWallpaperOpenAnimations(
|
||||
new RemoteAnimationTargetCompat[]{mBackTarget},
|
||||
new RemoteAnimationTargetCompat[]{},
|
||||
false /* fromUnlock */,
|
||||
mCurrentRect);
|
||||
mCurrentRect,
|
||||
cornerRadius);
|
||||
startTransitionAnimations(pair.first, pair.second);
|
||||
mLauncher.clearForceInvisibleFlag(INVISIBLE_ALL);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user