diff options
author | Jonathan Miranda <jonmiranda@google.com> | 2019-05-10 17:30:46 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-05-10 17:30:46 +0000 |
commit | 57730ed095cacdd91c847775e857fbe61b564d6d (patch) | |
tree | 306341220e32e809063231a95d0805f021f80076 /src | |
parent | 9b39df068e66f0cbc4e78528c9a6e84d6cb97cc5 (diff) | |
parent | 2da1da30760c7abb576a5fbefc6ec4d12040a2b2 (diff) | |
download | android_packages_apps_Trebuchet-57730ed095cacdd91c847775e857fbe61b564d6d.tar.gz android_packages_apps_Trebuchet-57730ed095cacdd91c847775e857fbe61b564d6d.tar.bz2 android_packages_apps_Trebuchet-57730ed095cacdd91c847775e857fbe61b564d6d.zip |
Merge "Initial app open/close polish using tuned values." into ub-launcher3-qt-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/anim/FlingSpringAnim.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/views/FloatingIconView.java | 68 |
2 files changed, 35 insertions, 37 deletions
diff --git a/src/com/android/launcher3/anim/FlingSpringAnim.java b/src/com/android/launcher3/anim/FlingSpringAnim.java index bb0f855d8..3d981c136 100644 --- a/src/com/android/launcher3/anim/FlingSpringAnim.java +++ b/src/com/android/launcher3/anim/FlingSpringAnim.java @@ -30,8 +30,8 @@ public class FlingSpringAnim { private static final float FLING_FRICTION = 1.5f; // Have the spring pull towards the target if we've slowed down too much before reaching it. private static final float FLING_END_THRESHOLD_PX = 50f; - private static final float SPRING_STIFFNESS = 350f; - private static final float SPRING_DAMPING = SpringForce.DAMPING_RATIO_LOW_BOUNCY; + private static final float SPRING_STIFFNESS = 200; + private static final float SPRING_DAMPING = 0.85f; private final FlingAnimation mFlingAnim; private SpringAnimation mSpringAnim; diff --git a/src/com/android/launcher3/views/FloatingIconView.java b/src/com/android/launcher3/views/FloatingIconView.java index 787c93ce9..73f11b22d 100644 --- a/src/com/android/launcher3/views/FloatingIconView.java +++ b/src/com/android/launcher3/views/FloatingIconView.java @@ -98,10 +98,9 @@ public class FloatingIconView extends View implements private RectF mPositionOut; private Runnable mOnTargetChangeRunnable; + private final Rect mOutline = new Rect(); private final Rect mFinalDrawableBounds = new Rect(); private final Rect mBgDrawableBounds = new Rect(); - private float mBgDrawableStartScale = 1f; - private float mBgDrawableEndScale = 1f; private AnimatorSet mFadeAnimatorSet; private ListenerView mListenerView; @@ -143,11 +142,10 @@ public class FloatingIconView extends View implements setTranslationX(dX); setTranslationY(dY); - float scaleX = rect.width() / (float) lp.width; - float scaleY = rect.height() / (float) lp.height; - float scale = mIsAdaptiveIcon && !isOpening ? Math.max(scaleX, scaleY) - : Math.min(scaleX, scaleY); - scale = Math.max(1f, scale); + float minSize = Math.min(lp.width, lp.height); + float scaleX = rect.width() / minSize; + float scaleY = rect.height() / minSize; + float scale = Math.max(1f, Math.min(scaleX, scaleY)); setPivotX(0); setPivotY(0); @@ -160,27 +158,27 @@ public class FloatingIconView extends View implements Math.max(shapeProgressStart, progress), shapeProgressStart, 1f, 0, toMax, LINEAR), 0, 1); - mTaskCornerRadius = cornerRadius; - if (mIsAdaptiveIcon && shapeRevealProgress >= 0) { - if (mRevealAnimator == null) { - mRevealAnimator = (ValueAnimator) IconShape.getShape().createRevealAnimator(this, - mStartRevealRect, mEndRevealRect, mTaskCornerRadius / scale, !isOpening); - mRevealAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mRevealAnimator = null; - } - }); - mRevealAnimator.start(); - // We pause here so we can set the current fraction ourselves. - mRevealAnimator.pause(); + mOutline.bottom = (int) (rect.height() / scale); + mTaskCornerRadius = cornerRadius / scale; + if (mIsAdaptiveIcon) { + if (!isOpening && shapeRevealProgress >= 0) { + if (mRevealAnimator == null) { + mRevealAnimator = (ValueAnimator) IconShape.getShape().createRevealAnimator( + this, mStartRevealRect, mOutline, mTaskCornerRadius, !isOpening); + mRevealAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mRevealAnimator = null; + } + }); + mRevealAnimator.start(); + // We pause here so we can set the current fraction ourselves. + mRevealAnimator.pause(); + } + mRevealAnimator.setCurrentFraction(shapeRevealProgress); } - mRevealAnimator.setCurrentFraction(shapeRevealProgress); - - float bgScale = (mBgDrawableEndScale * shapeRevealProgress) + mBgDrawableStartScale - * (1 - shapeRevealProgress); - setBackgroundDrawableBounds(bgScale); + setBackgroundDrawableBounds(mOutline.height() / minSize); } invalidate(); invalidateOutline(); @@ -363,24 +361,22 @@ public class FloatingIconView extends View implements layout(lp.leftMargin, lp.topMargin, lp.leftMargin + lp.width, lp.topMargin + lp.height); - Rect rectOutline = new Rect(); float scale = Math.max((float) lp.height / originalHeight, (float) lp.width / originalWidth); + float bgDrawableStartScale; if (isOpening) { - mBgDrawableStartScale = 1f; - mBgDrawableEndScale = scale; - rectOutline.set(0, 0, originalWidth, originalHeight); + bgDrawableStartScale = 1f; + mOutline.set(0, 0, originalWidth, originalHeight); } else { - mBgDrawableStartScale = scale; - mBgDrawableEndScale = 1f; - rectOutline.set(0, 0, lp.width, lp.height); + bgDrawableStartScale = scale; + mOutline.set(0, 0, lp.width, lp.height); } + setBackgroundDrawableBounds(bgDrawableStartScale); mEndRevealRect.set(0, 0, lp.width, lp.height); - setBackgroundDrawableBounds(mBgDrawableStartScale); setOutlineProvider(new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { - outline.setRoundRect(rectOutline, mTaskCornerRadius); + outline.setRoundRect(mOutline, mTaskCornerRadius); } }); setClipToOutline(true); @@ -630,5 +626,7 @@ public class FloatingIconView extends View implements mListenerView.setListener(null); mOriginalIcon = null; mOnTargetChangeRunnable = null; + mTaskCornerRadius = 0; + mOutline.setEmpty(); } } |