Merge "Add API to add title and subtitle to the PIP."
This commit is contained in:
committed by
Android (Google) Code Review
commit
4803b4c958
@@ -6640,6 +6640,8 @@ package android.app {
|
||||
method @NonNull public android.app.PictureInPictureParams.Builder setExpandedAspectRatio(@Nullable android.util.Rational);
|
||||
method @NonNull public android.app.PictureInPictureParams.Builder setSeamlessResizeEnabled(boolean);
|
||||
method public android.app.PictureInPictureParams.Builder setSourceRectHint(android.graphics.Rect);
|
||||
method @NonNull public android.app.PictureInPictureParams.Builder setSubtitle(@Nullable CharSequence);
|
||||
method @NonNull public android.app.PictureInPictureParams.Builder setTitle(@Nullable CharSequence);
|
||||
}
|
||||
|
||||
public final class PictureInPictureUiState implements android.os.Parcelable {
|
||||
|
||||
@@ -356,6 +356,8 @@ package android.app {
|
||||
method public float getAspectRatio();
|
||||
method public float getExpandedAspectRatio();
|
||||
method public android.graphics.Rect getSourceRectHint();
|
||||
method @Nullable public CharSequence getSubtitle();
|
||||
method @Nullable public CharSequence getTitle();
|
||||
method public boolean isSeamlessResizeEnabled();
|
||||
}
|
||||
|
||||
|
||||
@@ -57,13 +57,16 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
|
||||
private Boolean mSeamlessResizeEnabled;
|
||||
|
||||
private CharSequence mTitle;
|
||||
|
||||
private CharSequence mSubtitle;
|
||||
|
||||
/**
|
||||
* Sets the aspect ratio. This aspect ratio is defined as the desired width / height, and
|
||||
* does not change upon device rotation.
|
||||
*
|
||||
* @param aspectRatio the new aspect ratio for the activity in picture-in-picture, must be
|
||||
* between 2.39:1 and 1:2.39 (inclusive).
|
||||
*
|
||||
* between 2.39:1 and 1:2.39 (inclusive).
|
||||
* @return this builder instance.
|
||||
*/
|
||||
public Builder setAspectRatio(Rational aspectRatio) {
|
||||
@@ -167,6 +170,36 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a title for the picture-in-picture window, which may be displayed by the system to
|
||||
* give the user information about what this PIP is generally being used for.
|
||||
*
|
||||
* @param title General information about the PIP content
|
||||
* @return this builder instance.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setTitle(@Nullable CharSequence title) {
|
||||
mTitle = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a subtitle for the picture-in-picture window, which may be displayed by the system
|
||||
* to give the user more detailed information about what this PIP is displaying.<br/>
|
||||
*
|
||||
* Setting a title via {@link PictureInPictureParams.Builder#setTitle(CharSequence)} should
|
||||
* be prioritized.
|
||||
*
|
||||
* @param subtitle Details about the PIP content.
|
||||
* @return this builder instance
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setSubtitle(@Nullable CharSequence subtitle) {
|
||||
mSubtitle = subtitle;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return an immutable {@link PictureInPictureParams} to be used when entering or updating
|
||||
* the activity in picture-in-picture.
|
||||
@@ -177,7 +210,7 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
public PictureInPictureParams build() {
|
||||
PictureInPictureParams params = new PictureInPictureParams(mAspectRatio,
|
||||
mExpandedAspectRatio, mUserActions,
|
||||
mSourceRectHint, mAutoEnterEnabled, mSeamlessResizeEnabled);
|
||||
mSourceRectHint, mAutoEnterEnabled, mSeamlessResizeEnabled, mTitle, mSubtitle);
|
||||
return params;
|
||||
}
|
||||
}
|
||||
@@ -221,6 +254,18 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
*/
|
||||
private Boolean mSeamlessResizeEnabled;
|
||||
|
||||
/**
|
||||
* Title of the picture-in-picture window to be displayed to the user.
|
||||
*/
|
||||
@Nullable
|
||||
private CharSequence mTitle;
|
||||
|
||||
/**
|
||||
* Subtitle for the picture-in-picture window to be displayed to the user.
|
||||
*/
|
||||
@Nullable
|
||||
private CharSequence mSubtitle;
|
||||
|
||||
/** {@hide} */
|
||||
PictureInPictureParams() {
|
||||
}
|
||||
@@ -242,18 +287,26 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
if (in.readInt() != 0) {
|
||||
mSeamlessResizeEnabled = in.readBoolean();
|
||||
}
|
||||
if (in.readInt() != 0) {
|
||||
mTitle = in.readCharSequence();
|
||||
}
|
||||
if (in.readInt() != 0) {
|
||||
mSubtitle = in.readCharSequence();
|
||||
}
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
PictureInPictureParams(Rational aspectRatio, Rational expandedAspectRatio,
|
||||
List<RemoteAction> actions, Rect sourceRectHint, Boolean autoEnterEnabled,
|
||||
Boolean seamlessResizeEnabled) {
|
||||
Boolean seamlessResizeEnabled, CharSequence title, CharSequence subtitle) {
|
||||
mAspectRatio = aspectRatio;
|
||||
mExpandedAspectRatio = expandedAspectRatio;
|
||||
mUserActions = actions;
|
||||
mSourceRectHint = sourceRectHint;
|
||||
mAutoEnterEnabled = autoEnterEnabled;
|
||||
mSeamlessResizeEnabled = seamlessResizeEnabled;
|
||||
mTitle = title;
|
||||
mSubtitle = subtitle;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -263,7 +316,8 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
public PictureInPictureParams(PictureInPictureParams other) {
|
||||
this(other.mAspectRatio, other.mExpandedAspectRatio, other.mUserActions,
|
||||
other.hasSourceBoundsHint() ? new Rect(other.getSourceRectHint()) : null,
|
||||
other.mAutoEnterEnabled, other.mSeamlessResizeEnabled);
|
||||
other.mAutoEnterEnabled, other.mSeamlessResizeEnabled, other.mTitle,
|
||||
other.mSubtitle);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -290,6 +344,12 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
if (otherArgs.mSeamlessResizeEnabled != null) {
|
||||
mSeamlessResizeEnabled = otherArgs.mSeamlessResizeEnabled;
|
||||
}
|
||||
if (otherArgs.hasSetTitle()) {
|
||||
mTitle = otherArgs.mTitle;
|
||||
}
|
||||
if (otherArgs.hasSetSubtitle()) {
|
||||
mSubtitle = otherArgs.mSubtitle;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -398,6 +458,42 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
return mSeamlessResizeEnabled == null ? true : mSeamlessResizeEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return whether a title was set.
|
||||
* @hide
|
||||
*/
|
||||
public boolean hasSetTitle() {
|
||||
return mTitle != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return title of the pip.
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
@Nullable
|
||||
public CharSequence getTitle() {
|
||||
return mTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return whether a subtitle was set.
|
||||
* @hide
|
||||
*/
|
||||
public boolean hasSetSubtitle() {
|
||||
return mSubtitle != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return subtitle of the pip.
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
@Nullable
|
||||
public CharSequence getSubtitle() {
|
||||
return mSubtitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return True if no parameters are set
|
||||
* @hide
|
||||
@@ -405,7 +501,8 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
public boolean empty() {
|
||||
return !hasSourceBoundsHint() && !hasSetActions() && !hasSetAspectRatio()
|
||||
&& !hasSetExpandedAspectRatio() && mAutoEnterEnabled != null
|
||||
&& mSeamlessResizeEnabled != null;
|
||||
&& mSeamlessResizeEnabled != null && !hasSetTitle()
|
||||
&& !hasSetSubtitle();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -418,13 +515,15 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
&& Objects.equals(mAspectRatio, that.mAspectRatio)
|
||||
&& Objects.equals(mExpandedAspectRatio, that.mExpandedAspectRatio)
|
||||
&& Objects.equals(mUserActions, that.mUserActions)
|
||||
&& Objects.equals(mSourceRectHint, that.mSourceRectHint);
|
||||
&& Objects.equals(mSourceRectHint, that.mSourceRectHint)
|
||||
&& Objects.equals(mTitle, that.mTitle)
|
||||
&& Objects.equals(mSubtitle, that.mSubtitle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mAspectRatio, mExpandedAspectRatio, mUserActions, mSourceRectHint,
|
||||
mAutoEnterEnabled, mSeamlessResizeEnabled);
|
||||
mAutoEnterEnabled, mSeamlessResizeEnabled, mTitle, mSubtitle);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -460,6 +559,18 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
} else {
|
||||
out.writeInt(0);
|
||||
}
|
||||
if (mTitle != null) {
|
||||
out.writeInt(1);
|
||||
out.writeCharSequence(mTitle);
|
||||
} else {
|
||||
out.writeInt(0);
|
||||
}
|
||||
if (mSubtitle != null) {
|
||||
out.writeInt(1);
|
||||
out.writeCharSequence(mSubtitle);
|
||||
} else {
|
||||
out.writeInt(0);
|
||||
}
|
||||
}
|
||||
|
||||
private void writeRationalToParcel(Rational rational, Parcel out) {
|
||||
@@ -488,6 +599,8 @@ public final class PictureInPictureParams implements Parcelable {
|
||||
+ " hasSetActions=" + hasSetActions()
|
||||
+ " isAutoPipEnabled=" + isAutoEnterEnabled()
|
||||
+ " isSeamlessResizeEnabled=" + isSeamlessResizeEnabled()
|
||||
+ " title=" + getTitle()
|
||||
+ " subtitle=" + getSubtitle()
|
||||
+ ")";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user