设计师的设计稿是px,我该怎么用dp布局啊?

nerds 发布于 2014/06/30 21:49
阅读 12K+
收藏 3
如题,设计师给我的设计稿是以px为单位的,按钮大小,控件间距等都是用px标记的,
Android推荐用dp为单位,
有实际应用开发经验的同学请告诉我该怎么办?
加载中
0
苏凌志
苏凌志
  1. 可以写一个工具类,将px转换成dp,详细写法如下:
  2. import android.content.Context;  
  3.   
  4. public class DensityUtil {  
  5.   
  6.     /** 
  7.      * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 
  8.      */  
  9.     public static int dip2px(Context context, float dpValue) {  
  10.         final float scale = context.getResources().getDisplayMetrics().density;  
  11.         return (int) (dpValue * scale + 0.5f);  
  12.     }  
  13.   
  14.     /** 
  15.      * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 
  16.      */  
  17.     public static int px2dip(Context context, float pxValue) {  
  18.         final float scale = context.getResources().getDisplayMetrics().density;  
  19.         return (int) (pxValue / scale + 0.5f);  
  20.     }  
  21. }  
苏凌志
苏凌志
回复 @nerds : (⊙o⊙)…真实的项目操作中我是这么干的:美工给了我在720p屏幕下的设计图,全都是px标注的,我就在720p分辨率的机器上把px的值全部转换成dp,然后填进去。其他分辨率的也按这个数值……比如魅族那种屏幕比例就果断放弃了,因为时间有限,人手有限。
nerds
nerds
回复 @苏凌志 : 你有没有实践开发经验啊,不要纸上谈兵啊。
苏凌志
苏凌志
回复 @nerds : 1,从需求上讲因为你的程序可能运行在不同分辨率的屏幕上,而且px是定好的,所以会出现不同屏幕上换算出来的dp是不同的,因此这样做是有必要的。2,从性能上讲布局每次生成本来都要加载长度和宽度的值,以上代码只做了些计算,对性能的损耗几乎可以忽略不计
nerds
nerds
每次运行程序都要动态设置,这样好吗?
0
xesam
xesam
看感觉
0
有初啊
有初啊

不建议去用代码做PX2DP的管理, 这样, 只会让这样的变换充斥着整个工程, 除此之外, 也不利于原始的静态布局.

建议参考官方design设计规范.

p.s.先与设计师确认他的原稿是按照哪个规格设计的吧, 然后再对着Android的设计规范来.


0
JerryLin
JerryLin

设计师一般都用px(感觉px是他们的行业语言,对他们来说是最精确的)

px和dp之间,android有定义对应关系,mdpi下1px=1dp

所以我们在设计时,通常选择一块主流的屏幕,给设计师的的屏幕参数是px,开发者用对应的dp,这种情况下px和dp之间是确定的对应关系。

在这块屏幕上开发完成后,再将屏幕变形(长宽比不同的屏幕,像素大小不同的屏幕),从中找出需要变化的UI元素,看看能否用9patch图片表达。然后改变dpi,看看是否要调整px和dp的对应关系。最后在实际的不同属性的屏幕上微调。

0
l
loash
有个“标你妹啊”,自动标注工具,可以切换不同的尺寸单位,非常好用,不过是云端的工具:http://www.biaonimeia.com/
0
l
nerds
nerds
多谢
返回顶部
顶部