首页 > 代码库 > 设计师给了px单位的标注,Android开发到底要设置多少dip、dp、sp?
设计师给了px单位的标注,Android开发到底要设置多少dip、dp、sp?
本文链接 http://blog.csdn.net/xiaodongrush/article/details/29560431
1. 要开发一款Android APP,设计师和开发要约定哪些事情?
首先,选择一款主流机型。
然后,设计师根据该机型的屏幕尺寸设计效果图,给出px单位的标注。
最后,开发根据该机型,可以算出px与dp的换算方法,根据px单位的标注,设置为dp为单位的标注。
备注:1dp=1dip=1sp,对于一般长宽dp或者dip都可以,sp是字体专用单位,在操作系统中设置大中小号字体后,可以改变sp的显示大小。
这样做可以保证在这款机型上,设计师的设计完全表现。对于其他机型,只要尺寸相差不是很大,显示效果相差不会太大。如果是在手机上设计,在pad上显示,相差就会比较大了。
2. 举例说明
假设选择GalaxyNexus作为开发的目标机型。
该机型的屏幕尺寸是720x1280。设计师在720x1280的画布上进行设计。
根据计算公式,得知Galaxy Nexus上面,1dip=1dp=1sp=2px。所以对于40px的标注,开发需要给出20dip设置即可。
换算代码如下,参考自http://www.imyukin.com/?p=277
public static int dip2px(Context context, float dipValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(dipValue * scale + 0.5f); } public static int px2dip(Context context, float pxValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue / scale + 0.5f); }3. 没办法保证不同设备之间的完全适配
http://su1216.iteye.com/blog/1569029,这篇讲的不错,只有当手机A的屏幕密度/手机B的屏幕密度=手机A的屏幕宽度/手机B的屏幕宽度的时候,A手机上设置的dip,sp,dp单位到了B手机上,才能实现等比缩放。这个条件太苛刻了,所以不可能有完全的适配。
4. 不能做到完全适配,还能做些什么
既然绝对长度在不同手机之间不能完全适配,那么就减少使用绝对长度的机会。
5. UI适配其他方面的事情
本文主要是说一下标注转化的实际中怎么用的问题,UI适配还有很多地方要注意。比如:组件背景中常用9-patch,线性布局与相对布局,多种密度图片drawable-hdpi、drawable-ldpi和drawable-mdpi等。
9-patch图片就是注意左边和下边的黑线控制缩放区域,右边和上边的黑线控制内容区域,很多人容易忽视内容区域。相对布局的用法还是比较多的,这里不展开了。多种分辨率图片,一般没条件切那么多图的话,给drawable-hdpi也就够了,多准备几款测试手机,看看效果比较重要。