}
// 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;
mHandleDrawable.setAlpha(0.0f);
deactivateTargets();
showTargets(true);
+ ping();
startBackgroundAnimation(INITIAL_SHOW_HANDLE_DURATION, 1.0f);
setGrabbedState(OnTriggerListener.CENTER_HANDLE);
if (AccessibilityManager.getInstance(mContext).isEnabled()) {
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++) {
"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,
*/
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();
+ }
}
}
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,
// 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));
}