2011-01-20 66 views
5

我一直在使用XML文件中的pt單元。現在我需要在運行時設置元素的寬度。我怎樣才能通過點設置寬度,使它與我在其他地方使用的單位相同。我假設我需要乘以分辨率和dpi。代碼示例將是最好的。Android:將點轉換爲像素

+0

請參閱我的帖子,關於將點轉換爲像素http://systemdotrun.blogspot.co.uk/2014/09/whats-point-in-font-sizing.html? – Dori 2014-10-06 18:17:11

回答

10

首先,你應該認真閱讀從Android開發者文檔以下深度文章:

http://developer.android.com/guide/practices/screens_support.html

正中間,你會發現以下標題:

不要在您的代碼中使用硬編碼的像素值

// Convert the dps to pixels 
final float scale = getContext().getResources().getDisplayMetrics().density; 
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f); 
1

您可以使用dip代替pt

+1

我使用pt代替dip,因爲它對非程序員更有意義。如果有人問我有多大,我可以說12分,他們可以知道那是什麼。如果我說像素,那麼他們可能沒有意識到Android像素比PC小得多,如果我說蘸一點,他們將面臨一個新詞。所有這一切。我可以在運行時使用dip嗎?我可以將pt轉換爲dip嗎? – 2011-01-20 16:47:20

+0

關於您在運行時問題的問題。是的,你可以,但你必須將像素乘以屏幕比例因子(你可以用context()。getResources()。getDisplayMetrics()。density)得到)來將像素轉換爲DP。 – C0deAttack 2011-01-20 17:05:12