Skip to content

Commit ddbc85c

Browse files
Jim MillerAndroid (Google) Code Review
authored andcommitted
Merge "Fix 6683092: tune GlowPadView wave animation" into jb-dev
2 parents 386ce58 + 5892e2e commit ddbc85c

File tree

6 files changed

+32
-12
lines changed

6 files changed

+32
-12
lines changed

core/java/com/android/internal/widget/multiwaveview/GlowPadView.java

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public interface OnTriggerListener {
7676
}
7777

7878
// Tuneable parameters for animation
79-
private static final int WAVE_ANIMATION_DURATION = 1200;
79+
private static final int WAVE_ANIMATION_DURATION = 1350;
8080
private static final int RETURN_TO_HOME_DELAY = 1200;
8181
private static final int RETURN_TO_HOME_DURATION = 200;
8282
private static final int HIDE_ANIMATION_DELAY = 200;
@@ -361,6 +361,7 @@ private void switchToState(int state, float x, float y) {
361361
mHandleDrawable.setAlpha(0.0f);
362362
deactivateTargets();
363363
showTargets(true);
364+
ping();
364365
startBackgroundAnimation(INITIAL_SHOW_HANDLE_DURATION, 1.0f);
365366
setGrabbedState(OnTriggerListener.CENTER_HANDLE);
366367
if (AccessibilityManager.getInstance(mContext).isEnabled()) {
@@ -484,7 +485,12 @@ private void hideTargets(boolean animate, boolean expanded) {
484485
final int duration = animate ? HIDE_ANIMATION_DURATION : 0;
485486
final int delay = animate ? HIDE_ANIMATION_DELAY : 0;
486487

487-
final float targetScale = expanded ? TARGET_SCALE_EXPANDED : TARGET_SCALE_COLLAPSED;
488+
// TODO: add an attribute for this. For now we'll show the expand for navbar, but not
489+
// keyguard.
490+
final boolean expandDisabled = !mAlwaysTrackFinger;
491+
492+
final float targetScale = (expanded || expandDisabled) ?
493+
TARGET_SCALE_EXPANDED : TARGET_SCALE_COLLAPSED;
488494
final int length = mTargetDrawables.size();
489495
final TimeInterpolator interpolator = Ease.Cubic.easeOut;
490496
for (int i = 0; i < length; i++) {
@@ -499,7 +505,8 @@ private void hideTargets(boolean animate, boolean expanded) {
499505
"onUpdate", mUpdateListener));
500506
}
501507

502-
final float ringScaleTarget = expanded ? RING_SCALE_EXPANDED : RING_SCALE_COLLAPSED;
508+
final float ringScaleTarget = (expanded || expandDisabled) ?
509+
RING_SCALE_EXPANDED : RING_SCALE_COLLAPSED;
503510
mTargetAnimations.add(Tweener.to(mOuterRing, duration,
504511
"ease", interpolator,
505512
"alpha", 0.0f,
@@ -663,7 +670,20 @@ public void setVibrateEnabled(boolean enabled) {
663670
*/
664671
public void ping() {
665672
if (mFeedbackCount > 0) {
666-
startWaveAnimation();
673+
boolean doWaveAnimation = true;
674+
final AnimationBundle waveAnimations = mWaveAnimations;
675+
676+
// Don't do a wave if there's already one in progress
677+
if (waveAnimations.size() > 0 && waveAnimations.get(0).animator.isRunning()) {
678+
long t = waveAnimations.get(0).animator.getCurrentPlayTime();
679+
if (t < WAVE_ANIMATION_DURATION/2) {
680+
doWaveAnimation = false;
681+
}
682+
}
683+
684+
if (doWaveAnimation) {
685+
startWaveAnimation();
686+
}
667687
}
668688
}
669689

@@ -677,7 +697,7 @@ private void startWaveAnimation() {
677697
mPointCloud.waveManager.setAlpha(1.0f);
678698
mPointCloud.waveManager.setRadius(mHandleDrawable.getWidth()/2.0f);
679699
mWaveAnimations.add(Tweener.to(mPointCloud.waveManager, WAVE_ANIMATION_DURATION,
680-
"ease", Ease.Linear.easeNone,
700+
"ease", Ease.Quad.easeOut,
681701
"delay", 0,
682702
"radius", 2.0f * mOuterRadius,
683703
"onUpdate", mUpdateListener,

core/java/com/android/internal/widget/multiwaveview/PointCloud.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,10 @@ public int getAlphaForPoint(Point point) {
186186

187187
// Compute contribution from Wave
188188
float radius = hypot(point.x, point.y);
189-
float distanceToWaveRing = Math.abs(radius - waveManager.radius);
189+
float distanceToWaveRing = (radius - waveManager.radius);
190190
float waveAlpha = 0.0f;
191-
if (distanceToWaveRing < waveManager.width * 0.5f) {
192-
float cosf = FloatMath.cos(PI * 0.5f * distanceToWaveRing / waveManager.width);
191+
if (distanceToWaveRing < waveManager.width * 0.5f && distanceToWaveRing < 0.0f) {
192+
float cosf = FloatMath.cos(PI * 0.25f * distanceToWaveRing / waveManager.width);
193193
waveAlpha = waveManager.alpha * max(0.0f, (float) Math.pow(cosf, 20.0f));
194194
}
195195

packages/SystemUI/res/layout-land/status_bar_search_panel.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
prvandroid:outerRadius="@dimen/navbar_search_outerring_radius"
5555
prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
5656
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
57-
prvandroid:feedbackCount="0"
57+
prvandroid:feedbackCount="1"
5858
prvandroid:vibrationDuration="@integer/config_vibration_duration"
5959
prvandroid:alwaysTrackFinger="true"
6060
prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius"

packages/SystemUI/res/layout-port/status_bar_search_panel.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
prvandroid:outerRadius="@dimen/navbar_search_outerring_radius"
5555
prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
5656
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
57-
prvandroid:feedbackCount="0"
57+
prvandroid:feedbackCount="1"
5858
prvandroid:vibrationDuration="@integer/config_vibration_duration"
5959
prvandroid:alwaysTrackFinger="true"
6060
prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius"

packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
prvandroid:outerRadius="@dimen/navbar_search_outerring_radius"
4141
prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
4242
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
43-
prvandroid:feedbackCount="0"
43+
prvandroid:feedbackCount="1"
4444
prvandroid:vibrationDuration="@integer/config_vibration_duration"
4545
prvandroid:alwaysTrackFinger="true"
4646
prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius"

packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
prvandroid:outerRadius="@dimen/navbar_search_outerring_radius"
4242
prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
4343
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
44-
prvandroid:feedbackCount="0"
44+
prvandroid:feedbackCount="1"
4545
prvandroid:vibrationDuration="@integer/config_vibration_duration"
4646
prvandroid:alwaysTrackFinger="true"
4747
prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius"

0 commit comments

Comments
 (0)