summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-01-14 21:21:06 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-01-14 21:21:06 +0000
commit4663bdc7617681882ea8d0fe49df5e4ef180da45 (patch)
treeef293542e4ea5266228c758008a570efa2fb55e7
parent5c44f55a927cf8e737c97f47867783f6012dd01b (diff)
parentd19771c9aff8951a451a235d8368a0ea53da57cb (diff)
Merge "Add double tap callback for divider bar"
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java15
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java10
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java6
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java6
4 files changed, 37 insertions, 0 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java
index 707747b3889b..e17a943b5cb0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java
@@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_SLIPPERY;
import android.content.Context;
import android.util.AttributeSet;
+import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.SurfaceControlViewHost;
import android.view.VelocityTracker;
@@ -54,6 +55,7 @@ public class DividerView extends FrameLayout implements View.OnTouchListener {
private VelocityTracker mVelocityTracker;
private boolean mMoving;
private int mStartPos;
+ private GestureDetector mDoubleTapDetector;
public DividerView(@NonNull Context context) {
super(context);
@@ -88,6 +90,7 @@ public class DividerView extends FrameLayout implements View.OnTouchListener {
mBackground = findViewById(R.id.docked_divider_background);
mTouchElevation = getResources().getDimensionPixelSize(
R.dimen.docked_stack_divider_lift_elevation);
+ mDoubleTapDetector = new GestureDetector(getContext(), new DoubleTapListener());
setOnTouchListener(this);
}
@@ -136,6 +139,8 @@ public class DividerView extends FrameLayout implements View.OnTouchListener {
mSplitLayout.snapToTarget(position, snapTarget);
break;
}
+
+ mDoubleTapDetector.onTouchEvent(event);
return true;
}
@@ -200,4 +205,14 @@ public class DividerView extends FrameLayout implements View.OnTouchListener {
private boolean isLandscape() {
return getResources().getConfiguration().orientation == ORIENTATION_LANDSCAPE;
}
+
+ private class DoubleTapListener extends GestureDetector.SimpleOnGestureListener {
+ @Override
+ public boolean onDoubleTap(MotionEvent e) {
+ if (mSplitLayout != null) {
+ mSplitLayout.onDoubleTappedDivider();
+ }
+ return false;
+ }
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
index 9721d302a98a..d77def54c87e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
@@ -201,6 +201,10 @@ public class SplitLayout {
}
}
+ void onDoubleTappedDivider() {
+ mLayoutChangeListener.onDoubleTappedDivider();
+ }
+
/**
* Returns {@link DividerSnapAlgorithm.SnapTarget} which matches passing position and velocity.
*/
@@ -249,9 +253,15 @@ public class SplitLayout {
public interface LayoutChangeListener {
/** Calls when dismissing split. */
void onSnappedToDismiss(boolean snappedToEnd);
+
/** Calls when the bounds is changing due to animation or dragging divider bar. */
void onBoundsChanging(SplitLayout layout);
+
/** Calls when the target bounds changed. */
void onBoundsChanged(SplitLayout layout);
+
+ /** Calls when user double tapped on the divider bar. */
+ default void onDoubleTappedDivider() {
+ }
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index 0c6edf10ba94..bdac37ab737e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -271,6 +271,12 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener,
}
@Override
+ public void onDoubleTappedDivider() {
+ setSideStagePosition(mSideStagePosition == SIDE_STAGE_POSITION_TOP_OR_LEFT
+ ? SIDE_STAGE_POSITION_BOTTOM_OR_RIGHT : SIDE_STAGE_POSITION_TOP_OR_LEFT);
+ }
+
+ @Override
public void onBoundsChanged(SplitLayout layout) {
final SurfaceControl dividerLeash = mSplitLayout.getDividerLeash();
if (dividerLeash == null) return;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java
index 0d1c6f93d8e3..5821eed6f611 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java
@@ -83,6 +83,12 @@ public class SplitLayoutTests extends ShellTestCase {
}
@Test
+ public void testOnDoubleTappedDivider() {
+ mSplitLayout.onDoubleTappedDivider();
+ verify(mLayoutChangeListener).onDoubleTappedDivider();
+ }
+
+ @Test
@UiThreadTest
public void testSnapToDismissTarget() {
// verify it callbacks properly when the snap target indicates dismissing split.