diff options
author | Adam Cohen <adamcohen@google.com> | 2012-11-07 14:28:23 -0800 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2012-11-07 14:43:33 -0800 |
commit | f988bdfbaebe8ee94f6459f3c8d964467f2c62c9 (patch) | |
tree | 6616edd8b0e8b0c6a67a2f76312feacd0a90849b /core/java/com | |
parent | 4eb36cfdcabb51f67a887d867de9559966606d86 (diff) | |
download | frameworks_base-f988bdfbaebe8ee94f6459f3c8d964467f2c62c9.zip frameworks_base-f988bdfbaebe8ee94f6459f3c8d964467f2c62c9.tar.gz frameworks_base-f988bdfbaebe8ee94f6459f3c8d964467f2c62c9.tar.bz2 |
Fixing up glowpad scaling issues (issue 7494378)
Change-Id: I55c0f7a3774d42d4f5893b12bc0c08690268e351
Diffstat (limited to 'core/java/com')
-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); |