2012-05-09 101 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);

它更容易...