summaryrefslogtreecommitdiffstats
path: root/core/java/com/android/internal/widget/RotarySelector.java
diff options
context:
space:
mode:
authorKarl Rosaen <krosaen@android.com>2009-09-17 17:21:18 -0700
committerKarl Rosaen <krosaen@android.com>2009-09-17 17:21:18 -0700
commit5fef93b2a827cfafee04d7cfb827262c9b75fd91 (patch)
tree45a51ac9fc7695dfdd98a8047d8e56072b85259f /core/java/com/android/internal/widget/RotarySelector.java
parentf5a68512c3d0624584c3e6da1523863e401e49d0 (diff)
downloadframeworks_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/internal/widget/RotarySelector.java')
-rw-r--r--core/java/com/android/internal/widget/RotarySelector.java26
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);
}