summaryrefslogtreecommitdiffstats
path: root/core/java/com/android
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2012-11-07 14:44:11 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-11-07 14:44:12 -0800
commit3e66286f7cf33ef13fd9f4f033816b84828c1f2b (patch)
tree9f1cf9fbf48e5976984259b2108ad53b4c2251f3 /core/java/com/android
parentc717d110ae5c2531a75420386f99ad8957732dbf (diff)
parentf988bdfbaebe8ee94f6459f3c8d964467f2c62c9 (diff)
downloadframeworks_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.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);