Android像素密度dpi/ppi计算公式,px、sp、dp互转工具类——概念解释
本文涉及到 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互转工具类——概念解释相关推荐
- 【Android 屏幕适配】屏幕适配基础概念 ② ( 像素 px 与 密度无关像素 dip | 像素 px 与 密度无关像素 dip 在不同屏幕像素密度 dpi 下的换算关系 )
文章目录 一.像素 px 与 密度无关像素 dip 二.像素 px 与 密度无关像素 dip 在不同屏幕像素密度 dpi 下的换算关系 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 ...
- Android 屏幕尺寸、屏幕分辨率(px)、屏幕像素密度(dpi)、密度无关像素(dp/dip)、屏幕适配
1. dp , dpi , px 关系 (假设已经熟悉了基本概念,也可以参考最后的链接) 2. 运行时dp 如何转换成 px 3. 使用dp 和 px 设计结果比较 参考: Android屏幕适 ...
- 【Android 屏幕适配】屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )
文章目录 一.Android 与 iOS 屏幕宽高比种类 二.屏幕像素密度 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 一.Android 与 iOS 屏幕宽高 ...
- 【Android 屏幕适配】屏幕适配基础概念 ③ ( 屏幕像素密度 DPI 与素材大小关联 | 屏幕像素密度 DPI 与 屏幕密度限定符关联 )
文章目录 一.屏幕像素密度 DPI 与素材大小关联 二.屏幕像素密度 DPI 与 屏幕密度限定符 xhdpi 关联 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 ...
- android获取屏幕像素密度DPI、density、屏幕宽高
获取手机屏幕像素密度 dpi DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDe ...
- 屏幕显示密度dpi_像素密度( DPI )常用于屏幕显示的描述,意思是每英寸像素点的数量。_学小易找答案...
[单选题]Issues of price, place, promotion, and product are ____conventional concerns in planning market ...
- 一文搞清楚安卓屏幕密度、像素密度、分辨率、安卓计量单位(dp)
一.先搞清楚几个概念: 1.屏幕分辨率(px): 分辨率是手机屏幕的像素点总数,一般用屏幕宽的像素点数乘以屏幕高的像素点数.分辨率越大屏幕越细腻,能够显示的细节就越多. 常用的分辨率有320x240. ...
- android 密度像素,Android屏幕密度适配问题之px,dp,sp等详细介绍
一 ,android屏幕相关知识 屏幕大小:指屏幕对角线的长度,使用"寸"度量,如4.7寸手机 分 辨 率:分辨率指手机屏幕的像素点个数,如720*1280 指屏幕宽有720个 ...
- Android:长度单位详解(px、dp、sp)
长度单位 1.重要概念 1.1 屏幕尺寸 1.2 屏幕分辨率 1.3 屏幕像素密度 1.4 屏幕尺寸.分辨率.像素密度三者关系 2.六种单位介绍 2.1.dp和px的换算 2.2.在代码中转换单位 2 ...
- android 单位pt,Android APPUI设计师必知:pt sp dp之间的关系
我们都知道APP UI设计师常用的工具是Ps或者Ai,但是里面都没有sp的单位的.我们先来普及下一些关于Android尺寸单位或者是分辨率一些知识点: px: pixels(像素). 不同设备显示效果 ...
最新文章
- 唐文:挖掘产品生命周期潜藏的商业价值——应用性能管理
- CodeWarrior 初探(1) USBDM 芯片检测
- Spring事务管理机制
- https网站引用http路径的js和css失效解决办法
- 2012年度IT博客大赛10强花落谁家暨圆满落幕
- hutool中身份证工具-IdcardUtil
- 选择技术栈构建通用平台
- SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)
- 必备知识:大数据处理应遵循的原则
- java闭包和lambda关系_Lambda表达式和闭包Closure
- 「移动开发」iuap mobile玩转前端自动化构建
- JSTL标签使用说明
- php 修改文件所有者,PHP 改变文件的所有者
- Linux Swap交换分区介绍
- 台式计算机键盘驱动,提示检测到不兼容的键盘驱动程序怎么解决 教你几个步骤轻松修复...
- 宝付国际严格落实政策要求,助力解决跨境电商交易审核难点
- 智慧园区数据可视化大屏的优势分析
- C语言15大头文件介绍
- Java学习笔记整理-知识梳理+JDK1.8详细文档
- MIPS汇编 汇编程序简介
热门文章
- PostgreSQL存储过程BEGIN块的事务处理
- 判断一个数是否为质数(素数)
- HTML邮件样式不生效,邮件Html踩坑
- 2018DeeCamp面试问答
- 三角形求高公式计算机,直角三角形求高公式 直角三角形怎么求高
- matlab GUI学习笔记4 如何添加并设置下拉菜单以及GUI解决不用直接用load的问题
- GPIO推挽输出和开漏输出模式区别详解
- C盘hiberfil.sys文件可以删除吗?法2(推荐)
- 网络其他计算机无法访问,win7局域网别人无法访问我的电脑是为什么 win7其他电脑无法访问我的电脑如何修复...
- 大型网站SEO该怎么引爆流量_如何学网络推广