2013-08-31 72 views
1

我使用以下代碼從用戶的畫廊中選擇與屏幕的顯示寬度/高度相匹配的裁剪圖像(以便能夠將其設置爲我的全屏活動的背景) :獲取作物挑選意圖的顯示比例

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意向?

+0

Android沒有作物'Intent':http://commonsware.com/blog/2013/01/23/no-android-does-not-have- crop-intent.html – CommonsWare

+0

我正在使用try/catch(ActivityNotFoundException e),股票和三星圖庫應用程序對此作出了迴應,我還沒有試過其他設備。這是我的應用程序的一小部分,所以我寧願不包含一個3MB庫因此。 – Nick

+2

歡迎您提供證據表明任何這些鏈接到的庫都會將3MB添加到您的應用中。 – CommonsWare

回答

0

我結束了簡單地使用該顯示寬度/高度作爲aspect_xaspect_y參數值:

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

還可以使用由Configuration提供值:

公衆詮釋screenHeightDp當前可用屏幕的高度 空間,以dp爲單位,對應於屏幕高度資源限定符。

public int screenWidthDp可用屏幕的當前寬度 以dp爲單位的空間,對應於屏幕寬度資源限定符。

因爲您對比率感興趣,單位不重要(dp而不是px)。你可以這樣的配置:

Configuration config = getResources().getConfiguration();