Restrict Google's MultiWaveView animation to JB+

Fixes #4203
// FREEBIE
This commit is contained in:
Moxie Marlinspike 2015-10-04 10:21:08 -07:00
parent 0225db9db5
commit 399dfb1a98

View File

@ -49,6 +49,9 @@ import java.util.ArrayList;
* causes an event that can be caught by implementing OnTriggerListener. * causes an event that can be caught by implementing OnTriggerListener.
*/ */
public class MultiWaveView extends View { public class MultiWaveView extends View {
private static final int ANIMATION_VERSION = Build.VERSION_CODES.JELLY_BEAN;
private static final String TAG = "MultiWaveView"; private static final String TAG = "MultiWaveView";
private static final boolean DEBUG = false; private static final boolean DEBUG = false;
@ -160,7 +163,7 @@ public class MultiWaveView extends View {
this.mContext = context.getApplicationContext(); this.mContext = context.getApplicationContext();
Resources res = context.getResources(); Resources res = context.getResources();
if (Build.VERSION.SDK_INT >= 11) { if (Build.VERSION.SDK_INT >= ANIMATION_VERSION) {
animationsWrapper = new AnimationsWrapper(); animationsWrapper = new AnimationsWrapper();
} }
@ -308,7 +311,7 @@ public class MultiWaveView extends View {
* mFeedbackCount items in the order: left, right, top, bottom. * mFeedbackCount items in the order: left, right, top, bottom.
*/ */
private void startChevronAnimation() { private void startChevronAnimation() {
if (Build.VERSION.SDK_INT < 11) return; if (Build.VERSION.SDK_INT < ANIMATION_VERSION) return;
final float r = mHandleDrawable.getWidth() * 0.4f; final float r = mHandleDrawable.getWidth() * 0.4f;
final float chevronAnimationDistance = mOuterRadius * 0.9f; final float chevronAnimationDistance = mOuterRadius * 0.9f;
@ -347,7 +350,7 @@ public class MultiWaveView extends View {
} }
private void stopChevronAnimation() { private void stopChevronAnimation() {
if (Build.VERSION.SDK_INT < 11) return; if (Build.VERSION.SDK_INT < ANIMATION_VERSION) return;
for (Tweener anim : mChevronAnimations) { for (Tweener anim : mChevronAnimations) {
anim.animator.end(); anim.animator.end();
@ -356,7 +359,7 @@ public class MultiWaveView extends View {
} }
private void stopHandleAnimation() { private void stopHandleAnimation() {
if (Build.VERSION.SDK_INT < 11) return; if (Build.VERSION.SDK_INT < ANIMATION_VERSION) return;
if (mHandleAnimation != null) { if (mHandleAnimation != null) {
mHandleAnimation.animator.end(); mHandleAnimation.animator.end();
@ -422,7 +425,7 @@ public class MultiWaveView extends View {
// Inform listener of any active targets. Typically only one will be active. // Inform listener of any active targets. Typically only one will be active.
if (DEBUG) Log.v(TAG, "Finish with target hit = " + targetHit); if (DEBUG) Log.v(TAG, "Finish with target hit = " + targetHit);
dispatchTriggerEvent(mActiveTarget); dispatchTriggerEvent(mActiveTarget);
if (Build.VERSION.SDK_INT >= 11) { if (Build.VERSION.SDK_INT >= ANIMATION_VERSION) {
mHandleAnimation = Tweener.to(mHandleDrawable, 0, mHandleAnimation = Tweener.to(mHandleDrawable, 0,
"ease", Ease.Quart.easeOut, "ease", Ease.Quart.easeOut,
"delay", RETURN_TO_HOME_DELAY, "delay", RETURN_TO_HOME_DELAY,
@ -438,7 +441,7 @@ public class MultiWaveView extends View {
} }
} else { } else {
// Animate finger outline back to home position // Animate finger outline back to home position
if (Build.VERSION.SDK_INT >= 11) { if (Build.VERSION.SDK_INT >= ANIMATION_VERSION) {
mHandleAnimation = Tweener.to(mHandleDrawable, RETURN_TO_HOME_DURATION, mHandleAnimation = Tweener.to(mHandleDrawable, RETURN_TO_HOME_DURATION,
"ease", Ease.Quart.easeOut, "ease", Ease.Quart.easeOut,
"delay", 0, "delay", 0,
@ -473,7 +476,7 @@ public class MultiWaveView extends View {
// Note: these animations should complete at the same time so that we can swap out // Note: these animations should complete at the same time so that we can swap out
// the target assets asynchronously from the setTargetResources() call. // the target assets asynchronously from the setTargetResources() call.
mAnimatingTargets = animate; mAnimatingTargets = animate;
if (animate && Build.VERSION.SDK_INT >= 11) { if (animate && Build.VERSION.SDK_INT >= ANIMATION_VERSION) {
final int duration = animate ? HIDE_ANIMATION_DURATION : 0; final int duration = animate ? HIDE_ANIMATION_DURATION : 0;
for (TargetDrawable target : mTargetDrawables) { for (TargetDrawable target : mTargetDrawables) {
target.setState(TargetDrawable.STATE_INACTIVE); target.setState(TargetDrawable.STATE_INACTIVE);
@ -501,7 +504,7 @@ public class MultiWaveView extends View {
stopTargetAnimation(); stopTargetAnimation();
} }
mAnimatingTargets = animate; mAnimatingTargets = animate;
if (animate && Build.VERSION.SDK_INT >= 11) { if (animate && Build.VERSION.SDK_INT >= ANIMATION_VERSION) {
for (TargetDrawable target : mTargetDrawables) { for (TargetDrawable target : mTargetDrawables) {
target.setState(TargetDrawable.STATE_INACTIVE); target.setState(TargetDrawable.STATE_INACTIVE);
mTargetAnimations.add(Tweener.to(target, SHOW_ANIMATION_DURATION, mTargetAnimations.add(Tweener.to(target, SHOW_ANIMATION_DURATION,
@ -524,7 +527,7 @@ public class MultiWaveView extends View {
} }
private void stopTargetAnimation() { private void stopTargetAnimation() {
if (Build.VERSION.SDK_INT < 11) return; if (Build.VERSION.SDK_INT < ANIMATION_VERSION) return;
for (Tweener anim : mTargetAnimations) { for (Tweener anim : mTargetAnimations) {
anim.animator.end(); anim.animator.end();
@ -632,7 +635,7 @@ public class MultiWaveView extends View {
* *
*/ */
public void ping() { public void ping() {
if (Build.VERSION.SDK_INT >= 11) { if (Build.VERSION.SDK_INT >= ANIMATION_VERSION) {
stopChevronAnimation(); stopChevronAnimation();
startChevronAnimation(); startChevronAnimation();
} }
@ -654,7 +657,7 @@ public class MultiWaveView extends View {
mHandleDrawable.setY(mWaveCenterY); mHandleDrawable.setY(mWaveCenterY);
mHandleDrawable.setState(TargetDrawable.STATE_INACTIVE); mHandleDrawable.setState(TargetDrawable.STATE_INACTIVE);
if (Build.VERSION.SDK_INT >= 11) if (Build.VERSION.SDK_INT >= ANIMATION_VERSION)
Tweener.reset(); Tweener.reset();
} }