本文涉及到 px、sp、dp(dip)、分辨率和dpi(像素密度)的概念,以及像素密度的计算 和 px 转换 dp 的计算公式、px、sp、dp互转的java工具类封装。

分辨率:指手机屏幕像素个数,如 720 * 1280 指屏幕宽有720个像素点,高有1280个像素点

PPI英寸像素:Pixles per Inch 又称DPI(Dots-per-Inch),即像素密度,由对角线像素点除以屏幕大小获得,通常达到400PPI已经是非常高的屏幕密度了

PPI计算公式:√(宽2+长2) / 屏幕尺寸

假如一部手机的分辨率是1080×1920,屏幕大小是5英寸,通过宽1080和高1920,根据勾股定理,我们得出对角线的像素数大约是2203个,2203除以5,计算结果是440。440dpi就是屏幕密度

下表是Android手机的密度分类:

密度 ldpi低分辨率 mdpi中 hdpi高 xhdpi超高 xxhdpi超超高分辨率 xxxhdpi超超超高分辨率
密度值 120 160 240 320 480 640
分辨率 240*320 320*480 480*800 120*1280 1080*1920

根据此表得到比例 ldpi:mdpi:hdpi:xhdpi:xxhdpi = 3:4:6:8:12

问题:假设在界面上绘制一个长度100px的线段,在分辨率为320*480的手机上,屏幕密度为160,分辨率为480 * 800屏幕上,屏幕密度为240,同样是100像素在两个不同分辨率屏幕上显示的长度就会不同,为了能在不同屏幕密度下得到相同长度的线段,我们使用dp为线段长度单位。

独立像素密度dp::density-independent pixel(密度无关像素)各种屏幕密度不同导致同样像素大小的长度,在不同密度的屏幕下的显示长度不同,相同长度的屏幕高度屏幕含有更多的像素点,android系统使用mdpi即密度值为160的屏幕作为标准,在这个屏幕上1px = 1dp,所以我们可以使用不同密度的比例计算对应屏幕的px与dp比例关系。

dp,px换算公式:px = dp * (dpi/160) dp = px / ( dpi /160 )

放大像素sp:用于TextView的字号,使用sp当用户字号设置发生改变时,字体可以自动调整。

默认情况下认为sp和dp一致是没有问题的,字体大小为“普通”,这时候dp和sp两个单位保持一致。但当修改了字体大小之后,以sp为单位的字体都会进行相应的缩放,所以谷歌推荐的字体单位的名字才叫做sp(scaled pixels)。

实际使用时可以封装转换工具类转换px , sp 和 dp

public class DisplayUtils{//将px转换为dp//scale 是密度因子,相当于(dpi /160 )public static int px2dp(Context context,float pxValue){final float scale = context.getResources().getDisplayMetrics().density;//在代码中转换时最后加上了0.5f,Android官方文档给的解释是为了向上取整,这样转换也就更精确return (int) (pxValue / scale + 0.5f);}//将dp转为pxpublic static int dp2px(Context,float dipValue){final float scale = context.getResources().getDisplayMetrics().density;return (int) (pxValue * scale + 0.5f);}//dp转sppublic static int px2sp(Context context,float pxValue){final float fontScale = context.getResources().getDisplayMetrics().scaleDensity;return (int) ( pxValue / fontScale + 0.5f )}//dp转sppublic static int sp2[x(Context context,float spValue){final float fontScale = context.getResources().getDisplayMetrics().scaleDensity;return (int) ( pxValue * fontScale + 0.5f )}
}

