diff options
| author | 2014-09-03 18:31:47 +0000 | |
|---|---|---|
| committer | 2014-09-03 18:31:47 +0000 | |
| commit | 94b88e7103b0ce7a1bb1f79156b5fdc07f1c90b4 (patch) | |
| tree | 79281ede638065e9c1d0ac8aefd32b0065c93758 /graphics/java | |
| parent | 7f6fa2a1cd7db974aaea9f40d2f98aa9b8fa7abd (diff) | |
| parent | a8a8ff000b2902eb4e187e62be39fd9535c6c839 (diff) | |
Merge "Remove partial support for hotspot changes on focus movement" into lmp-dev
Diffstat (limited to 'graphics/java')
| -rw-r--r-- | graphics/java/android/graphics/drawable/RippleBackground.java | 127 | ||||
| -rw-r--r-- | graphics/java/android/graphics/drawable/RippleDrawable.java | 25 |
2 files changed, 6 insertions, 146 deletions
diff --git a/graphics/java/android/graphics/drawable/RippleBackground.java b/graphics/java/android/graphics/drawable/RippleBackground.java index ab43e01a1321..4e68a60f36a4 100644 --- a/graphics/java/android/graphics/drawable/RippleBackground.java +++ b/graphics/java/android/graphics/drawable/RippleBackground.java @@ -37,10 +37,8 @@ import java.util.ArrayList; */ class RippleBackground { private static final TimeInterpolator LINEAR_INTERPOLATOR = new LinearInterpolator(); - private static final TimeInterpolator DECEL_INTERPOLATOR = new LogInterpolator(); private static final float GLOBAL_SPEED = 1.0f; - private static final float WAVE_TOUCH_DOWN_ACCELERATION = 1024.0f * GLOBAL_SPEED; private static final float WAVE_OPACITY_DECAY_VELOCITY = 3.0f / GLOBAL_SPEED; private static final float WAVE_OUTER_OPACITY_EXIT_VELOCITY_MAX = 4.5f * GLOBAL_SPEED; private static final float WAVE_OUTER_OPACITY_EXIT_VELOCITY_MIN = 1.5f * GLOBAL_SPEED; @@ -70,11 +68,6 @@ class RippleBackground { /** Screen density used to adjust pixel-based velocities. */ private float mDensity; - private float mStartingX; - private float mStartingY; - private float mClampedStartingX; - private float mClampedStartingY; - // Hardware rendering properties. private CanvasProperty<Paint> mPropOuterPaint; private CanvasProperty<Float> mPropOuterRadius; @@ -83,8 +76,6 @@ class RippleBackground { // Software animators. private ObjectAnimator mAnimOuterOpacity; - private ObjectAnimator mAnimX; - private ObjectAnimator mAnimY; // Temporary paint used for creating canvas properties. private Paint mTempPaint; @@ -94,10 +85,6 @@ class RippleBackground { private float mOuterX; private float mOuterY; - // Values used to tween between the start and end positions. - private float mTweenX = 0; - private float mTweenY = 0; - /** Whether we should be drawing hardware animations. */ private boolean mHardwareAnimating; @@ -110,12 +97,9 @@ class RippleBackground { /** * Creates a new ripple. */ - public RippleBackground(RippleDrawable owner, Rect bounds, float startingX, float startingY) { + public RippleBackground(RippleDrawable owner, Rect bounds) { mOwner = owner; mBounds = bounds; - - mStartingX = startingX; - mStartingY = startingY; } public void setup(int maxRadius, int color, float density) { @@ -133,25 +117,6 @@ class RippleBackground { mOuterX = 0; mOuterY = 0; mDensity = density; - - clampStartingPosition(); - } - - private void clampStartingPosition() { - final float cX = mBounds.exactCenterX(); - final float cY = mBounds.exactCenterY(); - final float dX = mStartingX - cX; - final float dY = mStartingY - cY; - final float r = mOuterRadius; - if (dX * dX + dY * dY > r * r) { - // Point is outside the circle, clamp to the circumference. - final double angle = Math.atan2(dY, dX); - mClampedStartingX = cX + (float) (Math.cos(angle) * r); - mClampedStartingY = cY + (float) (Math.sin(angle) * r); - } else { - mClampedStartingX = mStartingX; - mClampedStartingY = mStartingY; - } } public void onHotspotBoundsChanged() { @@ -159,8 +124,6 @@ class RippleBackground { final float halfWidth = mBounds.width() / 2.0f; final float halfHeight = mBounds.height() / 2.0f; mOuterRadius = (float) Math.sqrt(halfWidth * halfWidth + halfHeight * halfHeight); - - clampStartingPosition(); } } @@ -175,28 +138,6 @@ class RippleBackground { return mOuterOpacity; } - @SuppressWarnings("unused") - public void setXGravity(float x) { - mTweenX = x; - invalidateSelf(); - } - - @SuppressWarnings("unused") - public float getXGravity() { - return mTweenX; - } - - @SuppressWarnings("unused") - public void setYGravity(float y) { - mTweenY = y; - invalidateSelf(); - } - - @SuppressWarnings("unused") - public float getYGravity() { - return mTweenY; - } - /** * Draws the ripple centered at (0,0) using the specified paint. */ @@ -270,53 +211,23 @@ class RippleBackground { } /** - * Specifies the starting position relative to the drawable bounds. No-op if - * the ripple has already entered. - */ - public void move(float x, float y) { - mStartingX = x; - mStartingY = y; - - clampStartingPosition(); - } - - /** * Starts the enter animation. */ public void enter() { cancel(); - final int radiusDuration = (int) - (1000 * Math.sqrt(mOuterRadius / WAVE_TOUCH_DOWN_ACCELERATION * mDensity) + 0.5); final int outerDuration = (int) (1000 * 1.0f / WAVE_OUTER_OPACITY_ENTER_VELOCITY); - - final ObjectAnimator cX = ObjectAnimator.ofFloat(this, "xGravity", 1); - cX.setAutoCancel(true); - cX.setDuration(radiusDuration); - cX.setInterpolator(LINEAR_INTERPOLATOR); - cX.setStartDelay(RIPPLE_ENTER_DELAY); - - final ObjectAnimator cY = ObjectAnimator.ofFloat(this, "yGravity", 1); - cY.setAutoCancel(true); - cY.setDuration(radiusDuration); - cY.setInterpolator(LINEAR_INTERPOLATOR); - cY.setStartDelay(RIPPLE_ENTER_DELAY); - final ObjectAnimator outer = ObjectAnimator.ofFloat(this, "outerOpacity", 0, 1); outer.setAutoCancel(true); outer.setDuration(outerDuration); outer.setInterpolator(LINEAR_INTERPOLATOR); mAnimOuterOpacity = outer; - mAnimX = cX; - mAnimY = cY; // Enter animations always run on the UI thread, since it's unlikely // that anything interesting is happening until the user lifts their // finger. outer.start(); - cX.start(); - cY.start(); } /** @@ -352,12 +263,6 @@ class RippleBackground { private void exitHardware(int opacityDuration, int outerInflection, int inflectionOpacity) { mPendingAnimations.clear(); - // TODO: Adjust background by starting position. - final float startX = MathUtils.lerp( - mClampedStartingX - mBounds.exactCenterX(), mOuterX, mTweenX); - final float startY = MathUtils.lerp( - mClampedStartingY - mBounds.exactCenterY(), mOuterY, mTweenY); - final Paint outerPaint = getTempPaint(); outerPaint.setAntiAlias(true); outerPaint.setColor(mColor); @@ -422,14 +327,6 @@ class RippleBackground { if (mAnimOuterOpacity != null) { mAnimOuterOpacity.end(); } - - if (mAnimX != null) { - mAnimX.end(); - } - - if (mAnimY != null) { - mAnimY.end(); - } } private void endHardwareAnimations() { @@ -457,16 +354,6 @@ class RippleBackground { } private void exitSoftware(int opacityDuration, int outerInflection, int inflectionOpacity) { - final ObjectAnimator xAnim = ObjectAnimator.ofFloat(this, "xGravity", 1); - xAnim.setAutoCancel(true); - xAnim.setDuration(opacityDuration); - xAnim.setInterpolator(DECEL_INTERPOLATOR); - - final ObjectAnimator yAnim = ObjectAnimator.ofFloat(this, "yGravity", 1); - yAnim.setAutoCancel(true); - yAnim.setDuration(opacityDuration); - yAnim.setInterpolator(DECEL_INTERPOLATOR); - final ObjectAnimator outerOpacityAnim; if (outerInflection > 0) { // Outer opacity continues to increase for a bit. @@ -510,12 +397,8 @@ class RippleBackground { } mAnimOuterOpacity = outerOpacityAnim; - mAnimX = xAnim; - mAnimY = yAnim; outerOpacityAnim.start(); - xAnim.start(); - yAnim.start(); } /** @@ -531,14 +414,6 @@ class RippleBackground { if (mAnimOuterOpacity != null) { mAnimOuterOpacity.cancel(); } - - if (mAnimX != null) { - mAnimX.cancel(); - } - - if (mAnimY != null) { - mAnimY.cancel(); - } } /** diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index e87a114b81d3..fa762b7512e3 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -248,15 +248,14 @@ public class RippleDrawable extends LayerDrawable { boolean pressed = false; boolean focused = false; - final int N = stateSet.length; - for (int i = 0; i < N; i++) { - if (stateSet[i] == R.attr.state_enabled) { + for (int state : stateSet) { + if (state == R.attr.state_enabled) { enabled = true; } - if (stateSet[i] == R.attr.state_focused) { + if (state == R.attr.state_focused) { focused = true; } - if (stateSet[i] == R.attr.state_pressed) { + if (state == R.attr.state_pressed) { pressed = true; } } @@ -478,10 +477,6 @@ public class RippleDrawable extends LayerDrawable { if (mRipple != null) { mRipple.move(x, y); } - - if (mBackground != null) { - mBackground.move(x, y); - } } /** @@ -489,17 +484,7 @@ public class RippleDrawable extends LayerDrawable { */ private void tryBackgroundEnter() { if (mBackground == null) { - final float x; - final float y; - if (mHasPending) { - mHasPending = false; - x = mPendingX; - y = mPendingY; - } else { - x = mHotspotBounds.exactCenterX(); - y = mHotspotBounds.exactCenterY(); - } - mBackground = new RippleBackground(this, mHotspotBounds, x, y); + mBackground = new RippleBackground(this, mHotspotBounds); } final int color = mState.mColor.getColorForState(getState(), Color.TRANSPARENT); |