summaryrefslogtreecommitdiffstats
path: root/core/java/com/android
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2012-11-07 14:28:23 -0800
committerAdam Cohen <adamcohen@google.com>2012-11-07 14:43:33 -0800
commitf988bdfbaebe8ee94f6459f3c8d964467f2c62c9 (patch)
tree6616edd8b0e8b0c6a67a2f76312feacd0a90849b /core/java/com/android
parent4eb36cfdcabb51f67a887d867de9559966606d86 (diff)
downloadframeworks_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/android')
-rw-r--r--core/java/com/android/internal/widget/multiwaveview/GlowPadView.java16
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);