Loading graphics/java/android/graphics/drawable/RippleBackground.java +10 −9 Original line number Diff line number Diff line Loading @@ -43,10 +43,12 @@ class RippleBackground { private static final float WAVE_OPACITY_DECAY_VELOCITY = 3.0f / GLOBAL_SPEED; private static final float WAVE_OUTER_OPACITY_EXIT_VELOCITY_MAX = 4.5f * GLOBAL_SPEED; private static final float WAVE_OUTER_OPACITY_EXIT_VELOCITY_MIN = 1.5f * GLOBAL_SPEED; private static final float WAVE_OUTER_OPACITY_ENTER_VELOCITY = 10.0f * GLOBAL_SPEED; private static final float WAVE_OUTER_SIZE_INFLUENCE_MAX = 200f; private static final float WAVE_OUTER_SIZE_INFLUENCE_MIN = 40f; private static final int ENTER_DURATION = 667; private static final int ENTER_DURATION_FAST = 100; // Hardware animators. private final ArrayList<RenderNodeAnimator> mRunningAnimations = new ArrayList<RenderNodeAnimator>(); Loading Loading @@ -224,21 +226,20 @@ class RippleBackground { /** * Starts the enter animation. */ public void enter() { public void enter(boolean fast) { cancel(); final int outerDuration = (int) (1000 * 1.0f / WAVE_OUTER_OPACITY_ENTER_VELOCITY); final ObjectAnimator outer = ObjectAnimator.ofFloat(this, "outerOpacity", 0, 1); outer.setAutoCancel(true); outer.setDuration(outerDuration); outer.setInterpolator(LINEAR_INTERPOLATOR); final ObjectAnimator opacity = ObjectAnimator.ofFloat(this, "outerOpacity", 0, 1); opacity.setAutoCancel(true); opacity.setDuration(fast ? ENTER_DURATION_FAST : ENTER_DURATION); opacity.setInterpolator(LINEAR_INTERPOLATOR); mAnimOuterOpacity = outer; mAnimOuterOpacity = opacity; // Enter animations always run on the UI thread, since it's unlikely // that anything interesting is happening until the user lifts their // finger. outer.start(); opacity.start(); } /** Loading graphics/java/android/graphics/drawable/RippleDrawable.java +9 −6 Original line number Diff line number Diff line Loading @@ -280,7 +280,7 @@ public class RippleDrawable extends LayerDrawable { } setRippleActive(enabled && pressed); setBackgroundActive(focused || (enabled && pressed)); setBackgroundActive(focused || (enabled && pressed), focused); return changed; } Loading @@ -296,11 +296,11 @@ public class RippleDrawable extends LayerDrawable { } } private void setBackgroundActive(boolean active) { private void setBackgroundActive(boolean active, boolean focused) { if (mBackgroundActive != active) { mBackgroundActive = active; if (active) { tryBackgroundEnter(); tryBackgroundEnter(focused); } else { tryBackgroundExit(); } Loading Loading @@ -333,8 +333,11 @@ public class RippleDrawable extends LayerDrawable { } if (mBackgroundActive) { tryBackgroundEnter(); tryBackgroundEnter(false); } // Skip animations, just show the correct final states. jumpToCurrentState(); } return changed; Loading Loading @@ -489,14 +492,14 @@ public class RippleDrawable extends LayerDrawable { /** * Creates an active hotspot at the specified location. */ private void tryBackgroundEnter() { private void tryBackgroundEnter(boolean focused) { if (mBackground == null) { mBackground = new RippleBackground(this, mHotspotBounds); } final int color = mState.mColor.getColorForState(getState(), Color.TRANSPARENT); mBackground.setup(mState.mMaxRadius, color, mDensity); mBackground.enter(); mBackground.enter(focused); } private void tryBackgroundExit() { Loading Loading
graphics/java/android/graphics/drawable/RippleBackground.java +10 −9 Original line number Diff line number Diff line Loading @@ -43,10 +43,12 @@ class RippleBackground { private static final float WAVE_OPACITY_DECAY_VELOCITY = 3.0f / GLOBAL_SPEED; private static final float WAVE_OUTER_OPACITY_EXIT_VELOCITY_MAX = 4.5f * GLOBAL_SPEED; private static final float WAVE_OUTER_OPACITY_EXIT_VELOCITY_MIN = 1.5f * GLOBAL_SPEED; private static final float WAVE_OUTER_OPACITY_ENTER_VELOCITY = 10.0f * GLOBAL_SPEED; private static final float WAVE_OUTER_SIZE_INFLUENCE_MAX = 200f; private static final float WAVE_OUTER_SIZE_INFLUENCE_MIN = 40f; private static final int ENTER_DURATION = 667; private static final int ENTER_DURATION_FAST = 100; // Hardware animators. private final ArrayList<RenderNodeAnimator> mRunningAnimations = new ArrayList<RenderNodeAnimator>(); Loading Loading @@ -224,21 +226,20 @@ class RippleBackground { /** * Starts the enter animation. */ public void enter() { public void enter(boolean fast) { cancel(); final int outerDuration = (int) (1000 * 1.0f / WAVE_OUTER_OPACITY_ENTER_VELOCITY); final ObjectAnimator outer = ObjectAnimator.ofFloat(this, "outerOpacity", 0, 1); outer.setAutoCancel(true); outer.setDuration(outerDuration); outer.setInterpolator(LINEAR_INTERPOLATOR); final ObjectAnimator opacity = ObjectAnimator.ofFloat(this, "outerOpacity", 0, 1); opacity.setAutoCancel(true); opacity.setDuration(fast ? ENTER_DURATION_FAST : ENTER_DURATION); opacity.setInterpolator(LINEAR_INTERPOLATOR); mAnimOuterOpacity = outer; mAnimOuterOpacity = opacity; // Enter animations always run on the UI thread, since it's unlikely // that anything interesting is happening until the user lifts their // finger. outer.start(); opacity.start(); } /** Loading
graphics/java/android/graphics/drawable/RippleDrawable.java +9 −6 Original line number Diff line number Diff line Loading @@ -280,7 +280,7 @@ public class RippleDrawable extends LayerDrawable { } setRippleActive(enabled && pressed); setBackgroundActive(focused || (enabled && pressed)); setBackgroundActive(focused || (enabled && pressed), focused); return changed; } Loading @@ -296,11 +296,11 @@ public class RippleDrawable extends LayerDrawable { } } private void setBackgroundActive(boolean active) { private void setBackgroundActive(boolean active, boolean focused) { if (mBackgroundActive != active) { mBackgroundActive = active; if (active) { tryBackgroundEnter(); tryBackgroundEnter(focused); } else { tryBackgroundExit(); } Loading Loading @@ -333,8 +333,11 @@ public class RippleDrawable extends LayerDrawable { } if (mBackgroundActive) { tryBackgroundEnter(); tryBackgroundEnter(false); } // Skip animations, just show the correct final states. jumpToCurrentState(); } return changed; Loading Loading @@ -489,14 +492,14 @@ public class RippleDrawable extends LayerDrawable { /** * Creates an active hotspot at the specified location. */ private void tryBackgroundEnter() { private void tryBackgroundEnter(boolean focused) { if (mBackground == null) { mBackground = new RippleBackground(this, mHotspotBounds); } final int color = mState.mColor.getColorForState(getState(), Color.TRANSPARENT); mBackground.setup(mState.mMaxRadius, color, mDensity); mBackground.enter(); mBackground.enter(focused); } private void tryBackgroundExit() { Loading