diff options
| author | Jaineel Mehta <jaineelm@google.com> | 2020-03-12 18:23:14 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-03-12 18:23:14 +0000 |
| commit | 1a183578537ad82023b2acdaf97e97ad185cefb2 (patch) | |
| tree | 60d763aa21a1353e674550b604a5499c42cc0a10 /core/java | |
| parent | 1eb9db6ab8e11814069cb1e2534b872edabad6b5 (diff) | |
| parent | 5e7097b21ea3841550044b933238f273be7cf2b6 (diff) | |
Merge "Revert "WindowInsetsController: Address API feedback"" into rvc-dev
Diffstat (limited to 'core/java')
4 files changed, 50 insertions, 52 deletions
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index b1da4cc60ad1..607886f3b13b 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -52,6 +52,7 @@ import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.Preconditions; import java.io.PrintWriter; import java.lang.annotation.Retention; @@ -493,12 +494,13 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation PendingControlRequest pendingRequest = mPendingImeControlRequest; mPendingImeControlRequest = null; mHandler.removeCallbacks(mPendingControlTimeout); - controlAnimationUnchecked( - pendingRequest.types, pendingRequest.cancellationSignal, + CancellationSignal cancellationSignal = controlAnimationUnchecked( + pendingRequest.types, pendingRequest.listener, mFrame, true /* fromIme */, pendingRequest.durationMs, pendingRequest.interpolator, false /* fade */, pendingRequest.animationType, pendingRequest.layoutInsetsDuringAnimation); + pendingRequest.cancellationSignal.setOnCancelListener(cancellationSignal::cancel); return; } @@ -544,26 +546,24 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } @Override - public void controlWindowInsetsAnimation(@InsetsType int types, long durationMillis, + public CancellationSignal controlWindowInsetsAnimation(@InsetsType int types, long durationMs, @Nullable Interpolator interpolator, - @Nullable CancellationSignal cancellationSignal, @NonNull WindowInsetsAnimationControlListener listener) { - controlWindowInsetsAnimation(types, cancellationSignal, listener, - false /* fromIme */, durationMillis, interpolator, ANIMATION_TYPE_USER); + return controlWindowInsetsAnimation(types, listener, false /* fromIme */, durationMs, + interpolator, ANIMATION_TYPE_USER); } - private void controlWindowInsetsAnimation(@InsetsType int types, - @Nullable CancellationSignal cancellationSignal, - WindowInsetsAnimationControlListener listener, - boolean fromIme, long durationMs, @Nullable Interpolator interpolator, - @AnimationType int animationType) { + private CancellationSignal controlWindowInsetsAnimation(@InsetsType int types, + WindowInsetsAnimationControlListener listener, boolean fromIme, long durationMs, + @Nullable Interpolator interpolator, @AnimationType int animationType) { if (!checkDisplayFramesForControlling()) { listener.onCancelled(); - return; + CancellationSignal cancellationSignal = new CancellationSignal(); + cancellationSignal.cancel(); + return cancellationSignal; } - controlAnimationUnchecked(types, cancellationSignal, listener, mFrame, fromIme, durationMs, - interpolator, false /* fade */, animationType, - getLayoutInsetsDuringAnimationMode(types)); + return controlAnimationUnchecked(types, listener, mFrame, fromIme, durationMs, interpolator, + false /* fade */, animationType, getLayoutInsetsDuringAnimationMode(types)); } private boolean checkDisplayFramesForControlling() { @@ -573,16 +573,17 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation return mState.getDisplayFrame().equals(mFrame); } - private void controlAnimationUnchecked(@InsetsType int types, - @Nullable CancellationSignal cancellationSignal, + private CancellationSignal controlAnimationUnchecked(@InsetsType int types, WindowInsetsAnimationControlListener listener, Rect frame, boolean fromIme, long durationMs, Interpolator interpolator, boolean fade, @AnimationType int animationType, @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation) { + CancellationSignal cancellationSignal = new CancellationSignal(); if (types == 0) { // nothing to animate. listener.onCancelled(); - return; + cancellationSignal.cancel(); + return cancellationSignal; } cancelExistingControllers(types); mLastStartedAnimTypes |= types; @@ -602,28 +603,26 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation interpolator, animationType, layoutInsetsDuringAnimation, cancellationSignal); mPendingImeControlRequest = request; mHandler.postDelayed(mPendingControlTimeout, PENDING_CONTROL_TIMEOUT_MS); - if (cancellationSignal != null) { - cancellationSignal.setOnCancelListener(() -> { - if (mPendingImeControlRequest == request) { - abortPendingImeControlRequest(); - } - }); - } - return; + cancellationSignal.setOnCancelListener(() -> { + if (mPendingImeControlRequest == request) { + abortPendingImeControlRequest(); + } + }); + return cancellationSignal; } if (typesReady == 0) { listener.onCancelled(); - return; + cancellationSignal.cancel(); + return cancellationSignal; } final InsetsAnimationControlImpl controller = new InsetsAnimationControlImpl(controls, frame, mState, listener, typesReady, this, durationMs, interpolator, fade, layoutInsetsDuringAnimation, animationType); mRunningAnimations.add(new RunningAnimation(controller, animationType)); - if (cancellationSignal != null) { - cancellationSignal.setOnCancelListener(controller::onCancelled); - } + cancellationSignal.setOnCancelListener(controller::onCancelled); + return cancellationSignal; } /** @@ -884,8 +883,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation // Show/hide animations always need to be relative to the display frame, in order that shown // and hidden state insets are correct. controlAnimationUnchecked( - types, new CancellationSignal(), listener, mState.getDisplayFrame(), fromIme, - listener.getDurationMs(), + types, listener, mState.getDisplayFrame(), fromIme, listener.getDurationMs(), INTERPOLATOR, true /* fade */, show ? ANIMATION_TYPE_SHOW : ANIMATION_TYPE_HIDE, show ? LAYOUT_INSETS_DURING_ANIMATION_SHOWN : LAYOUT_INSETS_DURING_ANIMATION_HIDDEN); diff --git a/core/java/android/view/PendingInsetsController.java b/core/java/android/view/PendingInsetsController.java index e8d9bb50c290..7f3641803770 100644 --- a/core/java/android/view/PendingInsetsController.java +++ b/core/java/android/view/PendingInsetsController.java @@ -16,8 +16,6 @@ package android.view; -import android.annotation.NonNull; -import android.annotation.Nullable; import android.os.CancellationSignal; import android.view.WindowInsets.Type.InsetsType; import android.view.animation.Interpolator; @@ -62,6 +60,21 @@ public class PendingInsetsController implements WindowInsetsController { } @Override + public CancellationSignal controlWindowInsetsAnimation(int types, long durationMillis, + Interpolator interpolator, + WindowInsetsAnimationControlListener listener) { + if (mReplayedInsetsController != null) { + return mReplayedInsetsController.controlWindowInsetsAnimation(types, durationMillis, + interpolator, listener); + } else { + listener.onCancelled(); + CancellationSignal cancellationSignal = new CancellationSignal(); + cancellationSignal.cancel(); + return cancellationSignal; + } + } + + @Override public void setSystemBarsAppearance(int appearance, int mask) { if (mReplayedInsetsController != null) { mReplayedInsetsController.setSystemBarsAppearance(appearance, mask); @@ -163,19 +176,6 @@ public class PendingInsetsController implements WindowInsetsController { mReplayedInsetsController = null; } - @Override - public void controlWindowInsetsAnimation(@InsetsType int types, long durationMillis, - @Nullable Interpolator interpolator, - CancellationSignal cancellationSignal, - @NonNull WindowInsetsAnimationControlListener listener) { - if (mReplayedInsetsController != null) { - mReplayedInsetsController.controlWindowInsetsAnimation(types, durationMillis, - interpolator, cancellationSignal, listener); - } else { - listener.onCancelled(); - } - } - private interface PendingRequest { void replay(InsetsController controller); } diff --git a/core/java/android/view/WindowInsetsAnimationControlListener.java b/core/java/android/view/WindowInsetsAnimationControlListener.java index faaf9203af32..701bd3158b1e 100644 --- a/core/java/android/view/WindowInsetsAnimationControlListener.java +++ b/core/java/android/view/WindowInsetsAnimationControlListener.java @@ -16,6 +16,7 @@ package android.view; +import android.annotation.Hide; import android.annotation.NonNull; import android.view.WindowInsets.Type.InsetsType; import android.view.inputmethod.EditorInfo; diff --git a/core/java/android/view/WindowInsetsController.java b/core/java/android/view/WindowInsetsController.java index 0282ecac8920..2ad557e6d9f6 100644 --- a/core/java/android/view/WindowInsetsController.java +++ b/core/java/android/view/WindowInsetsController.java @@ -156,17 +156,16 @@ public interface WindowInsetsController { * calculate {@link WindowInsetsAnimation#getInterpolatedFraction()}. * @param listener The {@link WindowInsetsAnimationControlListener} that gets called when the * windows are ready to be controlled, among other callbacks. - * @param cancellationSignal A cancellation signal that the caller can use to cancel the - * request to obtain control, or once they have control, to cancel the - * control. + * @return A cancellation signal that the caller can use to cancel the request to obtain + * control, or once they have control, to cancel the control. * @see WindowInsetsAnimation#getFraction() * @see WindowInsetsAnimation#getInterpolatedFraction() * @see WindowInsetsAnimation#getInterpolator() * @see WindowInsetsAnimation#getDurationMillis() */ - void controlWindowInsetsAnimation(@InsetsType int types, long durationMillis, + @NonNull + CancellationSignal controlWindowInsetsAnimation(@InsetsType int types, long durationMillis, @Nullable Interpolator interpolator, - @Nullable CancellationSignal cancellationSignal, @NonNull WindowInsetsAnimationControlListener listener); /** |
