diff options
author | Jens Doll <jens.doll@gmail.com> | 2013-03-30 21:38:42 +0100 |
---|---|---|
committer | Jens Doll <jens.doll@gmail.com> | 2013-04-05 18:46:29 +0200 |
commit | e0251533f3d153a5a1d99e539433a48a8cb4a885 (patch) | |
tree | ff4516ca4e1e3530d2ac5f7712927ca235e6fe9d /packages/SystemUI/src/com/android/systemui/statusbar/policy | |
parent | 94ba14c99e85b260e831619b339d728e6e486998 (diff) | |
download | frameworks_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.java | 17 |
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; } |