画中画 - 宽高比过于极端

时间:2018-03-21 10:12:18

标签: java android aspect-ratio android-picture-in-picture

好的,我正在使用Oreo的新画中画(PIP)模式,我用这个计算自定义宽高比:

ListView lst1= (ListView) findViewById(R.id.lst1);

CheckBox cb = (CheckBox) findViewById(R.id.cbSpeciality);
for (int i=0;i< specialties.length;i++)
{
  cb = (CheckBox)lst1.getChildAt(i).findViewById(R.id.cbSpeciality);
  if(cb.isChecked()){

   Log.d("asdf", "Gijo" );
   itemSelectedNameJson.put(specialties[i].getName());
   itemSelectedIdJson.put(specialties[i].getId());

    }
 }

基本上它给我的宽度比默认的宽一点。我的问题是,当我在横向模式下使用相同的代码时,我收到此错误:

    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());

日志非常明确:我的宽高比超过了最大值。

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

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

1 个答案:

答案 0 :(得分:2)

我认为,这种限制是由于这样的事实,即任何宽高比小于0.5且大于2.5(大致)的东西都是不实用或令人不愉快的,因为它占用了屏幕上的空间,用户应该能够轻扫/点按它。

例如,如果允许您将宽高比设置为0.01,则宽度将为1像素,并且用户无法与视图进行交互。