diff options
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) { |