summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchGesture.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java31
3 files changed, 23 insertions, 21 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
index f39d1ecb0585..e48a23f4cd2c 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
@@ -297,6 +297,13 @@ public class PipManager implements BasePipManager {
}
/**
+ * Sets a customized touch gesture that replaces the default one.
+ */
+ public void setTouchGesture(PipTouchGesture gesture) {
+ mTouchHandler.setTouchGesture(gesture);
+ }
+
+ /**
* Sets both shelf visibility and its height.
*/
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchGesture.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchGesture.java
index e8e8a4d3215a..72335dbed115 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchGesture.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchGesture.java
@@ -24,19 +24,19 @@ public abstract class PipTouchGesture {
/**
* Handle the touch down.
*/
- void onDown(PipTouchState touchState) {}
+ public void onDown(PipTouchState touchState) {}
/**
* Handle the touch move, and return whether the event was consumed.
*/
- boolean onMove(PipTouchState touchState) {
+ public boolean onMove(PipTouchState touchState) {
return false;
}
/**
* Handle the touch up, and return whether the gesture was consumed.
*/
- boolean onUp(PipTouchState touchState) {
+ public boolean onUp(PipTouchState touchState) {
return false;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
index 09f163810d27..65cc666d5164 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
@@ -126,8 +126,8 @@ public class PipTouchHandler {
// Touch state
private final PipTouchState mTouchState;
private final FlingAnimationUtils mFlingAnimationUtils;
- private final PipTouchGesture[] mGestures;
private final PipMotionHelper mMotionHelper;
+ private PipTouchGesture mGesture;
// Temp vars
private final Rect mTmpBounds = new Rect();
@@ -185,9 +185,7 @@ public class PipTouchHandler {
mSnapAlgorithm = new PipSnapAlgorithm(mContext);
mFlingAnimationUtils = new FlingAnimationUtils(context.getResources().getDisplayMetrics(),
2.5f);
- mGestures = new PipTouchGesture[] {
- mDefaultMovementGesture
- };
+ mGesture = new DefaultPipTouchGesture();
mMotionHelper = new PipMotionHelper(mContext, mActivityManager, mActivityTaskManager,
mMenuController, mSnapAlgorithm, mFlingAnimationUtils);
mTouchState = new PipTouchState(mViewConfig, mHandler,
@@ -210,6 +208,10 @@ public class PipTouchHandler {
this::onAccessibilityShowMenu, mHandler);
}
+ public void setTouchGesture(PipTouchGesture gesture) {
+ mGesture = gesture;
+ }
+
public void setTouchEnabled(boolean enabled) {
mTouchState.setAllowTouches(enabled);
}
@@ -363,17 +365,12 @@ public class PipTouchHandler {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN: {
mMotionHelper.synchronizePinnedStackBounds();
-
- for (PipTouchGesture gesture : mGestures) {
- gesture.onDown(mTouchState);
- }
+ mGesture.onDown(mTouchState);
break;
}
case MotionEvent.ACTION_MOVE: {
- for (PipTouchGesture gesture : mGestures) {
- if (gesture.onMove(mTouchState)) {
- break;
- }
+ if (mGesture.onMove(mTouchState)) {
+ break;
}
shouldDeliverToMenu = !mTouchState.isDragging();
@@ -384,10 +381,8 @@ public class PipTouchHandler {
// dragging (ie. when the IME shows)
updateMovementBounds(mMenuState);
- for (PipTouchGesture gesture : mGestures) {
- if (gesture.onUp(mTouchState)) {
- break;
- }
+ if (mGesture.onUp(mTouchState)) {
+ break;
}
// Fall through to clean up
@@ -591,7 +586,7 @@ public class PipTouchHandler {
/**
* Gesture controlling normal movement of the PIP.
*/
- private PipTouchGesture mDefaultMovementGesture = new PipTouchGesture() {
+ private class DefaultPipTouchGesture extends PipTouchGesture {
// Whether the PiP was on the left side of the screen at the start of the gesture
private boolean mStartedOnLeft;
private final Point mStartPosition = new Point();
@@ -623,7 +618,7 @@ public class PipTouchHandler {
}
@Override
- boolean onMove(PipTouchState touchState) {
+ public boolean onMove(PipTouchState touchState) {
if (!touchState.isUserInteracting()) {
return false;
}