Skip to content

Commit 375c472

Browse files
committed
Improve picture in picture transition
1 parent e48cdc0 commit 375c472

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

app/src/main/java/com/perflyst/twire/activities/stream/StreamActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,10 @@ public void onBackPressed() {
200200
public void onUserLeaveHint() {
201201
super.onUserLeaveHint();
202202

203+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
204+
return;
205+
}
206+
203207
if (getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)) {
204208
mStreamFragment.prePictureInPicture();
205209
enterPictureInPictureMode();

app/src/main/java/com/perflyst/twire/fragments/StreamFragment.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.app.Activity;
44
import android.app.PendingIntent;
5+
import android.app.PictureInPictureParams;
56
import android.content.BroadcastReceiver;
67
import android.content.ComponentName;
78
import android.content.Context;
@@ -22,6 +23,7 @@
2223
import android.transition.Transition;
2324
import android.util.DisplayMetrics;
2425
import android.util.Log;
26+
import android.util.Rational;
2527
import android.view.Display;
2628
import android.view.DisplayCutout;
2729
import android.view.LayoutInflater;
@@ -652,6 +654,28 @@ public void onPlayWhenReadyChanged(boolean isPlaying, int _ignored) {
652654
}
653655
}
654656

657+
@RequiresApi(api = Build.VERSION_CODES.O)
658+
@Override
659+
public void onSurfaceSizeChanged(int width, int height) {
660+
Rect videoRect = new Rect();
661+
mVideoView.getVideoSurfaceView().getGlobalVisibleRect(videoRect);
662+
663+
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
664+
videoRect.left += totalVerticalInset;
665+
videoRect.right += totalVerticalInset;
666+
}
667+
668+
PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder()
669+
.setAspectRatio(new Rational(16, 9))
670+
.setSourceRectHint(videoRect);
671+
672+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
673+
builder.setAutoEnterEnabled(true);
674+
}
675+
676+
mActivity.setPictureInPictureParams(builder.build());
677+
}
678+
655679
/**
656680
* Hides the preview image and updates the state
657681
*/

0 commit comments

Comments
 (0)