diff options
author | Karl Rosaen <krosaen@android.com> | 2009-09-17 17:21:18 -0700 |
---|---|---|
committer | Karl Rosaen <krosaen@android.com> | 2009-09-17 17:21:18 -0700 |
commit | 5fef93b2a827cfafee04d7cfb827262c9b75fd91 (patch) | |
tree | 45a51ac9fc7695dfdd98a8047d8e56072b85259f /core/java/com/android | |
parent | f5a68512c3d0624584c3e6da1523863e401e49d0 (diff) | |
download | frameworks_base-5fef93b2a827cfafee04d7cfb827262c9b75fd91.zip frameworks_base-5fef93b2a827cfafee04d7cfb827262c9b75fd91.tar.gz frameworks_base-5fef93b2a827cfafee04d7cfb827262c9b75fd91.tar.bz2 |
Some tweaks to the rotary lock widget.
- don't show arrows above widget when in resting state
- don't show other icon once you press one (e.g don't show silent mode icon when you are pressing the lock icon)
- wider target for triggering action
Diffstat (limited to 'core/java/com/android')
-rw-r--r-- | core/java/com/android/internal/widget/RotarySelector.java | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/core/java/com/android/internal/widget/RotarySelector.java b/core/java/com/android/internal/widget/RotarySelector.java index aff92b8..712f1bf 100644 --- a/core/java/com/android/internal/widget/RotarySelector.java +++ b/core/java/com/android/internal/widget/RotarySelector.java @@ -106,6 +106,11 @@ public class RotarySelector extends View { private static final int EDGE_PADDING_DIP = 9; /** + * How far from the edge of the screen the user must drag to trigger the event. + */ + private static final int EDGE_TRIGGER_DIP = 65; + + /** * Dimensions of arc in background drawable. */ static final int OUTER_ROTARY_RADIUS_DIP = 390; @@ -113,12 +118,12 @@ public class RotarySelector extends View { private static final int ANIMATION_DURATION_MILLIS = 300; private static final boolean DRAW_CENTER_DIMPLE = false; + private int mEdgeTriggerThresh; public RotarySelector(Context context) { this(context, null); } - /** * Constructor used when this widget is created from a layout file. */ @@ -148,6 +153,8 @@ public class RotarySelector extends View { mArrowLongRight.setBounds(0, 0, arrowW, arrowH); mInterpolator = new AccelerateInterpolator(); + + mEdgeTriggerThresh = (int) (mDensity * EDGE_TRIGGER_DIP); } /** @@ -252,7 +259,6 @@ public class RotarySelector extends View { } } - // Background: final int backgroundW = mBackground.getIntrinsicWidth(); final int backgroundH = mBackground.getIntrinsicHeight(); @@ -268,7 +274,7 @@ public class RotarySelector extends View { Drawable currentArrow; switch (mGrabbedState) { case NOTHING_GRABBED: - currentArrow = mArrowShortLeftAndRight; + currentArrow = null; //mArrowShortLeftAndRight; break; case LEFT_HANDLE_GRABBED: currentArrow = mArrowLongLeft; @@ -279,7 +285,7 @@ public class RotarySelector extends View { default: throw new IllegalStateException("invalid mGrabbedState: " + mGrabbedState); } - currentArrow.draw(canvas); + if (currentArrow != null) currentArrow.draw(canvas); // debug: draw circle that should match the outer arc (good sanity check) // mPaint.setColor(Color.RED); @@ -300,7 +306,9 @@ public class RotarySelector extends View { xOffset); drawCentered(mDimple, canvas, xOffset, drawableY + bgTop); - drawCentered(mLeftHandleIcon, canvas, xOffset, drawableY + bgTop); + if (mGrabbedState != RIGHT_HANDLE_GRABBED) { + drawCentered(mLeftHandleIcon, canvas, xOffset, drawableY + bgTop); + } } if (DRAW_CENTER_DIMPLE) { @@ -323,7 +331,9 @@ public class RotarySelector extends View { xOffset); drawCentered(mDimple, canvas, xOffset, drawableY + bgTop); - drawCentered(mRightHandleIcon, canvas, xOffset, drawableY + bgTop); + if (mGrabbedState != LEFT_HANDLE_GRABBED) { + drawCentered(mRightHandleIcon, canvas, xOffset, drawableY + bgTop); + } } if (mAnimating) invalidate(); @@ -407,14 +417,14 @@ public class RotarySelector extends View { if (mGrabbedState == LEFT_HANDLE_GRABBED) { mTouchDragOffset = eventX - mLeftHandleX; invalidate(); - if (eventX >= mRightHandleX - EDGE_PADDING_DIP && !mTriggered) { + if (eventX >= getRight() - mEdgeTriggerThresh && !mTriggered) { mTriggered = true; mFrozen = dispatchTriggerEvent(OnDialTriggerListener.LEFT_HANDLE); } } else if (mGrabbedState == RIGHT_HANDLE_GRABBED) { mTouchDragOffset = eventX - mRightHandleX; invalidate(); - if (eventX <= mLeftHandleX + EDGE_PADDING_DIP && !mTriggered) { + if (eventX <= mEdgeTriggerThresh && !mTriggered) { mTriggered = true; mFrozen = dispatchTriggerEvent(OnDialTriggerListener.RIGHT_HANDLE); } |