是否可以在代碼中指定像素單位。 我的意思是,說我有一個佈局,我想的大小爲20dp,那麼有沒有什麼辦法,而不在佈局XMLAndroid不使用XML指定像素單位(如sp,px,dp)
6
A
回答
26
寫在視圖中可以這樣做:
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = metrics.density * dp;
int pixels = (int) (fpixels + 0.5f);
在一個活動,當然,你離開了getContext()
。
要從縮放像素(sp
)轉換爲像素,只需使用metrics.scaledDensity
而不是metrics.density
。
編輯:由於@Santosh's answer指出,你可以使用實用工具類TypedValue
同樣的事情:
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics);
int pixels = Math.round(fpixels);
對於sp
,替代TypedValue.COMPLEX_UNIT_SP
爲TypedValue.COMPLEX_UNIT_DIP
。
在內部,applyDimension()
的計算與我上面的代碼完全相同。使用哪個版本是您編碼風格的問題。
4
您可以使用
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());
現在的pixels
的價值相當於20dp
的TypedValue包含其他類似的方法,在轉換
相關問題
- 1. CSS px VS Android dp
- 2. 將px轉換爲dp和sp在Android中的/values/dimen.xml中
- 3. 我們應該在android,px,dp,dip或sp中使用哪種測量?
- 4. Android:使用哪個UI元素大小單位(如果dp不工作)
- 5. Android Px到Dp工作示例?
- 6. 是否createScaledBitmap()使用px或dp?
- 7. 何時何時使用以及何時不使用DP和PX措施Android
- 8. 在繪圖中使用「dp」和「sp」
- 9. Photoshop設計從px到dp
- 10. xp中的dp與java dp-px轉換不匹配
- 11. 像素到Dp的轉換android
- 12. Android的設計多平臺(像素DP)
- 13. 爲什麼不使用sp而不是dp?
- 14. 什麼是與CSS的dp(密度獨立像素)單位?
- 15. android-使用SP
- 16. 如何以像素爲單位指定sidebarPanel的寬度?
- 17. 轉換DP沒有上下文,以PX
- 18. 如何比PX不同的單位大小屬性綁定?
- 19. 使用CSS將單位設置爲px(其中沒有單位定義)
- 20. 如何將像素轉換爲dp?
- 21. 爲什麼dp,px,mm在不同的Android手機上看起來不同
- 22. 動態使用RelativeLayout並設置邊距px,dp,inch,mm
- 23. 如何從編程的android中的像素計算dp
- 24. 使用javascript確定圖像大小(以像素爲單位)
- 25. 在Android中使用Dp
- 26. 如何將佈局參數設置爲單位dp android
- 27. 以像素爲單位指定Tkinter文本框的尺寸
- 28. 什麼時候應該在佈局中使用dp或sp?
- 29. 將像素轉換爲sp
- 30. Android 2.1本地鎖定位圖像素
幫助你爲什麼要加0.5? – pankajagarwal 2011-02-16 05:51:26