Loading core/java/android/view/InsetsController.java +3 −3 Original line number Diff line number Diff line Loading @@ -312,7 +312,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } /** Not running an animation. */ @VisibleForTesting @VisibleForTesting(visibility = PACKAGE) public static final int ANIMATION_TYPE_NONE = -1; /** Running animation will show insets */ Loading @@ -326,7 +326,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation public static final int ANIMATION_TYPE_USER = 2; /** Running animation will resize insets */ @VisibleForTesting @VisibleForTesting(visibility = PACKAGE) public static final int ANIMATION_TYPE_RESIZE = 3; @Retention(RetentionPolicy.SOURCE) Loading Loading @@ -1719,7 +1719,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation mImeSourceConsumer.onWindowFocusLost(); } @VisibleForTesting @VisibleForTesting(visibility = PACKAGE) public @AnimationType int getAnimationType(@InsetsType int type) { for (int i = mRunningAnimations.size() - 1; i >= 0; i--) { InsetsAnimationControlRunner control = mRunningAnimations.get(i).runner; Loading core/java/android/view/InsetsSourceConsumer.java +18 −9 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.view; import static android.view.InsetsController.ANIMATION_TYPE_NONE; import static android.view.InsetsController.ANIMATION_TYPE_RESIZE; import static android.view.InsetsController.AnimationType; import static android.view.InsetsController.DEBUG; import static android.view.InsetsSourceConsumerProto.ANIMATION_STATE; Loading @@ -31,6 +32,7 @@ import static com.android.internal.annotations.VisibleForTesting.Visibility.PACK import android.annotation.IntDef; import android.annotation.Nullable; import android.graphics.Point; import android.graphics.Rect; import android.util.Log; import android.util.proto.ProtoOutputStream; Loading Loading @@ -179,10 +181,11 @@ public class InsetsSourceConsumer { mController.notifyVisibilityChanged(); } // If we have a new leash, make sure visibility is up-to-date, even though we // didn't want to run an animation above. if (mController.getAnimationType(mType) == ANIMATION_TYPE_NONE) { applyRequestedVisibilityToControl(); // If there is no animation controlling the leash, make sure the visibility and the // position is up-to-date. final int animType = mController.getAnimationType(mType); if (animType == ANIMATION_TYPE_NONE || animType == ANIMATION_TYPE_RESIZE) { applyRequestedVisibilityAndPositionToControl(); } // Remove the surface that owned by last control when it lost. Loading Loading @@ -371,21 +374,27 @@ public class InsetsSourceConsumer { if (DEBUG) Log.d(TAG, "updateSource: " + newSource); } private void applyRequestedVisibilityToControl() { if (mSourceControl == null || mSourceControl.getLeash() == null) { private void applyRequestedVisibilityAndPositionToControl() { if (mSourceControl == null) { return; } final SurfaceControl leash = mSourceControl.getLeash(); if (leash == null) { return; } final boolean requestedVisible = (mController.getRequestedVisibleTypes() & mType) != 0; final Point surfacePosition = mSourceControl.getSurfacePosition(); try (Transaction t = mTransactionSupplier.get()) { if (DEBUG) Log.d(TAG, "applyRequestedVisibilityToControl: " + requestedVisible); if (requestedVisible) { t.show(mSourceControl.getLeash()); t.show(leash); } else { t.hide(mSourceControl.getLeash()); t.hide(leash); } // Ensure the alpha value is aligned with the actual requested visibility. t.setAlpha(mSourceControl.getLeash(), requestedVisible ? 1 : 0); t.setAlpha(leash, requestedVisible ? 1 : 0); t.setPosition(leash, surfacePosition.x, surfacePosition.y); t.apply(); } onPerceptible(requestedVisible); Loading Loading
core/java/android/view/InsetsController.java +3 −3 Original line number Diff line number Diff line Loading @@ -312,7 +312,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } /** Not running an animation. */ @VisibleForTesting @VisibleForTesting(visibility = PACKAGE) public static final int ANIMATION_TYPE_NONE = -1; /** Running animation will show insets */ Loading @@ -326,7 +326,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation public static final int ANIMATION_TYPE_USER = 2; /** Running animation will resize insets */ @VisibleForTesting @VisibleForTesting(visibility = PACKAGE) public static final int ANIMATION_TYPE_RESIZE = 3; @Retention(RetentionPolicy.SOURCE) Loading Loading @@ -1719,7 +1719,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation mImeSourceConsumer.onWindowFocusLost(); } @VisibleForTesting @VisibleForTesting(visibility = PACKAGE) public @AnimationType int getAnimationType(@InsetsType int type) { for (int i = mRunningAnimations.size() - 1; i >= 0; i--) { InsetsAnimationControlRunner control = mRunningAnimations.get(i).runner; Loading
core/java/android/view/InsetsSourceConsumer.java +18 −9 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.view; import static android.view.InsetsController.ANIMATION_TYPE_NONE; import static android.view.InsetsController.ANIMATION_TYPE_RESIZE; import static android.view.InsetsController.AnimationType; import static android.view.InsetsController.DEBUG; import static android.view.InsetsSourceConsumerProto.ANIMATION_STATE; Loading @@ -31,6 +32,7 @@ import static com.android.internal.annotations.VisibleForTesting.Visibility.PACK import android.annotation.IntDef; import android.annotation.Nullable; import android.graphics.Point; import android.graphics.Rect; import android.util.Log; import android.util.proto.ProtoOutputStream; Loading Loading @@ -179,10 +181,11 @@ public class InsetsSourceConsumer { mController.notifyVisibilityChanged(); } // If we have a new leash, make sure visibility is up-to-date, even though we // didn't want to run an animation above. if (mController.getAnimationType(mType) == ANIMATION_TYPE_NONE) { applyRequestedVisibilityToControl(); // If there is no animation controlling the leash, make sure the visibility and the // position is up-to-date. final int animType = mController.getAnimationType(mType); if (animType == ANIMATION_TYPE_NONE || animType == ANIMATION_TYPE_RESIZE) { applyRequestedVisibilityAndPositionToControl(); } // Remove the surface that owned by last control when it lost. Loading Loading @@ -371,21 +374,27 @@ public class InsetsSourceConsumer { if (DEBUG) Log.d(TAG, "updateSource: " + newSource); } private void applyRequestedVisibilityToControl() { if (mSourceControl == null || mSourceControl.getLeash() == null) { private void applyRequestedVisibilityAndPositionToControl() { if (mSourceControl == null) { return; } final SurfaceControl leash = mSourceControl.getLeash(); if (leash == null) { return; } final boolean requestedVisible = (mController.getRequestedVisibleTypes() & mType) != 0; final Point surfacePosition = mSourceControl.getSurfacePosition(); try (Transaction t = mTransactionSupplier.get()) { if (DEBUG) Log.d(TAG, "applyRequestedVisibilityToControl: " + requestedVisible); if (requestedVisible) { t.show(mSourceControl.getLeash()); t.show(leash); } else { t.hide(mSourceControl.getLeash()); t.hide(leash); } // Ensure the alpha value is aligned with the actual requested visibility. t.setAlpha(mSourceControl.getLeash(), requestedVisible ? 1 : 0); t.setAlpha(leash, requestedVisible ? 1 : 0); t.setPosition(leash, surfacePosition.x, surfacePosition.y); t.apply(); } onPerceptible(requestedVisible); Loading