2012-11-29 37 views
0

雖然我們在這裏,Android的等效物[UIScreen mainScreen].scale是什麼?[UIScreen mainScreen] .bounds.size.width的Android等價物是什麼?

以下等式是否正確?

[UIScreen mainScreen].bounds.size.width = displayMetrics.widthPixels 
[UIScreen mainScreen].scale = displayMetrics.density 

你在哪裏得到displayMetrics像這樣:

DisplayMetrics displayMetrics = new DisplayMetrics(); 
Display display = ((WindowManager) someContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
display.getMetrics(displayMetrics); 

的事情是,我加上iOS與Android的措辭混淆。

這些UIScreen值的定義是這些:

界限

包含屏幕的邊界矩形,以點爲單位。 (只讀)

規模

與屏幕相關聯的天然比例因子。 (只讀)

@屬性(非原子,只讀)CGFloat的規模

討論

此值反映到從 缺省邏輯座標空間轉換爲裝置座標的 空間所需要的標度因子這個屏幕。默認的邏輯座標空間使用 點進行測量,其中一個點大約等於1/160英寸。 如果設備的屏幕具有相當相似的像素密度,則比例尺 因子通常設置爲1.0,以便一個點映射到一個像素。 但是,具有明顯不同像素密度的屏幕可能會將此屬性設置爲較高的值。

我在想邊界的寬度是否等於DisplayMetrics的widthPixels,以及scale值是否等於Android上的密度值。

+0

我從來沒有在iOS上編程,但閱讀[Android:如何獲取屏幕尺寸](http://stackoverflow.com/q/1016896/1267661)獲取屏幕寬度。無法幫助你'[UIScreen mainScreen] .scale'我不知道你在做什麼或者是什麼。 – Sam

+0

問題是,我正在絆倒術語 - 以及我不相信誰寫的文檔正確使用這些條款的事實。我將更詳細地更新這個問題。 – user5243421

回答

3
[UIScreen mainScreen].bounds.size.width = displayMetrics.widthPixels

正確的,在像素屏(顯示器),這裏沒有什麼複雜的寬度。

[UIScreen mainScreen].scale = displayMetrics.density

不是。它們具有相似的價值,但絕對不相等。

我會試着解釋一下scale是什麼。我們擁有屏幕分辨率爲1024x768的iPad 1,我們擁有雙倍分辨率的iPad 3(蘋果營銷稱爲Retina),我們希望應用程序可以在兩種設備上使用。因此,該應用程序適用於1024x768分辨率(邏輯點),但操作系統會轉換爲使用縮放比例(iPad 1上的scale = 1.0,iPad 3上的scale = 2.0)的每個設備上的物理像素。 例如,當您在邏輯座標(1,1,20,40)上繪製矩形時,在iPad 3上繪製像素(2,2,50,80)。

目前只定義了兩個值:1.02.0

密度是一個類似的縮放因子而計算出不同

這是密度獨立像素單元,其中,一個DIP是一個像素上的約160dpi屏幕 注意,再次將其轉換比例因子邏輯點(在Android上稱爲DIP)轉換爲屏幕像素。

iOS規模和Android密度的區別在於邏輯單元的定義不同。

+0

有趣!所以,絕對沒有辦法在Android上獲得相同的比例值? – user5243421

+1

@DarrenGreen真正的問題是 - 爲什麼有人想要這樣做?現在有一種方法可以在Android上使用'scale',但絕對不能在iOS上使用'density'。在大多數情況下,您只使用邏輯點而不關心像素。 – Sulthan

-2

我用這個:

private void SetScreenSizes() { 
     DisplayMetrics displaymetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
     intScreenWidth = displaymetrics.widthPixels; 
} 
+0

你只是重複我在我的問題中寫的內容。主要問題是:是否相當於'[UIScreen mainScreen] .bounds.size.width'? – user5243421

+0

你爲什麼不登錄並看到? – daniel

+0

我不明白這是如何工作的。我沒有一個Android設備可以告訴我其UIScreen的界限,而且我沒有iOS設備,它將爲我的DisplayMetrics提供widthPixels。你看到我在做什麼?我也沒有與iOS設備的屏幕大小和分辨率完全匹配的Android設備。 – user5243421

相關問題