diff options
author | Jim Miller <jaggies@google.com> | 2012-06-18 17:23:28 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-06-18 17:23:28 -0700 |
commit | 60fd2b2de286f3543cf9db9550db9083211ca5ea (patch) | |
tree | b7220cbd60e98d595974de51047db8d328e6047c /core/java | |
parent | 39758edbed0be8f3d75427f750db6e9d005cd16a (diff) | |
parent | ddbc85cbfdc8ac6ed02b104f0e9c46018a0e1c53 (diff) | |
download | frameworks_base-60fd2b2de286f3543cf9db9550db9083211ca5ea.zip frameworks_base-60fd2b2de286f3543cf9db9550db9083211ca5ea.tar.gz frameworks_base-60fd2b2de286f3543cf9db9550db9083211ca5ea.tar.bz2 |
am ddbc85cb: Merge "Fix 6683092: tune GlowPadView wave animation" into jb-dev
* commit 'ddbc85cbfdc8ac6ed02b104f0e9c46018a0e1c53':
Fix 6683092: tune GlowPadView wave animation
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/com/android/internal/widget/multiwaveview/GlowPadView.java | 30 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/multiwaveview/PointCloud.java | 6 |
2 files changed, 28 insertions, 8 deletions
diff --git a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java index 837b7b8..adea586 100644 --- a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java +++ b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java @@ -76,7 +76,7 @@ public class GlowPadView extends View { } // Tuneable parameters for animation - private static final int WAVE_ANIMATION_DURATION = 1200; + private static final int WAVE_ANIMATION_DURATION = 1350; private static final int RETURN_TO_HOME_DELAY = 1200; private static final int RETURN_TO_HOME_DURATION = 200; private static final int HIDE_ANIMATION_DELAY = 200; @@ -361,6 +361,7 @@ public class GlowPadView extends View { mHandleDrawable.setAlpha(0.0f); deactivateTargets(); showTargets(true); + ping(); startBackgroundAnimation(INITIAL_SHOW_HANDLE_DURATION, 1.0f); setGrabbedState(OnTriggerListener.CENTER_HANDLE); if (AccessibilityManager.getInstance(mContext).isEnabled()) { @@ -484,7 +485,12 @@ public class GlowPadView extends View { final int duration = animate ? HIDE_ANIMATION_DURATION : 0; final int delay = animate ? HIDE_ANIMATION_DELAY : 0; - final float targetScale = expanded ? TARGET_SCALE_EXPANDED : TARGET_SCALE_COLLAPSED; + // TODO: add an attribute for this. For now we'll show the expand for navbar, but not + // keyguard. + final boolean expandDisabled = !mAlwaysTrackFinger; + + final float targetScale = (expanded || expandDisabled) ? + TARGET_SCALE_EXPANDED : TARGET_SCALE_COLLAPSED; final int length = mTargetDrawables.size(); final TimeInterpolator interpolator = Ease.Cubic.easeOut; for (int i = 0; i < length; i++) { @@ -499,7 +505,8 @@ public class GlowPadView extends View { "onUpdate", mUpdateListener)); } - final float ringScaleTarget = expanded ? RING_SCALE_EXPANDED : RING_SCALE_COLLAPSED; + final float ringScaleTarget = (expanded || expandDisabled) ? + RING_SCALE_EXPANDED : RING_SCALE_COLLAPSED; mTargetAnimations.add(Tweener.to(mOuterRing, duration, "ease", interpolator, "alpha", 0.0f, @@ -663,7 +670,20 @@ public class GlowPadView extends View { */ public void ping() { if (mFeedbackCount > 0) { - startWaveAnimation(); + boolean doWaveAnimation = true; + final AnimationBundle waveAnimations = mWaveAnimations; + + // Don't do a wave if there's already one in progress + if (waveAnimations.size() > 0 && waveAnimations.get(0).animator.isRunning()) { + long t = waveAnimations.get(0).animator.getCurrentPlayTime(); + if (t < WAVE_ANIMATION_DURATION/2) { + doWaveAnimation = false; + } + } + + if (doWaveAnimation) { + startWaveAnimation(); + } } } @@ -677,7 +697,7 @@ public class GlowPadView extends View { mPointCloud.waveManager.setAlpha(1.0f); mPointCloud.waveManager.setRadius(mHandleDrawable.getWidth()/2.0f); mWaveAnimations.add(Tweener.to(mPointCloud.waveManager, WAVE_ANIMATION_DURATION, - "ease", Ease.Linear.easeNone, + "ease", Ease.Quad.easeOut, "delay", 0, "radius", 2.0f * mOuterRadius, "onUpdate", mUpdateListener, diff --git a/core/java/com/android/internal/widget/multiwaveview/PointCloud.java b/core/java/com/android/internal/widget/multiwaveview/PointCloud.java index 1beac16..1a5a9a2 100644 --- a/core/java/com/android/internal/widget/multiwaveview/PointCloud.java +++ b/core/java/com/android/internal/widget/multiwaveview/PointCloud.java @@ -186,10 +186,10 @@ public class PointCloud { // Compute contribution from Wave float radius = hypot(point.x, point.y); - float distanceToWaveRing = Math.abs(radius - waveManager.radius); + float distanceToWaveRing = (radius - waveManager.radius); float waveAlpha = 0.0f; - if (distanceToWaveRing < waveManager.width * 0.5f) { - float cosf = FloatMath.cos(PI * 0.5f * distanceToWaveRing / waveManager.width); + if (distanceToWaveRing < waveManager.width * 0.5f && distanceToWaveRing < 0.0f) { + float cosf = FloatMath.cos(PI * 0.25f * distanceToWaveRing / waveManager.width); waveAlpha = waveManager.alpha * max(0.0f, (float) Math.pow(cosf, 20.0f)); } |