diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2016-07-22 10:50:11 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2016-07-27 17:37:23 -0700 |
commit | a2454ad2d8dcffa94f670853eb464726c73597f1 (patch) | |
tree | 63899483e75a7faadff477cb117bf5c5cfc54962 /src/com/android/launcher3/util | |
parent | 71538da6e2e70af15684cc270a6e67c9b5a010dc (diff) | |
download | android_packages_apps_Trebuchet-a2454ad2d8dcffa94f670853eb464726c73597f1.tar.gz android_packages_apps_Trebuchet-a2454ad2d8dcffa94f670853eb464726c73597f1.tar.bz2 android_packages_apps_Trebuchet-a2454ad2d8dcffa94f670853eb464726c73597f1.zip |
Launcher shortcuts animations update.
> The shortcut container closes with an animation
> When opening/closing the animation only the icon scales
and not the title and drag handle
> When dragging the icon, it starts from the original icon position and
moves under the user finger. The container grows to follow the drag view.
Bug: 28980830
Change-Id: Ic0353c30b682d1f018cbf4d62e8a6e8e7d7d4664
Diffstat (limited to 'src/com/android/launcher3/util')
3 files changed, 52 insertions, 6 deletions
diff --git a/src/com/android/launcher3/util/PillRevealOutlineProvider.java b/src/com/android/launcher3/util/PillRevealOutlineProvider.java index 09ff9bda4..3f1e11a51 100644 --- a/src/com/android/launcher3/util/PillRevealOutlineProvider.java +++ b/src/com/android/launcher3/util/PillRevealOutlineProvider.java @@ -31,19 +31,18 @@ public class PillRevealOutlineProvider extends RevealOutlineAnimation { private int mCenterX; private int mCenterY; - private Rect mPillRect; + protected Rect mPillRect; /** * @param x reveal center x * @param y reveal center y * @param pillRect round rect that represents the final pill shape - * @param pillRectRadius radius of the round rect */ - public PillRevealOutlineProvider(int x, int y, Rect pillRect, float pillRectRadius) { + public PillRevealOutlineProvider(int x, int y, Rect pillRect) { mCenterX = x; mCenterY = y; mPillRect = pillRect; - mOutlineRadius = pillRectRadius; + mOutlineRadius = pillRect.height() / 2f; } @Override @@ -62,5 +61,6 @@ public class PillRevealOutlineProvider extends RevealOutlineAnimation { mOutline.top = Math.max(mPillRect.top, mCenterY - currentSize); mOutline.right = Math.min(mPillRect.right, mCenterX + currentSize); mOutline.bottom = Math.min(mPillRect.bottom, mCenterY + currentSize); + mOutlineRadius = mOutline.height() / 2; } } diff --git a/src/com/android/launcher3/util/PillWidthRevealOutlineProvider.java b/src/com/android/launcher3/util/PillWidthRevealOutlineProvider.java new file mode 100644 index 000000000..89dda3b26 --- /dev/null +++ b/src/com/android/launcher3/util/PillWidthRevealOutlineProvider.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.util; + +import android.graphics.Rect; + +/** + * Extension of {@link PillRevealOutlineProvider} which only changes the width of the pill. + */ +public class PillWidthRevealOutlineProvider extends PillRevealOutlineProvider { + + private final int mStartLeft; + private final int mStartRight; + + public PillWidthRevealOutlineProvider(Rect pillRect, int left, int right) { + super(0, 0, pillRect); + mOutline.set(pillRect); + mStartLeft = left; + mStartRight = right; + } + + @Override + public void setProgress(float progress) { + mOutline.left = (int) (progress * mPillRect.left + (1 - progress) * mStartLeft); + mOutline.right = (int) (progress * mPillRect.right + (1 - progress) * mStartRight); + } +} diff --git a/src/com/android/launcher3/util/RevealOutlineAnimation.java b/src/com/android/launcher3/util/RevealOutlineAnimation.java index 4447c3ba9..cd9888232 100644 --- a/src/com/android/launcher3/util/RevealOutlineAnimation.java +++ b/src/com/android/launcher3/util/RevealOutlineAnimation.java @@ -29,7 +29,12 @@ public abstract class RevealOutlineAnimation extends ViewOutlineProvider { abstract void setProgress(float progress); public ValueAnimator createRevealAnimator(final View revealView) { - ValueAnimator va = ValueAnimator.ofFloat(0f, 1f); + return createRevealAnimator(revealView, false); + } + + public ValueAnimator createRevealAnimator(final View revealView, boolean isReversed) { + ValueAnimator va = + isReversed ? ValueAnimator.ofFloat(1f, 0f) : ValueAnimator.ofFloat(0f, 1f); final float elevation = revealView.getElevation(); va.addListener(new AnimatorListenerAdapter() { @@ -54,7 +59,7 @@ public abstract class RevealOutlineAnimation extends ViewOutlineProvider { va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator arg0) { - float progress = arg0.getAnimatedFraction(); + float progress = (Float) arg0.getAnimatedValue(); setProgress(progress); revealView.invalidateOutline(); if (!Utilities.ATLEAST_LOLLIPOP_MR1) { |