我有一个最终的应用程序设计,我在Photoshop中用PX测量一切。 现在我意识到Android应用程序正在使用DP进行字体大小和其他事情。
我有什么方法可以将PX转换为DP?
答案 0 :(得分:12)
在更实际的说明中,您可以选择增加工作和保真度:
将您的资源缩放到每英寸160个点,将它们放在res/drawable
目录中,然后让操作系统将它们缩放到设备上。
制作两份资源:res/drawable
中每英寸160点,以及res/drawable-hdpi
目录中每英寸240点。让操作系统从非常接近的数字开始缩放确切的设备。
确定您不需要任何缩放并具有原始像素,因此请将您的资源放在res/drawable-nodpi
目录中。这意味着在一台手机上320x480(像素)的图形可能是2英寸×3英寸,而在另一部手机上只有1 1/3英寸×2英寸。
使用draw9patch
工具指定工作的确切缩放策略。这对于防止盒子的角落从缩放中获得“锯齿”以及使全屏图形处理不同的宽高比非常有用。
为您关注的每台设备制作单独的图形,然后依靠可扩展的图形。你需要超越狂热者挥动风格指南试图说服你不要这样做。
哦,作为问题,请为您的字体指定sp
,而不是dp
或pt
。 10点字体是22 sp字体[= 10 *(160/72)或=点数乘以2.222]。 sp
单位可根据用户对小字号,中号字体或大字体的偏好进行缩放。
答案 1 :(得分:5)
来自Android支持的维度单元的this list,这是DP的描述:
与密度无关的像素 - 基于屏幕物理密度的抽象单位。这些单位相对于160 dpi的屏幕,因此一个dp是160 dpi屏幕上的一个像素。 dp与像素的比率将随着屏幕密度而变化,但不一定成正比。注意:编译器同时接受“dip”和“dp”,但“dp”与“sp”更加一致。
这意味着像素和DP之间的“转换”将不一致 - 在某些设备上,比率可能是1DP = 160px,但理论上它可以是任何东西。当您将按钮的宽度设置为100dp
(因为它将动态渲染)时,这一切都很好,但是当您拥有必须具有固定大小的图像时,它会出现问题。
在“Supporting Multiple Screens”上阅读此页面 - Android有一个名为resource directory qualifiers的内容,可让您创建图像资源的特定大小和密度版本。例如,对于低密度屏幕,您可以创建较小版本的图像并将其放在drawable-ldpi
目录中(或drawable-hdpi
用于高密度屏幕)。
tl; dr 您实际上无法“从PX转换为DP”(因为比率不固定),但您可以创建多个版本的图片并告诉Android使用哪个版本资源目录限定符。
答案 2 :(得分:0)
像素是PX,DP或DIP是设备无关的像素。我不认为你需要转换它们。但您可以使用Android工具中的draw9patch
工具来使用可扩展的9patch图像。
答案 3 :(得分:0)
答案 4 :(得分:0)
这是一个在线DP / PX转换工具:http://labs.rampinteractive.co.uk/android_dp_px_calculator/