summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonathan Miranda <jonmiranda@google.com>2019-05-10 17:30:46 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-05-10 17:30:46 +0000
commit57730ed095cacdd91c847775e857fbe61b564d6d (patch)
tree306341220e32e809063231a95d0805f021f80076 /src
parent9b39df068e66f0cbc4e78528c9a6e84d6cb97cc5 (diff)
parent2da1da30760c7abb576a5fbefc6ec4d12040a2b2 (diff)
downloadandroid_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.java4
-rw-r--r--src/com/android/launcher3/views/FloatingIconView.java68
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();
}
}