获取裁剪意图的显示比率

时间:2013-08-31 14:21:14

标签: android android-intent

我正在使用以下代码从用户的图库中选择与屏幕显示宽度/高度匹配的裁剪图像(以便将其设置为我的全屏活动的背景):

    int PHOTO_WIDTH = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();
    int PHOTO_HEIGHT = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();
    Intent intent = new Intent(Intent.ACTION_PICK, null);
    intent.setType("image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("outputX", PHOTO_WIDTH);
    intent.putExtra("outputY", PHOTO_HEIGHT);

这适用于某些设备,但不适用于其他设备(即使它们具有相同的xhpdi密度)。

如何获取当前屏幕比例(包括状态栏,不包括软键按钮行)并将其设置为PICK-intent?

2 个答案:

答案 0 :(得分:0)

我最终只使用显示宽度/高度作为aspect_xaspect_y参数的值:

Display display = getWindowManager().getDefaultDisplay();
int aspect_x = display.getWidth();
int aspect_y = display.getHeight();

答案 1 :(得分:0)

您还可以使用Configuration提供的值:

  

public int screenHeightDp可用屏幕的当前高度   空间,以dp为单位,对应于屏幕高度资源限定符。

     

public int screenWidthDp可用屏幕的当前宽度   空间,以dp为单位,对应于屏幕宽度资源限定符。

因为您对比率感兴趣,所以单位无关紧要(dp而不是px)。你可以这样配置:

Configuration config = getResources().getConfiguration();