2016-09-12 18 views
0

我已經閱讀了辦公室文件,但仍然無法理解它!這個例子中佈局的最小寬度是如何工作的?

我正在玩和試驗Android中最小寬度的佈局,它對我沒有任何意義。

我已經創建了這些佈局:sw-300dp/350dp/360dp/400dp/450dp/500dp/ 但我的Galaxy S7使用sw-360dp layout。但是360dp遠離getDisplayMetrics();或我從GSMArena獲得的屏幕數字。那麼爲什麼Galaxy S7使用360dp而不是500dp,因爲xdpi是580dp並且接近500dp?

測試電話:三星Galaxy S7

屏幕尺寸: 5.1"

分辨率: 1440x 2560(577 ppi)的

從DET的logcat我retrived以下屏幕值的電話:

getDisplayMetrics().densityDpi: 640 
getDisplayMetrics().xdpi: 580 
getDisplayMetrics().ydpi: 575: 
getDisplayMetrics().widthPixels: 1440 
+0

寬度爲1440像素。那是多少個dp? DisplayMetrics將爲您提供設備的像素與dp的比率 –

+0

@FletcherJohns我不知道有多少dp即是。 – Muddz

+0

什麼是getDisplayMetrics()。density? –

回答

1

S7上的屏幕密度爲4.0

這意味着每個dp有4個像素,因此屏幕寬度爲1440/4 = 360dp。

我使用下列方法頻繁:

public static int dpToPx(int dp) { 
    return (int) (dp * Resources.getSystem().getDisplayMetrics().density); 
} 

public static int pxToDp(int px) { 
    return (int) (px/Resources.getSystem().getDisplayMetrics().density); 
} 
+0

Ahaaa!所以我只需要用它的密度數字來劃分任何屏幕的寬度就可以得到最小的寬度! – Muddz

+0

差不多。 「最小寬度」的思想是佈局不會在寬度小於360dp的屏幕上使用。例如,嘗試刪除該佈局,然後查看手機使用哪一個。我的猜測是它會使用350dp的。 –

+0

是的,它使用sw300dp。但是,是否有任何標準的swxxxdp模式/表單可以告訴你哪些數字是用於屏幕尺寸/模型的,還是必須計算不同電話的每種佈局的所有數據? – Muddz

相關問題