在实现画中画功能时如何解决长宽比问题?

时间:2019-02-27 12:56:51

标签: java android xml picture-in-picture

我正在尝试在应用程序中包括画中画(PiP)功能。我遇到以下错误:

 Caused by: java.lang.IllegalArgumentException: enterPictureInPictureMode: Aspect ratio is too extreme (must be between 0.418410 and 2.390000).

我想知道如何解决此问题。我通过在xml和Java文件中进行更改尝试了不同的技术。没有人帮助解决我的问题。

为了更加清晰,我包括了我的Java和xml代码:

Java:

 Rational aspectRatio = new Rational(videoView.getWidth(), videoView.getHeight());
 pictureInPictureParamsBuilder.setAspectRatio(aspectRatio).build();
 enterPictureInPictureMode(pictureInPictureParamsBuilder.build());

XML:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.courses.oustchat.VideoPipActivity">
    <VideoView
        android:id="@+id/pipvideoview"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_margin="4dp"
        android:adjustViewBounds="true"/>
</RelativeLayout>

请。确实为此提供了解决方案。

谢谢。

1 个答案:

答案 0 :(得分:0)

之所以会发生此错误,是因为videoView.getWidth和.getheight方法提供的值比pip模式支持更多,因为例外情况是您设置的宽高比大于pip模式支持。不用自己设置比例

pictureInPictureParamsBuilder.build();
enterPictureInPictureMode(pictureInPictureParamsBuilder.build());

或者如果您要设置自定义,而不是像下面这样,但是您的比率必须在0.418410和2.390000之间:

Rational aspectRatio = new Rational(192, 108);
pictureInPictureParamsBuilder.setAspectRatio(aspectRatio).build();
enterPictureInPictureMode(pictureInPictureParamsBuilder.build());