summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/statusbar/policy
diff options
context:
space:
mode:
authorJens Doll <jens.doll@gmail.com>2013-03-30 21:38:42 +0100
committerJens Doll <jens.doll@gmail.com>2013-04-05 18:46:29 +0200
commite0251533f3d153a5a1d99e539433a48a8cb4a885 (patch)
treeff4516ca4e1e3530d2ac5f7712927ca235e6fe9d /packages/SystemUI/src/com/android/systemui/statusbar/policy
parent94ba14c99e85b260e831619b339d728e6e486998 (diff)
downloadframeworks_base-e0251533f3d153a5a1d99e539433a48a8cb4a885.zip
frameworks_base-e0251533f3d153a5a1d99e539433a48a8cb4a885.tar.gz
frameworks_base-e0251533f3d153a5a1d99e539433a48a8cb4a885.tar.bz2
Improving pie control's user interaction
User feedback showed that it is sometimes difficult to interact with pie controls. This commit adds some tweaks to how pie controls react on user touch events. This changes: * Pie trigger on LEFT and RIGHT are now more forgiving in the initial phase of a swipe. (This should reduce problems when trying to activate the pie with a thumb.) * Pie items are now more sloppy when it comes to focus. Patch Set #2: * Removed sloppy focus. Change-Id: Ib21556ed7f7ff9c6cdbcd1760e94a17c8534706a
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/statusbar/policy')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/PieController.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PieController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PieController.java
index 45c8a13..bffaff5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PieController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PieController.java
@@ -145,6 +145,7 @@ public class PieController implements BaseStatusBar.NavigationBarCallback,
public static float sDistance;
private float initialX = 0;
private float initialY = 0;
+ private float gracePeriod = 0;
private Tracker(Position position) {
this.position = position;
@@ -153,6 +154,14 @@ public class PieController implements BaseStatusBar.NavigationBarCallback,
public void start(MotionEvent event) {
initialX = event.getX();
initialY = event.getY();
+ switch (position) {
+ case LEFT:
+ gracePeriod = initialX + sDistance / 3.0f;
+ break;
+ case RIGHT:
+ gracePeriod = initialX - sDistance / 3.0f;
+ break;
+ }
active = true;
}
@@ -168,6 +177,9 @@ public class PieController implements BaseStatusBar.NavigationBarCallback,
boolean loaded = false;
switch (position) {
case LEFT:
+ if (x < gracePeriod) {
+ initialY = y;
+ }
if (initialY - y < sDistance && y - initialY < sDistance) {
if (x - initialX <= sDistance) {
return false;
@@ -192,6 +204,9 @@ public class PieController implements BaseStatusBar.NavigationBarCallback,
}
break;
case RIGHT:
+ if (x > gracePeriod) {
+ initialY = y;
+ }
if (initialY - y < sDistance && y - initialY < sDistance) {
if (initialX - x <= sDistance) {
return false;
@@ -392,7 +407,7 @@ public class PieController implements BaseStatusBar.NavigationBarCallback,
view.setMinimumHeight(minimumImageSize);
LayoutParams lp = new LayoutParams(minimumImageSize, minimumImageSize);
view.setLayoutParams(lp);
- PieItem item = new PieItem(mContext, mPieContainer, width, type, view);
+ PieItem item = new PieItem(mContext, mPieContainer, 0, width, type, view);
item.setOnClickListener(this);
return item;
}