diff options
author | Brandon Keely <lbk@google.com> | 2011-10-10 11:27:36 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-10-10 11:27:36 -0700 |
commit | 707b268c2956836bf5c1136dc2fe6fba7045dcf4 (patch) | |
tree | b9cfedd8a849eab4beb98ec1f34048b6fbad44f9 /src | |
parent | ff427045fbcdb1cc8c0fd4e286336a62e5a874e8 (diff) | |
parent | 674cd01fd74b403a4625efbfd2743e179c3d9eca (diff) | |
download | packages_apps_nfc-707b268c2956836bf5c1136dc2fe6fba7045dcf4.zip packages_apps_nfc-707b268c2956836bf5c1136dc2fe6fba7045dcf4.tar.gz packages_apps_nfc-707b268c2956836bf5c1136dc2fe6fba7045dcf4.tar.bz2 |
Merge "NFC screenshot animation adjustments: - eliminate discontinuous jump when starting failure animation (mScaleUpAnimator) - simplify success animation: fade live app in at scale=1, rather than scaling it back up - minor timing and motion curve tweaks"
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/nfc/SendUi.java | 69 |
1 files changed, 44 insertions, 25 deletions
diff --git a/src/com/android/nfc/SendUi.java b/src/com/android/nfc/SendUi.java index 11fbd41..5b5c34c 100644 --- a/src/com/android/nfc/SendUi.java +++ b/src/com/android/nfc/SendUi.java @@ -59,21 +59,25 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, static final float INTERMEDIATE_SCALE = 0.6f; static final float[] PRE_SCREENSHOT_SCALE = {1.0f, INTERMEDIATE_SCALE}; - static final int PRE_DURATION_MS = 300; + static final int PRE_DURATION_MS = 350; - static final float[] CLONE_SCREENSHOT_SCALE = {INTERMEDIATE_SCALE, 0.0f}; - static final int SLOW_SEND_DURATION_MS = 3000; // Stretch out sending over 3s - static final int FAST_CLONE_DURATION_MS = 200; + static final float[] CLONE_SCREENSHOT_SCALE = {INTERMEDIATE_SCALE, 0.2f}; + static final int SLOW_SEND_DURATION_MS = 8000; // Stretch out sending over 8s + static final int FAST_CLONE_DURATION_MS = 350; static final float[] SCALE_UP_SCREENSHOT_SCALE = {INTERMEDIATE_SCALE, 1.0f}; static final int SCALE_UP_DURATION_MS = 300; + static final int FADE_IN_DURATION_MS = 250; + static final int FADE_IN_START_DELAY_MS = 350; + static final int SLIDE_OUT_DURATION_MS = 300; static final float[] TEXT_HINT_ALPHA_RANGE = {0.0f, 1.0f}; static final int TEXT_HINT_ALPHA_DURATION_MS = 500; + static final int TEXT_HINT_ALPHA_START_DELAY_MS = 300; - static final float[] BACKGROUND_SCALE_RANGE = {1.0f, 2.0f}; + static final float[] BACKGROUND_SCALE_RANGE = {2.0f, 1.0f}; static final int BACKGROUND_SCALE_DURATION_MS = 5000; static final int FINISH_SCALE_UP = 0; @@ -98,7 +102,7 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, final ObjectAnimator mPreAnimator; final ObjectAnimator mSlowSendAnimator; final ObjectAnimator mFastCloneAnimator; - final ObjectAnimator mScaleUpAnimator; + final ObjectAnimator mFadeInAnimator; final ObjectAnimator mHintAnimator; final AnimatorSet mSuccessAnimatorSet; final ObjectAnimator mBackgroundAnimator; @@ -106,6 +110,7 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, Bitmap mScreenshotBitmap; ObjectAnimator mSlideoutAnimator; + ObjectAnimator mScaleUpAnimator; FireflyRenderThread mFireflyRenderThread; boolean mAttached; @@ -171,27 +176,35 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, PropertyValuesHolder postX = PropertyValuesHolder.ofFloat("scaleX", CLONE_SCREENSHOT_SCALE); PropertyValuesHolder postY = PropertyValuesHolder.ofFloat("scaleY", CLONE_SCREENSHOT_SCALE); mSlowSendAnimator = ObjectAnimator.ofPropertyValuesHolder(mScreenshotView, postX, postY); - mSlowSendAnimator.setInterpolator(null); // linear + mSlowSendAnimator.setInterpolator(new DecelerateInterpolator()); mSlowSendAnimator.setDuration(SLOW_SEND_DURATION_MS); mFastCloneAnimator = ObjectAnimator.ofPropertyValuesHolder(mCloneView, postX, postY); - mFastCloneAnimator.setInterpolator(null); // linear + mFastCloneAnimator.setInterpolator(new DecelerateInterpolator()); mFastCloneAnimator.setDuration(FAST_CLONE_DURATION_MS); PropertyValuesHolder scaleUpX = PropertyValuesHolder.ofFloat("scaleX", SCALE_UP_SCREENSHOT_SCALE); PropertyValuesHolder scaleUpY = PropertyValuesHolder.ofFloat("scaleY", SCALE_UP_SCREENSHOT_SCALE); mScaleUpAnimator = ObjectAnimator.ofPropertyValuesHolder(mScreenshotView, scaleUpX, scaleUpY); - mScaleUpAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); + mScaleUpAnimator.setInterpolator(new DecelerateInterpolator()); mScaleUpAnimator.setDuration(SCALE_UP_DURATION_MS); mScaleUpAnimator.addListener(this); + PropertyValuesHolder fadeIn = PropertyValuesHolder.ofFloat("alpha", 1.0f); + mFadeInAnimator = ObjectAnimator.ofPropertyValuesHolder(mScreenshotView, fadeIn); + mFadeInAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); + mFadeInAnimator.setDuration(FADE_IN_DURATION_MS); + mFadeInAnimator.setStartDelay(FADE_IN_START_DELAY_MS); + mFadeInAnimator.addListener(this); + PropertyValuesHolder alphaUp = PropertyValuesHolder.ofFloat("alpha", TEXT_HINT_ALPHA_RANGE); mHintAnimator = ObjectAnimator.ofPropertyValuesHolder(mTextHint, alphaUp); mHintAnimator.setInterpolator(null); mHintAnimator.setDuration(TEXT_HINT_ALPHA_DURATION_MS); + mHintAnimator.setStartDelay(TEXT_HINT_ALPHA_START_DELAY_MS); mSuccessAnimatorSet = new AnimatorSet(); - mSuccessAnimatorSet.playSequentially(mFastCloneAnimator, mScaleUpAnimator); + mSuccessAnimatorSet.playSequentially(mFastCloneAnimator, mFadeInAnimator); scaleUpX = PropertyValuesHolder.ofFloat("scaleX", BACKGROUND_SCALE_RANGE); scaleUpY = PropertyValuesHolder.ofFloat("scaleY", BACKGROUND_SCALE_RANGE); @@ -249,13 +262,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, break; } - // Reset scale up parameters - PropertyValuesHolder scaleUpX = PropertyValuesHolder.ofFloat("scaleX", - SCALE_UP_SCREENSHOT_SCALE); - PropertyValuesHolder scaleUpY = PropertyValuesHolder.ofFloat("scaleY", - SCALE_UP_SCREENSHOT_SCALE); - mScaleUpAnimator.setValues(scaleUpX, scaleUpY); - mWindowManager.addView(mScreenshotLayout, mWindowLayoutParams); // Disable statusbar pull-down mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND); @@ -286,7 +292,9 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, mTextHint.setVisibility(View.GONE); float currentScale = mScreenshotView.getScaleX(); - mScreenshotView.setAlpha(0.7f); + mScreenshotView.setAlpha(0.0f); + mScreenshotView.setScaleX(1.0f); + mScreenshotView.setScaleY(1.0f); // Make the clone visible for scaling to the background mCloneView.setScaleX(currentScale); @@ -299,12 +307,11 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, PropertyValuesHolder postY = PropertyValuesHolder.ofFloat("scaleY", new float[] {currentScale, 0.0f}); mFastCloneAnimator.setValues(postX, postY); - // Modify the scale up parameters to match the current scale - PropertyValuesHolder scaleUpX = PropertyValuesHolder.ofFloat("scaleX", - new float[] {currentScale, 1.0f}); - PropertyValuesHolder scaleUpY = PropertyValuesHolder.ofFloat("scaleY", - new float[] {currentScale, 1.0f}); - mScaleUpAnimator.setValues(scaleUpX, scaleUpY); + + // Modify the fadeIn parameters to match the current scale + PropertyValuesHolder fadeIn = PropertyValuesHolder.ofFloat("alpha", + new float[] {0.0f, 1.0f}); + mFadeInAnimator.setValues(fadeIn); if (mFireflyRenderThread != null) { mFireflyRenderThread.fadeOut(); @@ -328,6 +335,18 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, mSlideoutAnimator.addListener(this); mSlideoutAnimator.start(); } else { + float currentScale = mScreenshotView.getScaleX(); + float currentAlpha = mScreenshotView.getAlpha(); + PropertyValuesHolder scaleUpX = PropertyValuesHolder.ofFloat("scaleX", + new float[] {currentScale, 1.0f}); + PropertyValuesHolder scaleUpY = PropertyValuesHolder.ofFloat("scaleY", + new float[] {currentScale, 1.0f}); + PropertyValuesHolder scaleUpAlpha = PropertyValuesHolder.ofFloat("alpha", + new float[] {currentAlpha, 1.0f}); + mScaleUpAnimator = ObjectAnimator.ofPropertyValuesHolder(mScreenshotView, scaleUpX, scaleUpY, scaleUpAlpha); + mScaleUpAnimator.setInterpolator(new DecelerateInterpolator()); + mScaleUpAnimator.setDuration(SCALE_UP_DURATION_MS); + mScaleUpAnimator.addListener(this); mScaleUpAnimator.start(); } } @@ -417,7 +436,7 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener, @Override public void onAnimationEnd(Animator animation) { if (animation == mScaleUpAnimator || animation == mSuccessAnimatorSet || - animation == mSlideoutAnimator) { + animation == mSlideoutAnimator || animation == mFadeInAnimator) { dismiss(); } } |