content: package android.view;
  
  import android.annotation.UnsupportedAppUsage;
  import android.graphics.GraphicBuffer;
  import android.graphics.Rect;
  import android.os.Parcel;
  import android.os.Parcelable;
  
  /**
   * Holds information about how the next app transition animation should be executed.
   *
   * This class is intended to be used with IWindowManager.overridePendingAppTransition* methods when
   * simple arguments are not enough to describe the animation.
   *
   * @hide
   */
  public class AppTransitionAnimationSpec implements Parcelable {
      public final int taskId;
      public final GraphicBuffer buffer;
      public final Rect rect;
  
      @UnsupportedAppUsage
      public AppTransitionAnimationSpec(int taskId, GraphicBuffer buffer, Rect rect) {
          this.taskId = taskId;
          this.rect = rect;
          this.buffer = buffer;
      }
  
      public AppTransitionAnimationSpec(Parcel in) {
          taskId = in.readInt();
          rect = in.readParcelable(null);
          buffer = in.readParcelable(null);
      }
  
      @Override
      public int describeContents() {
          return 0;
      }
  
      @Override
      public void writeToParcel(Parcel dest, int flags) {
          dest.writeInt(taskId);
          dest.writeParcelable(rect, 0 /* flags */);
          dest.writeParcelable(buffer, 0);
      }
  
      public static final @android.annotation.NonNull Parcelable.Creator<AppTransitionAnimationSpec> CREATOR
              = new Parcelable.Creator<AppTransitionAnimationSpec>() {
          public AppTransitionAnimationSpec createFromParcel(Parcel in) {
              return new AppTransitionAnimationSpec(in);
          }
  
          public AppTransitionAnimationSpec[] newArray(int size) {
              return new AppTransitionAnimationSpec[size];
          }
      };
  
      @Override
      public String toString() {
          return "{taskId: " + taskId + ", buffer: " + buffer + ", rect: " + rect + "}";
      }
  }
  