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)单位相互转化,写一个简单的工具类

[java] view plaincopyprint?
  1. /**
  2. * 该工具类用于:px,dp,sp的相互转化
  3. * @author coder-pig
  4. * */
  5. public class DisplayUtil {
  6. //1.px转dp
  7. public static int px2dip(Context context, float pxValue) {
  8. final float scale = context.getResources().getDisplayMetrics().density;
  9. return (int) (pxValue / scale + 0.5f);
  10. }
  11. //2.dp转px
  12. public static int dip2px(Context context, float dipValue) {
  13. final float scale = context.getResources().getDisplayMetrics().density;
  14. return (int) (dipValue * scale + 0.5f);
  15. }
  16. //3.px转sp
  17. public static int px2sp(Context context, float pxValue) {
  18. final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
  19. return (int) (pxValue / fontScale + 0.5f);
  20. }
  21. //4.sp转px
  22. public static int sp2px(Context context, float spValue) {
  23. final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
  24. return (int) (spValue * fontScale + 0.5f);
  25. }
  26. }
/**
* 该工具类用于: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的!!!

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

  1. Android 常用计量单位(px,dp,sp,pt,in)

    1.px:屏幕上的点 pixel,表示像素或分辨率.不同设备显示效果相同,一般我们的 HVGA 代表 320x480 像素,这个用的比较多. 2.dp:设备独立像素 device independen ...

  2. android 字体像素转换工具类_android px,dp,sp大小转换工具

    package com.voole.playerlib.util; import android.content.Context; /** * Android大小单位转换工具类 * * float s ...

  3. Android的计量单位px,in,mm,pt,dp,dip,sp

    px   :是屏幕的像素点 in    :英寸 mm :毫米 pt    :磅,1/72 英寸 dp   :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px dip  :等 ...

  4. android 字体px转sp,Android中px,dp,sp区别及换算

    px,dp,sp是Android中常用的距离单位. 基本概念: 屏幕尺寸:指的是屏幕对角线长度,用英寸(in)作为单位,1 in = 2.54 cm. 屏幕分辨率:在横纵向上的像素点数,单位px.一般 ...

  5. android 密度像素,Android屏幕密度适配问题之px,dp,sp等详细介绍

    一  ,android屏幕相关知识 屏幕大小:指屏幕对角线的长度,使用"寸"度量,如4.7寸手机 分 辨  率:分辨率指手机屏幕的像素点个数,如720*1280 指屏幕宽有720个 ...

  6. android px,dp,sp大小转换工具

    package com.voole.playerlib.util;import android.content.Context;/*** Android大小单位转换工具类<br/>* * ...

  7. Android常用计量单位详解(px,in,mm,pt,dp,dip,sp)

    Android常用计量单位详解(px,in,mm,pt,dp,dip,sp) 在传统PC软件开发中经常以像素为单位设计计算机用户界面.例如,定义一个宽度为300像素的表单字段,列之间的间距为5个像素, ...

  8. [css] ui设计中px、pt、ppi、dpi、dp、sp之间的关系?

    [css] ui设计中px.pt.ppi.dpi.dp.sp之间的关系? QQ20150717160352 做了几个移动端的项目之后,深感移动端尺寸换算的必要性,在此做个总结. 先介绍下各自的定义: ...

  9. px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别 屏幕密度

    px   :是屏幕的像素点 in    :英寸 mm :毫米 pt    :磅,1/72 英寸 dp   :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px dip  :等 ...

最新文章

  1. 计算机电缆线对成缆系数,计算机电缆绞合系数 - 无图版
  2. 两帧点云刚性配准的ICP算法
  3. wampserver使用过程中遇到的问题及相关配置
  4. leetcode算法题--两句话中的不常见单词
  5. UVALive - 7163
  6. pydev-python 链接mysql数据库(mac系统)
  7. 重叠IO模型-异步IO
  8. 21天学通HTML5和CSS3第二版,21天学通HTML5+CSS3
  9. 锁 mysql_Mysql的锁(S锁和X锁的区别)
  10. jstack命令使用
  11. java 教室借用管理系统_[内附完整源码和文档] 基于JAVA语言的学生选课信息管理系统...
  12. 杭电2122Ice_cream’s world III
  13. Cross-Modal Retrieval——为什么要使用GAN呢?
  14. mysql管理索引_Mysql管理表和索引
  15. Golang中unsafe.Sizeof()的问题
  16. Android studio 的那些坑
  17. ECHAR学习-Part1 文字特效
  18. 如何使用FreeSSL申请免费证书?
  19. 面试考点:逻辑思维面试题(软件测试)
  20. DropBox系列-安卓DropBox介绍

热门文章

  1. 喜马拉雅全站音频爬取
  2. 蚂蚁区块链开放联盟链发布会 | 巴比特全程支持
  3. DLM 通讯初始化语句
  4. 仙侣奇缘2 无法 启动mysql_仙侣奇缘2服务端
  5. jquery - 公历转农历方法
  6. CSS3实战-文字篇
  7. 用python实现相声、评书自动下载(四)
  8. Android mc怎么和win10联机,我的世界实现跨平台联机 Win10玩家可与手机互联
  9. Activiti7-任务分配
  10. Sentinel-2(哨兵2号)SNAP预处理