首页 > 代码库 > New UI-常用计量单位px,dp,sp,pt解析与转换

New UI-常用计量单位px,dp,sp,pt解析与转换

New UI-常用计量单位px,dp,sp,pt解析与转换

           ——转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途!


小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的

力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文

更加的详尽,帮到更多的人,O(∩_∩)O谢谢!

小猪Android开发交流群:小猪Android开发交流群群号:421858269

新Android UI实例大全目录:http://blog.csdn.net/coder_pig/article/details/42145907



本节正文:

对于计量单位,我们习惯性地分为:相对单位与绝对单位,从字眼意义我们就可以

猜到,相对是可以根据不同的情景表现出不同的大小,常用的就有:dp,px,sp;

而绝对单位就是我们制定了一个标准,比如mm(毫米),写死了,1mm就那么多,

什么情况下都是那么多,而常用的还有,in(英寸,2.54cm),pt(磅)印刷业常用

单位,1 pt = 1/72 in!于是乎,我们今天要讨论研究的就是相对单位:px,dp,sp;

相信大家对他们也不陌生吧,比如写死一个ImageView的宽高;margin多少个dp

设置偏移;画一条宽1px的view来形成一条直线等等..那么本节就来

1.研究px,dp,sp的概念

2.单位相互转化,写一个简单的工具类

3.布局的时候为什么尽量用dp,而不适用px?

好了,开始本节的内容吧!



1)px,dp,sp的概念:

技术分享




2)单位相互转化,写一个简单的工具类

/**
 * 该工具类用于:px,dp,sp的相互转化
 * @author coder-pig
 * */

public class DisplayUtil {
	
	//1.px转dp
	public static int px2dip(Context context, float pxValue) { 
        final float scale = context.getResources().getDisplayMetrics().density; 
        return (int) (pxValue / scale + 0.5f); 
    } 
   
    //2.dp转px
    public static int dip2px(Context context, float dipValue) { 
        final float scale = context.getResources().getDisplayMetrics().density; 
        return (int) (dipValue * scale + 0.5f); 
    } 
   
   //3.px转sp
    public static int px2sp(Context context, float pxValue) { 
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; 
        return (int) (pxValue / fontScale + 0.5f); 
    } 
   
    //4.sp转px
    public static int sp2px(Context context, float spValue) { 
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; 
        return (int) (spValue * fontScale + 0.5f); 
    } 

}


3.布局的时候为什么尽量用dp,而不适用px?

答:在上一节我们已经知道了屏幕密度dpi这个概念了,虽然相同尺寸的手机,但是他们的

dpi可能会不同,dpi是单位长度里面的像素点的数目,那么,dpi较小的手机,像素点的就会

比dpi大的手机的像素点大,那么如果我们使用px的话,dpi大的手机可能显示是正常的,

但是dpi较小的手机可能会出现错位,界面与预期效果相差甚远,还可能超出边界!px可以

理解为物理像素,而dp则是虚拟像素,使用dp可以解决上述这些问题,所以我们还是习惯

布局的时候使用dp的!!!

技术分享





参考文献:

http://www.cnblogs.com/yaozhongxiao/archive/2014/07/14/3842908.html






New UI-常用计量单位px,dp,sp,pt解析与转换