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 | |
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
-rw-r--r-- | core/java/com/android/internal/widget/multiwaveview/GlowPadView.java | 16 | ||||
-rw-r--r-- | core/res/res/layout/keyguard_glow_pad_view.xml | 3 | ||||
-rwxr-xr-x | core/res/res/values/attrs.xml | 5 |
3 files changed, 20 insertions, 4 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); diff --git a/core/res/res/layout/keyguard_glow_pad_view.xml b/core/res/res/layout/keyguard_glow_pad_view.xml index ef1c133..cfd8160 100644 --- a/core/res/res/layout/keyguard_glow_pad_view.xml +++ b/core/res/res/layout/keyguard_glow_pad_view.xml @@ -42,4 +42,5 @@ prvandroid:feedbackCount="1" prvandroid:vibrationDuration="20" prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius" - prvandroid:pointDrawable="@*android:drawable/ic_lockscreen_glowdot" /> + prvandroid:pointDrawable="@*android:drawable/ic_lockscreen_glowdot" + prvandroid:allowScaling="true" /> diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index bd424b1..f1757f7 100755 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -5484,6 +5484,11 @@ <attr name="magneticTargets" format="boolean" /> <attr name="gravity" /> + + <!-- Determine whether the glow pad is allowed to scale to fit the bounds indicated + by its parent. If this is set to false, no scaling will occur. If this is set to true + scaling will occur to fit for any axis in which gravity is set to center. --> + <attr name="allowScaling" format="boolean" /> </declare-styleable> <!-- =============================== --> |