2012-03-11 375 views
0

我想在Java中创建一个简单的Android应用程序,但我在路上遇到了一个碰撞。如何将像素转换为dp?

我有一个数组列表,其中包含许多位图,我将它们绘制到画布上,但我使用的是像素的测量,并且在大多数设备上都没有出现。

那么有什么方法可以找出我的图形在dp中的大小,并用dp将它缩放到屏幕密度/大小并用dp或dip定位它。

我的图形(正方形):

在LDPI图形大小= 50px的

在MDPI图形尺寸= 960x75像素

在华电国际平面尺寸= 100px的

Everyting其他在代码中很好,除了它看起来很奇怪吗?

任何帮助,将不胜感激。

James。

+1

你看[这里](http://stackoverflow.com/questions/4605527/converting-pixels-to-dp-in-android)? – dldnh 2012-03-11 19:40:10

回答

7

从Android显影剂DOC:

定义UI布局时应该使用,以表达布局尺寸或位置的密度无关的方式的虚拟像素。 与密度无关的像素相当于160 dpi屏幕上的一个物理像素,这是系统为“中等”密度屏幕假设的基准密度。在运行时,系统根据使用的屏幕的实际密度,根据需要透明地处理dp单位的任何缩放比例。将dp单位转换为屏幕像素很简单:px = dp *(dpi/160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。定义应用程序的用户界面时,你应该总是使用dp单位,确保在屏幕上的UI的正确显示不同密度

看到this获取更多信息。

1
/** 
* Convert dp in pixels 
* @param dp 
* @return 
*/ 
public int getPx(int dp){  
    float scale = getResources().getDisplayMetrics().density; 
    return((int) (dp * scale + 0.5f)); 
} 
+0

你为什么要加上.5f? – 2013-01-19 23:27:31

+1

仅用于四舍五入,但您可以改为使用Math.round方法:int px = Math.round(dp * scale); – user23 2013-01-20 23:42:33

+1

问题是px到dp。为什么回答dp到px? – Ramprasad 2013-03-22 05:37:26