summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jim Miller <jaggies@google.com> 2011-01-26 19:02:32 -0800
committer Jim Miller <jaggies@google.com> 2011-01-26 19:03:49 -0800
commit8996cf071abf5e6a6458da258a1d59bcaafc3c2c (patch)
treef542787cae0f221339f460db55c49f6e14b687bd
parentee37ab8dce5fe60d9a2af411ae9e38e3e44589ed (diff)
Fix 3381324: Restart ripples when the user moves away from the edge.
This changes the behavior of WaveView to start waves again when the user moves the halo back towards the center. Change-Id: Ia3b8fbd091e90e83e0c34b98a3060d3236191d7a
-rw-r--r--core/java/com/android/internal/widget/WaveView.java20
1 files changed, 17 insertions, 3 deletions
diff --git a/core/java/com/android/internal/widget/WaveView.java b/core/java/com/android/internal/widget/WaveView.java
index c7a90c40bd63..d6f2e1aefdd1 100644
--- a/core/java/com/android/internal/widget/WaveView.java
+++ b/core/java/com/android/internal/widget/WaveView.java
@@ -83,6 +83,8 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen
private DrawableHolder mUnlockHalo;
private int mLockState = STATE_RESET_LOCK;
private int mGrabbedState = OnTriggerListener.NO_HANDLE;
+ private boolean mWavesRunning;
+ private boolean mFinishWaves;
public WaveView(Context context) {
this(context, null);
@@ -241,6 +243,7 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen
case STATE_READY:
if (DBG) Log.v(TAG, "State READY");
+ mWaveTimerDelay = WAVE_DELAY;
break;
case STATE_START_ATTEMPT:
@@ -264,14 +267,13 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen
mUnlockRing.addAnimTo(DURATION, 0, "scaleY", 1.0f, true);
mUnlockRing.addAnimTo(DURATION, 0, "alpha", 1.0f, true);
- postDelayed(mAddWaveAction, mWaveTimerDelay);
-
mLockState = STATE_ATTEMPTING;
break;
case STATE_ATTEMPTING:
if (DBG) Log.v(TAG, "State ATTEMPTING (fingerDown = " + fingerDown + ")");
if (dragDistance > mSnapRadius) {
+ mFinishWaves = true; // don't start any more waves.
if (fingerDown) {
mUnlockHalo.addAnimTo(0, 0, "x", ringX, true);
mUnlockHalo.addAnimTo(0, 0, "y", ringY, true);
@@ -283,6 +285,13 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen
mLockState = STATE_UNLOCK_ATTEMPT;
}
} else {
+ // If waves have stopped, we need to kick them off again...
+ if (!mWavesRunning) {
+ mWavesRunning = true;
+ mFinishWaves = false;
+ // mWaveTimerDelay = WAVE_DELAY;
+ postDelayed(mAddWaveAction, mWaveTimerDelay);
+ }
mUnlockHalo.addAnimTo(0, 0, "x", mouseX, true);
mUnlockHalo.addAnimTo(0, 0, "y", mouseY, true);
mUnlockHalo.addAnimTo(0, 0, "scaleX", 1.0f, true);
@@ -429,10 +438,15 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen
mCurrentWave = (mCurrentWave+1) % mWaveCount;
if (DBG) Log.v(TAG, "WaveTimerDelay: start new wave in " + mWaveTimerDelay);
- postDelayed(mAddWaveAction, mWaveTimerDelay);
} else {
mWaveTimerDelay += DELAY_INCREMENT2;
}
+ if (mFinishWaves) {
+ // sentinel used to restart the waves after they've stopped
+ mWavesRunning = false;
+ } else {
+ postDelayed(mAddWaveAction, mWaveTimerDelay);
+ }
}
};