2012-05-09 77 views
4

我需要將密度獨立像素轉換爲我的活動中的像素。 我想在我的onCreate將傾角轉換爲產生相同值的像素

float pix = dipValue * getResources().getDisplayMetrics().density; 
pixel = Math.round(pix); 

使用這種方法我試過另一種方法

Resources r = getResources(); 
float pix = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 35,r.getDisplayMetrics()); 
value = Math.round(pix); 

兩者都產生相同的值。我認爲問題不在於方法,而在於資源。我是否應該在清單文件中進行任何更改,如

<supports-screens android:resizeable=["true"| "false"] 
       android:smallScreens=["true" | "false"] 
       android:normalScreens=["true" | "false"] 
       android:largeScreens=["true" | "false"] 
       android:xlargeScreens=["true" | "false"] 
       android:anyDensity=["true" | "false"] 
       android:requiresSmallestWidthDp="integer" 
       android:compatibleWidthLimitDp="integer" 
       android:largestWidthLimitDp="integer"/> 

對於我的類似question。但它不能解決我的問題。幫幫我。

+0

[轉換浸在Android中,以PX]可能重複(HTTP://計算器.COM /問題/ 8399184 /轉換浸至PX-中,機器人) – tir38

回答

5

你嘗試

px = dp * (dpi/160) 

密度無關的像素相當於一個 160 dpi屏幕上的一個物理象素,這是一個「中等」密度由系統 假定基線密度屏幕。在運行時,透明 系統根據需要使用屏幕的實際密度來處理dp單位的任何縮放比例。將dp單位轉換爲屏幕 像素很簡單:px = dp *(dpi/160)。例如,在240 dpi 屏幕上,1 dp等於1.5個物理像素。定義應用程序的UI時,應始終使用dp 單位,以確保在不同密度的屏幕上正確顯示您的UI。

請檢查this link瞭解更多詳情。

4

可以在dimen.xml添加DP值,並使用

int pixels = getResources().getDimensionPixelSize(R.dimen.idDimension);

它更容易...