in PictureInPicture/app/src/main/java/com/example/android/pictureinpicture/widget/MovieView.java [231:274]
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mMediaPlayer != null) {
final int videoWidth = mMediaPlayer.getVideoWidth();
final int videoHeight = mMediaPlayer.getVideoHeight();
if (videoWidth != 0 && videoHeight != 0) {
final float aspectRatio = (float) videoHeight / videoWidth;
final int width = MeasureSpec.getSize(widthMeasureSpec);
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
final int height = MeasureSpec.getSize(heightMeasureSpec);
final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
if (mAdjustViewBounds) {
if (widthMode == MeasureSpec.EXACTLY && heightMode != MeasureSpec.EXACTLY) {
super.onMeasure(
widthMeasureSpec,
MeasureSpec.makeMeasureSpec(
(int) (width * aspectRatio), MeasureSpec.EXACTLY));
} else if (widthMode != MeasureSpec.EXACTLY
&& heightMode == MeasureSpec.EXACTLY) {
super.onMeasure(
MeasureSpec.makeMeasureSpec(
(int) (height / aspectRatio), MeasureSpec.EXACTLY),
heightMeasureSpec);
} else {
super.onMeasure(
widthMeasureSpec,
MeasureSpec.makeMeasureSpec(
(int) (width * aspectRatio), MeasureSpec.EXACTLY));
}
} else {
final float viewRatio = (float) height / width;
if (aspectRatio > viewRatio) {
int padding = (int) ((width - height / aspectRatio) / 2);
setPadding(padding, 0, padding, 0);
} else {
int padding = (int) ((height - width * aspectRatio) / 2);
setPadding(0, padding, 0, padding);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
return;
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}