diff options
author | Adam Cohen <adamcohen@google.com> | 2012-11-07 14:44:11 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-11-07 14:44:12 -0800 |
commit | 3e66286f7cf33ef13fd9f4f033816b84828c1f2b (patch) | |
tree | 9f1cf9fbf48e5976984259b2108ad53b4c2251f3 /core/java/com/android | |
parent | c717d110ae5c2531a75420386f99ad8957732dbf (diff) | |
parent | f988bdfbaebe8ee94f6459f3c8d964467f2c62c9 (diff) | |
download | frameworks_base-3e66286f7cf33ef13fd9f4f033816b84828c1f2b.zip frameworks_base-3e66286f7cf33ef13fd9f4f033816b84828c1f2b.tar.gz frameworks_base-3e66286f7cf33ef13fd9f4f033816b84828c1f2b.tar.bz2 |
Merge "Fixing up glowpad scaling issues (issue 7494378)" into jb-mr1-lockscreen-dev
Diffstat (limited to 'core/java/com/android')
-rw-r--r-- | core/java/com/android/internal/widget/multiwaveview/GlowPadView.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java index e4d6d8b..f2ad0ef 100644 --- a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java +++ b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java @@ -114,6 +114,7 @@ public class GlowPadView extends View { private int mMaxTargetHeight; private int mMaxTargetWidth; private float mRingScaleFactor = 1f; + private boolean mAllowScaling; private float mOuterRadius = 0.0f; private float mSnapMargin = 0.0f; @@ -222,6 +223,7 @@ public class GlowPadView extends View { mVibrationDuration); mFeedbackCount = a.getInt(R.styleable.GlowPadView_feedbackCount, mFeedbackCount); + mAllowScaling = a.getBoolean(R.styleable.GlowPadView_allowScaling, false); TypedValue handle = a.peekValue(R.styleable.GlowPadView_handleDrawable); mHandleDrawable = new TargetDrawable(res, handle != null ? handle.resourceId : 0); mHandleDrawable.setState(TargetDrawable.STATE_INACTIVE); @@ -793,8 +795,12 @@ public class GlowPadView extends View { } private void updateGlowPosition(float x, float y) { - mPointCloud.glowManager.setX(x); - mPointCloud.glowManager.setY(y); + float dx = x - mOuterRing.getX(); + float dy = y - mOuterRing.getY(); + dx *= 1f / mRingScaleFactor; + dy *= 1f / mRingScaleFactor; + mPointCloud.glowManager.setX(mOuterRing.getX() + dx); + mPointCloud.glowManager.setY(mOuterRing.getY() + dy); } private void handleDown(MotionEvent event) { @@ -863,7 +869,7 @@ public class GlowPadView extends View { if (mDragging) { // For multiple targets, snap to the one that matches - final float snapRadius = mOuterRadius - mSnapMargin; + final float snapRadius = mRingScaleFactor * mOuterRadius - mSnapMargin; final float snapDistance2 = snapRadius * snapRadius; // Find first target in range for (int i = 0; i < ntargets; i++) { @@ -1034,6 +1040,10 @@ public class GlowPadView extends View { */ private float computeScaleFactor(int desiredWidth, int desiredHeight, int actualWidth, int actualHeight) { + + // Return unity if scaling is not allowed. + if (!mAllowScaling) return 1f; + final int layoutDirection = getLayoutDirection(); final int absoluteGravity = Gravity.getAbsoluteGravity(mGravity, layoutDirection); |