dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
dp也就是dip,这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一 样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度 设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动 将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。

转换代码如下

[java] view plaincopy
  1. /**
  2. * dp、sp 转换为 px 的工具类
  3. *
  4. * @author fxsky 2012.11.12
  5. *
  6. */
  7. public class DisplayUtil {
  8. /**
  9. * 将px值转换为dip或dp值,保证尺寸大小不变
  10. *
  11. * @param pxValue
  12. * @param scale
  13. *            (DisplayMetrics类中属性density)
  14. * @return
  15. */
  16. public static int px2dip(Context context, float pxValue) {
  17. final float scale = context.getResources().getDisplayMetrics().density;
  18. return (int) (pxValue / scale + 0.5f);
  19. }
  20. /**
  21. * 将dip或dp值转换为px值,保证尺寸大小不变
  22. *
  23. * @param dipValue
  24. * @param scale
  25. *            (DisplayMetrics类中属性density)
  26. * @return
  27. */
  28. public static int dip2px(Context context, float dipValue) {
  29. final float scale = context.getResources().getDisplayMetrics().density;
  30. return (int) (dipValue * scale + 0.5f);
  31. }
  32. /**
  33. * 将px值转换为sp值,保证文字大小不变
  34. *
  35. * @param pxValue
  36. * @param fontScale
  37. *            (DisplayMetrics类中属性scaledDensity)
  38. * @return
  39. */
  40. public static int px2sp(Context context, float pxValue) {
  41. final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
  42. return (int) (pxValue / fontScale + 0.5f);
  43. }
  44. /**
  45. * 将sp值转换为px值,保证文字大小不变
  46. *
  47. * @param spValue
  48. * @param fontScale
  49. *            (DisplayMetrics类中属性scaledDensity)
  50. * @return
  51. */
  52. public static int sp2px(Context context, float spValue) {
  53. final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
  54. return (int) (spValue * fontScale + 0.5f);
  55. }
  56. }

Android px、dp、sp之间相互转换相关推荐

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

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

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

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

  3. Android---- android计量单位--dip、px、sp之间区别与联系pixs =dips * (densityDpi/160). dips=(pixs*160)/d...

    android计量单位--dip.px.sp之间区别与联系pixs =dips * (densityDpi/160). dips=(pixs*160)/d [复制链接]     fanly 252 主 ...

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

    New UI-常用计量单位px,dp,sp,pt解析与转换            --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入 ...

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

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

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

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

  7. dp的定义原理和dpi,ppi,px,pt,sp之间的区别

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/48007855 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  8. dp的定义原理和dpi ppi px pt sp之间的区别

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/48007855   文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一 ...

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

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

最新文章

  1. linux停止ftp服务命令,centos没有service命令,怎么启用ftp服务
  2. 清华校友陈怡然、杨越组队进军AI芯片市场,成立苹芯科技,最新Pre-A轮斩获近千万美元...
  3. 关于人脸识别滥用的十个可能的应对方案
  4. 【Python-ML】SKlearn库支持向量机(SVM) 使用
  5. 不同声音的传播速度会一样吗?
  6. Taro+react开发(38)注意请求接口的/
  7. Spark下的word2vec模型训练
  8. 董长青(1980-),男,北京卡达克数据技术中心软件业务本部高级工程师,主要研究方向为大数据、车联网。...
  9. Matlab--绘图及坐标轴命令使用示例
  10. 多元线性回归数据集_TensorFlow学习Program1——13.实现一元、多元线性回归(基于房价数据集)...
  11. mysql触发器 多数据_mysql的触发器同数据库多表的数据操作_MySQL
  12. Centos6.4系统局域网服务之DHCP
  13. 无线路由器破解教程-CDlinux(by 星空武哥)
  14. Java代理模式——CGLIB动态代理
  15. python中re的group方法详解(来自官方文档的权威解释)
  16. win10没有声音(扬声器一直显示未插入)
  17. 527. Word Abbreviation
  18. HTML中enter键触发事件
  19. 网络爬虫——票房网数据抓取及存储
  20. Kingbase数据库实验四 数据库系统的概要、逻辑、物理设计

热门文章

  1. TiDB 源码阅读系列文章(十八)tikv-client(上)
  2. Kafka消费者重置offset读取数据
  3. 用 PHPMailer 发送邮件
  4. ansible文档官网
  5. ECMAScript6入门--Class对象
  6. iOS开发中使用[[UIApplication sharedApplication] openURL:]加载其它应用
  7. hadoop 基准测试与读写测试
  8. linux svn 开机启动
  9. 博文视点大讲堂35期-It's Android Time:程序员创富有道! 圆满结束
  10. Localhost与数据库连接