Merge "1/ Add onStartTransition() callback for SYSUI_STATE_ONE_HANDED_ACTIVE" into sc-dev

This commit is contained in:
Bill Lin
2021-04-22 00:40:23 +00:00
committed by Android (Google) Code Review
3 changed files with 26 additions and 3 deletions

View File

@@ -82,6 +82,14 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
@Override
public void onOneHandedAnimationStart(
OneHandedAnimationController.OneHandedTransitionAnimator animator) {
final boolean isEntering = animator.getTransitionDirection()
== TRANSITION_DIRECTION_TRIGGER;
if (!mTransitionCallbacks.isEmpty()) {
for (int i = mTransitionCallbacks.size() - 1; i >= 0; i--) {
final OneHandedTransitionCallback cb = mTransitionCallbacks.get(i);
cb.onStartTransition(isEntering);
}
}
}
@Override
@@ -266,11 +274,12 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
mLastVisualDisplayBounds.offsetTo(0,
direction == TRANSITION_DIRECTION_TRIGGER ? offset : 0);
for (int i = mTransitionCallbacks.size() - 1; i >= 0; i--) {
final OneHandedTransitionCallback callback = mTransitionCallbacks.get(i);
final OneHandedTransitionCallback cb = mTransitionCallbacks.get(i);
cb.onStartTransition(false /* isTransitioning */);
if (direction == TRANSITION_DIRECTION_TRIGGER) {
callback.onStartFinished(getLastVisualDisplayBounds());
cb.onStartFinished(getLastVisualDisplayBounds());
} else {
callback.onStopFinished(getLastVisualDisplayBounds());
cb.onStopFinished(getLastVisualDisplayBounds());
}
}
}

View File

@@ -23,6 +23,12 @@ import android.graphics.Rect;
* touch region.(e.g: one handed activated, user tap out regions of displayArea to stop one handed)
*/
public interface OneHandedTransitionCallback {
/**
* Called when one handed mode entering or exiting transition starting
*/
default void onStartTransition(boolean isEntering) {
}
/**
* Called when start one handed transition finished
*/

View File

@@ -235,6 +235,14 @@ public final class WMShell extends SystemUI
oneHanded.setThreeButtonModeEnabled(currentMode == NAV_BAR_MODE_3BUTTON);
oneHanded.registerTransitionCallback(new OneHandedTransitionCallback() {
@Override
public void onStartTransition(boolean isEntering) {
mSysUiMainExecutor.execute(() -> {
mSysUiState.setFlag(SYSUI_STATE_ONE_HANDED_ACTIVE,
true).commitUpdate(DEFAULT_DISPLAY);
});
}
@Override
public void onStartFinished(Rect bounds) {
mSysUiMainExecutor.execute(() -> {