summaryrefslogtreecommitdiff
path: root/core/java/android/view/WindowInsetsController.java
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2020-01-20 17:24:51 +0100
committerJorim Jaggi <jjaggi@google.com>2020-01-23 00:36:28 +0100
commitdd3304ec3bb7ca651b79a2878149b47b95e1e521 (patch)
tree277241400e4127f0d3fa277899949ca514ca54ad /core/java/android/view/WindowInsetsController.java
parent0da8fd165fed21f26b2b10ddcf4bd1a89d9981c3 (diff)
Fix fraction, and other cleanup
Fraction is now from animation start to end state. This makes it more in line with other animation fraction meaning. Also, the app can figure out the animation direction on its own by inspecting the visibility state when the animation gets prepared. Also fix some other stuff in WindowInsetsAnimationCallback. Test: CTS coming soon Bug: 118118435 Change-Id: I81d36159817719a9b0ee25bb78cfbfddc2029270
Diffstat (limited to 'core/java/android/view/WindowInsetsController.java')
-rw-r--r--core/java/android/view/WindowInsetsController.java39
1 files changed, 32 insertions, 7 deletions
diff --git a/core/java/android/view/WindowInsetsController.java b/core/java/android/view/WindowInsetsController.java
index f292ca4facbf..3bb6cfbbd7f2 100644
--- a/core/java/android/view/WindowInsetsController.java
+++ b/core/java/android/view/WindowInsetsController.java
@@ -20,8 +20,11 @@ import static android.view.WindowInsets.Type.ime;
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.graphics.Insets;
import android.view.WindowInsets.Type.InsetsType;
+import android.view.WindowInsetsAnimationCallback.InsetsAnimation;
+import android.view.animation.Interpolator;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -148,29 +151,51 @@ public interface WindowInsetsController {
* the position of the windows in the system causing insets directly.
*
* @param types The {@link InsetsType}s the application has requested to control.
- * @param durationMillis duration of animation in
+ * @param durationMillis Duration of animation in
* {@link java.util.concurrent.TimeUnit#MILLISECONDS}, or -1 if the
- * animation doesn't have a predetermined duration.
+ * animation doesn't have a predetermined duration.T his value will be
+ * passed to {@link InsetsAnimation#getDurationMillis()}
+ * @param interpolator The interpolator used for this animation, or {@code null} if this
+ * animation doesn't follow an interpolation curve. This value will be
+ * passed to {@link InsetsAnimation#getInterpolator()} and used to calculate
+ * {@link InsetsAnimation#getInterpolatedFraction()}.
* @param listener The {@link WindowInsetsAnimationControlListener} that gets called when the
* windows are ready to be controlled, among other callbacks.
+ *
+ * @see InsetsAnimation#getFraction()
+ * @see InsetsAnimation#getInterpolatedFraction()
+ * @see InsetsAnimation#getInterpolator()
+ * @see InsetsAnimation#getDurationMillis()
* @hide
*/
void controlWindowInsetsAnimation(@InsetsType int types, long durationMillis,
+ @Nullable Interpolator interpolator,
@NonNull WindowInsetsAnimationControlListener listener);
/**
* Lets the application control the animation for showing the IME in a frame-by-frame manner by
* modifying the position of the IME when it's causing insets.
*
- * @param durationMillis duration of the animation in
+ * @param durationMillis Duration of the animation in
* {@link java.util.concurrent.TimeUnit#MILLISECONDS}, or -1 if the
- * animation doesn't have a predetermined duration.
+ * animation doesn't have a predetermined duration. This value will be
+ * passed to {@link InsetsAnimation#getDurationMillis()}
+ * @param interpolator The interpolator used for this animation, or {@code null} if this
+ * animation doesn't follow an interpolation curve. This value will be
+ * passed to {@link InsetsAnimation#getInterpolator()} and used to calculate
+ * {@link InsetsAnimation#getInterpolatedFraction()}.
* @param listener The {@link WindowInsetsAnimationControlListener} that gets called when the
* IME are ready to be controlled, among other callbacks.
+ *
+ * @see InsetsAnimation#getFraction()
+ * @see InsetsAnimation#getInterpolatedFraction()
+ * @see InsetsAnimation#getInterpolator()
+ * @see InsetsAnimation#getDurationMillis()
*/
default void controlInputMethodAnimation(long durationMillis,
+ @Nullable Interpolator interpolator,
@NonNull WindowInsetsAnimationControlListener listener) {
- controlWindowInsetsAnimation(ime(), durationMillis, listener);
+ controlWindowInsetsAnimation(ime(), durationMillis, interpolator, listener);
}
/**
@@ -181,7 +206,7 @@ public interface WindowInsetsController {
* the event by observing {@link View#onApplyWindowInsets} and checking visibility with
* {@link WindowInsets#isVisible}.
*
- * @see #controlInputMethodAnimation(long, WindowInsetsAnimationControlListener)
+ * @see #controlInputMethodAnimation
* @see #hideInputMethod()
*/
default void showInputMethod() {
@@ -196,7 +221,7 @@ public interface WindowInsetsController {
* the event by observing {@link View#onApplyWindowInsets} and checking visibility with
* {@link WindowInsets#isVisible}.
*
- * @see #controlInputMethodAnimation(long, WindowInsetsAnimationControlListener)
+ * @see #controlInputMethodAnimation
* @see #showInputMethod()
*/
default void hideInputMethod() {