Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 画中画-纵横比太过极端_Java_Android_Aspect Ratio_Android Picture In Picture - Fatal编程技术网

Java 画中画-纵横比太过极端

Java 画中画-纵横比太过极端,java,android,aspect-ratio,android-picture-in-picture,Java,Android,Aspect Ratio,Android Picture In Picture,好的,我正在为Oreo使用新的画中画(PIP)模式,并使用自定义的纵横比计算: Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x + (size.x / 2); int height = size.y; Rational aspectRatio =

好的,我正在为Oreo使用新的画中画(PIP)模式,并使用自定义的纵横比计算:

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x + (size.x / 2);
    int height = size.y;

    Rational aspectRatio = new Rational(width, height);
    PictureInPictureParams.Builder PIPParamsBuilder = new PictureInPictureParams.Builder();
    PIPParamsBuilder.setAspectRatio(aspectRatio).build();
    enterPictureInPictureMode(PIPParamsBuilder.build());
基本上,它给了我一个比默认的更大的宽度。我的问题是,当我在横向模式下使用相同的代码时,会出现以下错误:

    java.lang.IllegalArgumentException: enterPictureInPictureMode: Aspect ratio is too extreme (must be between 0,418410 and 2,390000).
                  at android.os.Parcel.readException(Parcel.java:1946)
                  at android.os.Parcel.readException(Parcel.java:1888)
                  at android.app.IActivityManager$Stub$Proxy.enterPictureInPictureMode(IActivityManager.java:9750)
                  at android.app.Activity.enterPictureInPictureMode(Activity.java:2119)
                  at com.brickx.creartup.Main.startPIP(Main.java:740)
                  at com.brickx.creartup.Main.onUserLeaveHint(Main.java:751)
                  at android.app.Activity.performUserLeaving(Activity.java:7151)
                  at android.app.Instrumentation.callActivityOnUserLeaving(Instrumentation.java:1572)
                  at android.app.ActivityThread.performUserLeavingActivity(ActivityThread.java:4082)
                  at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:4058)
                  at android.app.ActivityThread.-wrap15(Unknown Source:0)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1700)
                  at android.os.Handler.dispatchMessage(Handler.java:105)
                  at android.os.Looper.loop(Looper.java:164)
                  at android.app.ActivityThread.main(ActivityThread.java:6809)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
日志非常明确:我的纵横比超过了最大值

但我的问题是:为什么我必须处理这个问题?如果宽度和/或高度超过最大值,Android不能自动将其设置为相应的最大值吗


也许我在这里遗漏了一些东西,但我认为我不应该每次输入PIP时都检查设备的宽度,以防它超过最大值…

我认为,这一限制是由于这样一个事实,即纵横比低于0.5和高于2.5(大致)的任何东西都将不实用或不适合使用,因为它占用了屏幕上的空间,用户应该能够在上面滑动/点击


例如,如果允许您将纵横比设置为0.01,其宽度将为1像素,用户几乎不可能与视图交互。

为什么您认为android应该为您处理此问题?