Android像素密度dpi/ppi计算公式,px、sp、dp互转工具类——概念解释相关推荐

  1. 【Android 屏幕适配】屏幕适配基础概念 ② ( 像素 px 与 密度无关像素 dip | 像素 px 与 密度无关像素 dip 在不同屏幕像素密度 dpi 下的换算关系 )

    文章目录 一.像素 px 与 密度无关像素 dip 二.像素 px 与 密度无关像素 dip 在不同屏幕像素密度 dpi 下的换算关系 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 ...

  2. Android 屏幕尺寸、屏幕分辨率(px)、屏幕像素密度(dpi)、密度无关像素(dp/dip)、屏幕适配

    1. dp , dpi , px 关系 (假设已经熟悉了基本概念,也可以参考最后的链接)  2. 运行时dp 如何转换成 px  3.  使用dp 和 px 设计结果比较 参考: Android屏幕适 ...

  3. 【Android 屏幕适配】屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )

    文章目录 一.Android 与 iOS 屏幕宽高比种类 二.屏幕像素密度 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 一.Android 与 iOS 屏幕宽高 ...

  4. 【Android 屏幕适配】屏幕适配基础概念 ③ ( 屏幕像素密度 DPI 与素材大小关联 | 屏幕像素密度 DPI 与 屏幕密度限定符关联 )

    文章目录 一.屏幕像素密度 DPI 与素材大小关联 二.屏幕像素密度 DPI 与 屏幕密度限定符 xhdpi 关联 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 ...

  5. android获取屏幕像素密度DPI、density、屏幕宽高

    获取手机屏幕像素密度 dpi DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDe ...

  6. 屏幕显示密度dpi_像素密度( DPI )常用于屏幕显示的描述,意思是每英寸像素点的数量。_学小易找答案...

    [单选题]Issues of price, place, promotion, and product are ____conventional concerns in planning market ...

  7. 一文搞清楚安卓屏幕密度、像素密度、分辨率、安卓计量单位(dp)

    一.先搞清楚几个概念: 1.屏幕分辨率(px): 分辨率是手机屏幕的像素点总数,一般用屏幕宽的像素点数乘以屏幕高的像素点数.分辨率越大屏幕越细腻,能够显示的细节就越多. 常用的分辨率有320x240. ...

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

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

  9. Android:长度单位详解(px、dp、sp)

    长度单位 1.重要概念 1.1 屏幕尺寸 1.2 屏幕分辨率 1.3 屏幕像素密度 1.4 屏幕尺寸.分辨率.像素密度三者关系 2.六种单位介绍 2.1.dp和px的换算 2.2.在代码中转换单位 2 ...

  10. android 单位pt,Android APPUI设计师必知:pt sp dp之间的关系

    我们都知道APP UI设计师常用的工具是Ps或者Ai,但是里面都没有sp的单位的.我们先来普及下一些关于Android尺寸单位或者是分辨率一些知识点: px: pixels(像素). 不同设备显示效果 ...

最新文章

  1. 唐文:挖掘产品生命周期潜藏的商业价值——应用性能管理
  2. CodeWarrior 初探(1) USBDM 芯片检测
  3. Spring事务管理机制
  4. https网站引用http路径的js和css失效解决办法
  5. 2012年度IT博客大赛10强花落谁家暨圆满落幕
  6. hutool中身份证工具-IdcardUtil
  7. 选择技术栈构建通用平台
  8. SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)
  9. 必备知识:大数据处理应遵循的原则
  10. java闭包和lambda关系_Lambda表达式和闭包Closure
  11. 「移动开发」iuap mobile玩转前端自动化构建
  12. JSTL标签使用说明
  13. php 修改文件所有者,PHP 改变文件的所有者
  14. Linux Swap交换分区介绍
  15. 台式计算机键盘驱动,提示检测到不兼容的键盘驱动程序怎么解决 教你几个步骤轻松修复...
  16. 宝付国际严格落实政策要求,助力解决跨境电商交易审核难点
  17. 智慧园区数据可视化大屏的优势分析
  18. C语言15大头文件介绍
  19. Java学习笔记整理-知识梳理+JDK1.8详细文档
  20. MIPS汇编 汇编程序简介

热门文章

  1. PostgreSQL存储过程BEGIN块的事务处理
  2. 判断一个数是否为质数(素数)
  3. HTML邮件样式不生效,邮件Html踩坑
  4. 2018DeeCamp面试问答
  5. 三角形求高公式计算机,直角三角形求高公式 直角三角形怎么求高
  6. matlab GUI学习笔记4 如何添加并设置下拉菜单以及GUI解决不用直接用load的问题
  7. GPIO推挽输出和开漏输出模式区别详解
  8. C盘hiberfil.sys文件可以删除吗?法2(推荐)
  9. 网络其他计算机无法访问,win7局域网别人无法访问我的电脑是为什么 win7其他电脑无法访问我的电脑如何修复...
  10. 大型网站SEO该怎么引爆流量_如何学网络推广