说明
Android6.0 系统支持Top, Bottom, Right手势检测, 所以我们根据原生的功能添加Left手势. 并且添加边缘Bar功能吧(仿大厂小米手势动作)
负责检测手势
SDK/frameworks/base/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java
负责处理手势事件
SDK/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
调试图
修改源码
- 添加手势检测
diff --git a/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java b/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java
old mode 100644
new mode 100755
index e4bd21d..9b1d043
--- a/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java
+++ b/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java
@@ -32,7 +32,7 @@ import android.widget.OverScroller;
*/
public class SystemGesturesPointerEventListener implements PointerEventListener {
private static final String TAG = "SystemGestures";
- private static final boolean DEBUG = false;
+ private static final boolean DEBUG = true;
private static final long SWIPE_TIMEOUT_MS = 500;
private static final int MAX_TRACKED_POINTERS = 32; // max per input system
private static final int UNTRACKED_POINTER = -1;
@@ -42,6 +42,7 @@ public class SystemGesturesPointerEventListener implements PointerEventListener
private static final int SWIPE_FROM_TOP = 1;
private static final int SWIPE_FROM_BOTTOM = 2;
private static final int SWIPE_FROM_RIGHT = 3;
+ private static final int SWIPE_FROM_LEFT = 4;
private final Context mContext;
private final int mSwipeStartThreshold;
@@ -121,6 +122,9 @@ public class SystemGesturesPointerEventListener implements PointerEventListener
} else if (swipe == SWIPE_FROM_RIGHT) {
if (DEBUG) Slog.d(TAG, "Firing onSwipeFromRight");
mCallbacks.onSwipeFromRight();
+ } else if (swipe == SWIPE_FROM_LEFT) {
+ if (DEBUG) Slog.d(TAG, "Firing onSwipeFromLeft");
+ mCallbacks.onSwipeFromLeft();
}
}
break;
@@ -207,6 +211,11 @@ public class SystemGesturesPointerEventListener implements PointerEventListener
&& x < fromX - mSwipeDistanceThreshold
&& elapsed < SWIPE_TIMEOUT_MS) {
return SWIPE_FROM_RIGHT;
+ }
+ if (fromX <= mSwipeStartThreshold
+ && x > fromX + mSwipeDistanceThreshold
+ && elapsed < SWIPE_TIMEOUT_MS) {
+ return SWIPE_FROM_LEFT;
}
return SWIPE_NONE;
}
@@ -244,6 +253,7 @@ public class SystemGesturesPointerEventListener implements PointerEventListener
void onSwipeFromTop();
void onSwipeFromBottom();
void onSwipeFromRight();
+ void onSwipeFromLeft();
void onFling(int durationMs);
void onDown();
void onUpOrCancel();
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 8d2abc5..980f742 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -1517,6 +1517,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
requestTransientBars(mNavigationBar);
}
}
+ @Override
+ public void onSwipeFromLeft() {
+ // dothing
+ }
@Override
public void onFling(int duration) {
if (mPowerManagerInternal != null) {
- 添加手势动作
git clone https://github.com/iFinelioTower/CSDN -b systemui2