簡體   English   中英

Android:可以在布局上使用DP並使其在所有設備上看起來一樣嗎?

[英]Android: Possible to use DP on a layout and make it look the same across devices?

我將逐步解決問題,以便更輕松地進行跟蹤/回答。

第1步:根據Android開發者指南 ,“與密度無關的像素等效於160 dpi屏幕上的一個物理像素”。 這意味着在具有233 dpi的Galaxy S上,1 dp等於1.46物理像素(233/160)。

步驟2:鑒於Galaxy S的分辨率為480x800,這意味着其屏幕高度為548dp(800個物理像素除以1.46)。 因此,如果我將我創建的LinearLayout的高度設置為274dp,則它將占據整個屏幕的一半。 我測試了,並且有效。

步驟3:Galaxy S3的分辨率為306 dpi,因此該設備的1dp = 1.9125物理像素(306/160)。 由於其分辨率為720x1280,因此其屏幕高度為670dp(1280 / 1.9125)。 再次,如果我使用335左右的LinearLayout,它將占用一半的屏幕。 經過測試和工作。

問題 :如何使用與密度無關的像素制作一個在Galaxy S和Galaxy S3上都占據一半屏幕的LinearLayout? 因為如果我使用274dp,它將只占用S的一半屏幕,反之亦然。 還是我的計算在任何步驟中都是錯誤的?

更新 :考慮一下,我想到了以下想法:使用“ ScreenMetrics”獲取設備的dpi和屏幕分辨率。 然后讓我的應用計算以DP為單位的屏幕總尺寸(將分辨率除以(device / 160的dpi),然后將布局的高度動態設置為一半)。我想這是這樣做的方法嗎?

使用LinearLayout包含一個空的View ,然后是您的實際內容,然后是另一個空的View 將空視圖設置為android:layout_height="0dp" android:layout_weight="1"並將您的內容設置為android:layout_height="0dp" android:layout_weight="2" 現在,封閉的LinearLayout將為您的內容提供一半的高度(在屏幕中央),而空白視圖則將另一半(兩個視圖之間均等地分開)。 如果您只希望內容位於屏幕的上半部(或下半部)而不是中心,請刪除其中一個空視圖,然后使用android:layout_weight="1"

如果您要調整屏幕尺寸,請始終使用類似的結構。 僅應將dp測量用於固定的小尺寸,例如邊距或圖標高度。

在星系S上,dp為1.5

ldpi: 1dp = 0.75px
mdpi: 1dp = 1px
hdpi: 1dp = 1.5px
xdpi: 1dp = 2dp

實像素為`(int)(密度* x + 0.5)

你可以讓你與

getResources().getDisplayMetrix().density.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM