Loading core/java/android/view/IRecentsAnimationController.aidl +4 −4 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.ActivityManager; import android.view.IRemoteAnimationFinishedCallback; import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.window.PictureInPictureSurfaceTransaction; import android.window.TaskSnapshot; /** Loading @@ -43,11 +44,10 @@ interface IRecentsAnimationController { * accordingly. This should be called before `finish` * @param taskId for which the leash should be updated * @param destinationBounds bounds of the final PiP window * @param windowCrop bounds to crop as part of final transform. * @param float9 An array of 9 floats to be used as matrix transform. * @param finishTransaction leash operations for the final transform. */ void setFinishTaskBounds(int taskId, in Rect destinationBounds, in Rect windowCrop, in float[] float9); void setFinishTaskBounds(int taskId, in Rect destinationBounds, in PictureInPictureSurfaceTransaction finishTransaction); /** * Notifies to the system that the animation into Recents should end, and all leashes associated Loading core/java/android/window/PictureInPictureSurfaceTransaction.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /** * Copyright (c) 2021, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; parcelable PictureInPictureSurfaceTransaction; core/java/android/window/PictureInPictureSurfaceTransaction.java 0 → 100644 +140 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; import android.annotation.Nullable; import android.graphics.Rect; import android.os.Parcel; import android.os.Parcelable; import java.util.Objects; /** * Represents a set of {@link android.view.SurfaceControl.Transaction} operations used to * operate on the {@link android.view.SurfaceControl} for picture-in-picture. * * @hide */ public final class PictureInPictureSurfaceTransaction implements Parcelable { public final float mPositionX; public final float mPositionY; public final float mScaleX; public final float mScaleY; public final float mRotation; public final float mCornerRadius; private final Rect mWindowCrop = new Rect(); public PictureInPictureSurfaceTransaction(Parcel in) { mPositionX = in.readFloat(); mPositionY = in.readFloat(); mScaleX = in.readFloat(); mScaleY = in.readFloat(); mRotation = in.readFloat(); mCornerRadius = in.readFloat(); mWindowCrop.set(Objects.requireNonNull(in.readTypedObject(Rect.CREATOR))); } public PictureInPictureSurfaceTransaction(float positionX, float positionY, float scaleX, float scaleY, float rotation, float cornerRadius, @Nullable Rect windowCrop) { mPositionX = positionX; mPositionY = positionY; mScaleX = scaleX; mScaleY = scaleY; mRotation = rotation; mCornerRadius = cornerRadius; if (windowCrop != null) { mWindowCrop.set(windowCrop); } } public PictureInPictureSurfaceTransaction(PictureInPictureSurfaceTransaction other) { this(other.mPositionX, other.mPositionY, other.mScaleX, other.mScaleY, other.mRotation, other.mCornerRadius, other.mWindowCrop); } public Rect getWindowCrop() { return new Rect(mWindowCrop); } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof PictureInPictureSurfaceTransaction)) return false; PictureInPictureSurfaceTransaction that = (PictureInPictureSurfaceTransaction) o; return Objects.equals(mPositionX, that.mPositionX) && Objects.equals(mPositionY, that.mPositionY) && Objects.equals(mScaleX, that.mScaleX) && Objects.equals(mScaleY, that.mScaleY) && Objects.equals(mRotation, that.mRotation) && Objects.equals(mCornerRadius, that.mCornerRadius) && Objects.equals(mWindowCrop, that.mWindowCrop); } @Override public int hashCode() { return Objects.hash(mPositionX, mPositionY, mScaleX, mScaleY, mRotation, mCornerRadius, mWindowCrop); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeFloat(mPositionX); out.writeFloat(mPositionY); out.writeFloat(mScaleX); out.writeFloat(mScaleY); out.writeFloat(mRotation); out.writeFloat(mCornerRadius); out.writeTypedObject(mWindowCrop, 0 /* flags */); } @Override public String toString() { return "PictureInPictureSurfaceTransaction(" + " posX=" + mPositionX + " posY=" + mPositionY + " scaleX=" + mScaleX + " scaleY=" + mScaleY + " rotation=" + mRotation + " cornerRadius=" + mCornerRadius + " crop=" + mWindowCrop + ")"; } public static final @android.annotation.NonNull Creator<PictureInPictureSurfaceTransaction> CREATOR = new Creator<PictureInPictureSurfaceTransaction>() { public PictureInPictureSurfaceTransaction createFromParcel(Parcel in) { return new PictureInPictureSurfaceTransaction(in); } public PictureInPictureSurfaceTransaction[] newArray(int size) { return new PictureInPictureSurfaceTransaction[size]; } }; } packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java +35 −18 Original line number Diff line number Diff line Loading @@ -16,11 +16,15 @@ package com.android.systemui.shared.pip; import static android.graphics.Matrix.MSCALE_X; import static android.graphics.Matrix.MSCALE_Y; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.RectF; import android.view.Choreographer; import android.view.SurfaceControl; import android.window.PictureInPictureSurfaceTransaction; /** * TODO(b/171721389): unify this class with Loading @@ -28,22 +32,32 @@ import android.view.SurfaceControl; * source of truth on enabling/disabling and the actual value of corner radius. */ public class PipSurfaceTransactionHelper { /** corner radius is currently disabled. */ private final float mCornerRadius = 0f; private final Matrix mTmpTransform = new Matrix(); private final float[] mTmpFloat9 = new float[9]; private final RectF mTmpSourceRectF = new RectF(); private final RectF mTmpDestinationRectF = new RectF(); private final Rect mTmpDestinationRect = new Rect(); public void scale(SurfaceControl.Transaction tx, SurfaceControl leash, public PictureInPictureSurfaceTransaction scale( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds) { mTmpSourceRectF.set(sourceBounds); mTmpDestinationRectF.set(destinationBounds); mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL); tx.setMatrix(leash, mTmpTransform, mTmpFloat9) .setPosition(leash, mTmpDestinationRectF.left, mTmpDestinationRectF.top); .setPosition(leash, mTmpDestinationRectF.left, mTmpDestinationRectF.top) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( mTmpDestinationRectF.left, mTmpDestinationRectF.top, mTmpFloat9[MSCALE_X], mTmpFloat9[MSCALE_Y], 0 /* rotation*/, mCornerRadius, sourceBounds); } public void scale(SurfaceControl.Transaction tx, SurfaceControl leash, public PictureInPictureSurfaceTransaction scale( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds, float degree, float positionX, float positionY) { mTmpSourceRectF.set(sourceBounds); Loading @@ -51,10 +65,16 @@ public class PipSurfaceTransactionHelper { mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL); mTmpTransform.postRotate(degree, 0, 0); tx.setMatrix(leash, mTmpTransform, mTmpFloat9) .setPosition(leash, positionX, positionY); .setPosition(leash, positionX, positionY) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( positionX, positionY, mTmpFloat9[MSCALE_X], mTmpFloat9[MSCALE_Y], degree, mCornerRadius, sourceBounds); } public void scaleAndCrop(SurfaceControl.Transaction tx, SurfaceControl leash, public PictureInPictureSurfaceTransaction scaleAndCrop( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds, Rect insets) { mTmpSourceRectF.set(sourceBounds); mTmpDestinationRect.set(sourceBounds); Loading @@ -69,10 +89,14 @@ public class PipSurfaceTransactionHelper { mTmpTransform.setScale(scale, scale); tx.setMatrix(leash, mTmpTransform, mTmpFloat9) .setWindowCrop(leash, mTmpDestinationRect) .setPosition(leash, left, top); .setPosition(leash, left, top) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( left, top, scale, scale, 0 /* rotation */, mCornerRadius, mTmpDestinationRect); } public void scaleAndRotate(SurfaceControl.Transaction tx, SurfaceControl leash, public PictureInPictureSurfaceTransaction scaleAndRotate( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds, Rect insets, float degree, float positionX, float positionY) { mTmpSourceRectF.set(sourceBounds); Loading @@ -87,17 +111,10 @@ public class PipSurfaceTransactionHelper { mTmpTransform.postScale(scale, scale); tx.setMatrix(leash, mTmpTransform, mTmpFloat9) .setWindowCrop(leash, mTmpDestinationRect) .setPosition(leash, positionX, positionY); } public void resetCornerRadius(SurfaceControl.Transaction tx, SurfaceControl leash) { tx.setCornerRadius(leash, 0); } public void crop(SurfaceControl.Transaction tx, SurfaceControl leash, Rect destinationBounds) { tx.setWindowCrop(leash, destinationBounds.width(), destinationBounds.height()) .setPosition(leash, destinationBounds.left, destinationBounds.top); .setPosition(leash, positionX, positionY) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( positionX, positionY, scale, scale, degree, mCornerRadius, mTmpDestinationRect); } /** @return {@link SurfaceControl.Transaction} instance with vsync-id */ Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java +6 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.Rect; import android.os.RemoteException; import android.util.Log; import android.view.IRecentsAnimationController; import android.window.PictureInPictureSurfaceTransaction; import android.window.TaskSnapshot; import com.android.systemui.shared.recents.model.ThumbnailData; Loading Loading @@ -76,14 +77,12 @@ public class RecentsAnimationControllerCompat { * accordingly. This should be called before `finish` * @param taskId Task id of the Activity in PiP mode. * @param destinationBounds Bounds of the PiP window on home. * @param windowCrop bounds to crop as part of final transform. * @param float9 An array of 9 floats to be used as matrix transform. * @param finishTransaction leash operations for the final transform. */ public void setFinishTaskBounds(int taskId, Rect destinationBounds, Rect windowCrop, float[] float9) { public void setFinishTaskBounds(int taskId, Rect destinationBounds, PictureInPictureSurfaceTransaction finishTransaction) { try { mAnimationController.setFinishTaskBounds(taskId, destinationBounds, windowCrop, float9); mAnimationController.setFinishTaskBounds(taskId, destinationBounds, finishTransaction); } catch (RemoteException e) { Log.d(TAG, "Failed to set finish task bounds", e); } Loading Loading
core/java/android/view/IRecentsAnimationController.aidl +4 −4 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.ActivityManager; import android.view.IRemoteAnimationFinishedCallback; import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.window.PictureInPictureSurfaceTransaction; import android.window.TaskSnapshot; /** Loading @@ -43,11 +44,10 @@ interface IRecentsAnimationController { * accordingly. This should be called before `finish` * @param taskId for which the leash should be updated * @param destinationBounds bounds of the final PiP window * @param windowCrop bounds to crop as part of final transform. * @param float9 An array of 9 floats to be used as matrix transform. * @param finishTransaction leash operations for the final transform. */ void setFinishTaskBounds(int taskId, in Rect destinationBounds, in Rect windowCrop, in float[] float9); void setFinishTaskBounds(int taskId, in Rect destinationBounds, in PictureInPictureSurfaceTransaction finishTransaction); /** * Notifies to the system that the animation into Recents should end, and all leashes associated Loading
core/java/android/window/PictureInPictureSurfaceTransaction.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /** * Copyright (c) 2021, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; parcelable PictureInPictureSurfaceTransaction;
core/java/android/window/PictureInPictureSurfaceTransaction.java 0 → 100644 +140 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; import android.annotation.Nullable; import android.graphics.Rect; import android.os.Parcel; import android.os.Parcelable; import java.util.Objects; /** * Represents a set of {@link android.view.SurfaceControl.Transaction} operations used to * operate on the {@link android.view.SurfaceControl} for picture-in-picture. * * @hide */ public final class PictureInPictureSurfaceTransaction implements Parcelable { public final float mPositionX; public final float mPositionY; public final float mScaleX; public final float mScaleY; public final float mRotation; public final float mCornerRadius; private final Rect mWindowCrop = new Rect(); public PictureInPictureSurfaceTransaction(Parcel in) { mPositionX = in.readFloat(); mPositionY = in.readFloat(); mScaleX = in.readFloat(); mScaleY = in.readFloat(); mRotation = in.readFloat(); mCornerRadius = in.readFloat(); mWindowCrop.set(Objects.requireNonNull(in.readTypedObject(Rect.CREATOR))); } public PictureInPictureSurfaceTransaction(float positionX, float positionY, float scaleX, float scaleY, float rotation, float cornerRadius, @Nullable Rect windowCrop) { mPositionX = positionX; mPositionY = positionY; mScaleX = scaleX; mScaleY = scaleY; mRotation = rotation; mCornerRadius = cornerRadius; if (windowCrop != null) { mWindowCrop.set(windowCrop); } } public PictureInPictureSurfaceTransaction(PictureInPictureSurfaceTransaction other) { this(other.mPositionX, other.mPositionY, other.mScaleX, other.mScaleY, other.mRotation, other.mCornerRadius, other.mWindowCrop); } public Rect getWindowCrop() { return new Rect(mWindowCrop); } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof PictureInPictureSurfaceTransaction)) return false; PictureInPictureSurfaceTransaction that = (PictureInPictureSurfaceTransaction) o; return Objects.equals(mPositionX, that.mPositionX) && Objects.equals(mPositionY, that.mPositionY) && Objects.equals(mScaleX, that.mScaleX) && Objects.equals(mScaleY, that.mScaleY) && Objects.equals(mRotation, that.mRotation) && Objects.equals(mCornerRadius, that.mCornerRadius) && Objects.equals(mWindowCrop, that.mWindowCrop); } @Override public int hashCode() { return Objects.hash(mPositionX, mPositionY, mScaleX, mScaleY, mRotation, mCornerRadius, mWindowCrop); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeFloat(mPositionX); out.writeFloat(mPositionY); out.writeFloat(mScaleX); out.writeFloat(mScaleY); out.writeFloat(mRotation); out.writeFloat(mCornerRadius); out.writeTypedObject(mWindowCrop, 0 /* flags */); } @Override public String toString() { return "PictureInPictureSurfaceTransaction(" + " posX=" + mPositionX + " posY=" + mPositionY + " scaleX=" + mScaleX + " scaleY=" + mScaleY + " rotation=" + mRotation + " cornerRadius=" + mCornerRadius + " crop=" + mWindowCrop + ")"; } public static final @android.annotation.NonNull Creator<PictureInPictureSurfaceTransaction> CREATOR = new Creator<PictureInPictureSurfaceTransaction>() { public PictureInPictureSurfaceTransaction createFromParcel(Parcel in) { return new PictureInPictureSurfaceTransaction(in); } public PictureInPictureSurfaceTransaction[] newArray(int size) { return new PictureInPictureSurfaceTransaction[size]; } }; }
packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java +35 −18 Original line number Diff line number Diff line Loading @@ -16,11 +16,15 @@ package com.android.systemui.shared.pip; import static android.graphics.Matrix.MSCALE_X; import static android.graphics.Matrix.MSCALE_Y; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.RectF; import android.view.Choreographer; import android.view.SurfaceControl; import android.window.PictureInPictureSurfaceTransaction; /** * TODO(b/171721389): unify this class with Loading @@ -28,22 +32,32 @@ import android.view.SurfaceControl; * source of truth on enabling/disabling and the actual value of corner radius. */ public class PipSurfaceTransactionHelper { /** corner radius is currently disabled. */ private final float mCornerRadius = 0f; private final Matrix mTmpTransform = new Matrix(); private final float[] mTmpFloat9 = new float[9]; private final RectF mTmpSourceRectF = new RectF(); private final RectF mTmpDestinationRectF = new RectF(); private final Rect mTmpDestinationRect = new Rect(); public void scale(SurfaceControl.Transaction tx, SurfaceControl leash, public PictureInPictureSurfaceTransaction scale( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds) { mTmpSourceRectF.set(sourceBounds); mTmpDestinationRectF.set(destinationBounds); mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL); tx.setMatrix(leash, mTmpTransform, mTmpFloat9) .setPosition(leash, mTmpDestinationRectF.left, mTmpDestinationRectF.top); .setPosition(leash, mTmpDestinationRectF.left, mTmpDestinationRectF.top) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( mTmpDestinationRectF.left, mTmpDestinationRectF.top, mTmpFloat9[MSCALE_X], mTmpFloat9[MSCALE_Y], 0 /* rotation*/, mCornerRadius, sourceBounds); } public void scale(SurfaceControl.Transaction tx, SurfaceControl leash, public PictureInPictureSurfaceTransaction scale( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds, float degree, float positionX, float positionY) { mTmpSourceRectF.set(sourceBounds); Loading @@ -51,10 +65,16 @@ public class PipSurfaceTransactionHelper { mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL); mTmpTransform.postRotate(degree, 0, 0); tx.setMatrix(leash, mTmpTransform, mTmpFloat9) .setPosition(leash, positionX, positionY); .setPosition(leash, positionX, positionY) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( positionX, positionY, mTmpFloat9[MSCALE_X], mTmpFloat9[MSCALE_Y], degree, mCornerRadius, sourceBounds); } public void scaleAndCrop(SurfaceControl.Transaction tx, SurfaceControl leash, public PictureInPictureSurfaceTransaction scaleAndCrop( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds, Rect insets) { mTmpSourceRectF.set(sourceBounds); mTmpDestinationRect.set(sourceBounds); Loading @@ -69,10 +89,14 @@ public class PipSurfaceTransactionHelper { mTmpTransform.setScale(scale, scale); tx.setMatrix(leash, mTmpTransform, mTmpFloat9) .setWindowCrop(leash, mTmpDestinationRect) .setPosition(leash, left, top); .setPosition(leash, left, top) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( left, top, scale, scale, 0 /* rotation */, mCornerRadius, mTmpDestinationRect); } public void scaleAndRotate(SurfaceControl.Transaction tx, SurfaceControl leash, public PictureInPictureSurfaceTransaction scaleAndRotate( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds, Rect insets, float degree, float positionX, float positionY) { mTmpSourceRectF.set(sourceBounds); Loading @@ -87,17 +111,10 @@ public class PipSurfaceTransactionHelper { mTmpTransform.postScale(scale, scale); tx.setMatrix(leash, mTmpTransform, mTmpFloat9) .setWindowCrop(leash, mTmpDestinationRect) .setPosition(leash, positionX, positionY); } public void resetCornerRadius(SurfaceControl.Transaction tx, SurfaceControl leash) { tx.setCornerRadius(leash, 0); } public void crop(SurfaceControl.Transaction tx, SurfaceControl leash, Rect destinationBounds) { tx.setWindowCrop(leash, destinationBounds.width(), destinationBounds.height()) .setPosition(leash, destinationBounds.left, destinationBounds.top); .setPosition(leash, positionX, positionY) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( positionX, positionY, scale, scale, degree, mCornerRadius, mTmpDestinationRect); } /** @return {@link SurfaceControl.Transaction} instance with vsync-id */ Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java +6 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.Rect; import android.os.RemoteException; import android.util.Log; import android.view.IRecentsAnimationController; import android.window.PictureInPictureSurfaceTransaction; import android.window.TaskSnapshot; import com.android.systemui.shared.recents.model.ThumbnailData; Loading Loading @@ -76,14 +77,12 @@ public class RecentsAnimationControllerCompat { * accordingly. This should be called before `finish` * @param taskId Task id of the Activity in PiP mode. * @param destinationBounds Bounds of the PiP window on home. * @param windowCrop bounds to crop as part of final transform. * @param float9 An array of 9 floats to be used as matrix transform. * @param finishTransaction leash operations for the final transform. */ public void setFinishTaskBounds(int taskId, Rect destinationBounds, Rect windowCrop, float[] float9) { public void setFinishTaskBounds(int taskId, Rect destinationBounds, PictureInPictureSurfaceTransaction finishTransaction) { try { mAnimationController.setFinishTaskBounds(taskId, destinationBounds, windowCrop, float9); mAnimationController.setFinishTaskBounds(taskId, destinationBounds, finishTransaction); } catch (RemoteException e) { Log.d(TAG, "Failed to set finish task bounds", e); } Loading