px、dp和sp,这些单位有什么区别?

SAP PP模块 MRP配置实战:5步完成工厂级物料需求计划激活 本文详细介绍了SAP PP模块中物料需求计划(MRP)的工厂级配置实战,通过5个关键步骤从基础环境准备到最终激活。内容涵盖SPRO后台配置、MRP控制者定义、主数据设置及核心参数调整,帮助顾问快速掌握MRP配置清单的完整流程,确保物料需求计划的高效运行。 阅读详情

转自:http://blog.youkuaiyun.com/scyatcs/article/details/20330111

一、怎么获取android的屏幕像素、屏幕密度、屏幕尺寸?

        在一个Activity的onCreate方法中,编写以下代码:
          DisplayMetrics metric = new DisplayMetrics();
         getWindowManager().getDefaultDisplay().getMetrics(metric);

          int width = metric.widthPixels;  // 宽度(PX)
          int height = metric.heightPixels;  // 高度(PX)

          float density = metric.density;  // 密度(0.75 / 1.0 / 1.5)
          int densityDpi = metric.densityDpi;  // 密度DPI(120 / 160 / 240)

         需要注意的是,在一个低密度的小屏手机上,仅靠上面的代码是不能获取正确的尺寸的。
         比如说,一部240x320像素的低密度手机,如果运行上述代码,获取到的屏幕尺寸是320x427。
         因此,研究之后发现,若没有设定多分辨率支持的话,
         Android系统会将240x320的低密度(120)尺寸转换为中等密度(160)对应的尺寸,
         这样的话就大大影响了程序的编码。
         所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens节点,如下:

        <supports-screens
            android:smallScreens="true"
            android:normalScreens="true"
            android:largeScreens="true"
            android:resizeable="true"
            android:anyDensity="true" />

        这样当前的Android程序就支持了多种分辨率,那么就可以得到正确的物理尺寸了。

二、各个单位的区别

px:

即像素,1px代表屏幕上一个物理的像素点;

px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示。


dp:

这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度。假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向),160dpi就是这部手机的像素密度,像素密度的单位dpi是Dots Per Inch的缩写,即每英寸像素数量。横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。

不同的手机/平板可能具有不同的像素密度,例如同为4寸手机,有480x320分辨率的也有800x480分辨率的,前者的像素密度就比较低。Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。例如界面上有一个长度为“80dp”的图片,那么它在240dpi的手机上实际显示为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px。如果你拿这两部手机放在一起对比,会发现这个图片的物理尺寸“差不多”,这就是使用dp作为单位的效果,见下图。

dip:

与dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后来为了与sp统一就建议使用dp这个名字了。

sp:

与缩放无关的抽象像素(Scale-independent Pixel)。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。

还有几个比较少用到的尺寸单位:

mm:

即毫米;

in:

即英寸,1英寸=2.54厘米(约);

pt:

1pt=1/72英寸=0.035厘米;

最佳实践,文字的尺寸一律用sp单位,非文字的尺寸一律使用dp单位。例如textSize="16sp"、layout_width="60dp";偶尔需要使用px单位,例如需要在屏幕上画一条细的分隔线时:

<View layout_width="match_parent" layout_height="1px"/>

 三、在代码中dp与px的转换

       

Android系统中,默认的单位是像素(px)。也就是说,在没有明确说明的情况下,所有的大小设置都是以像素为单位。

如果以像素设置大小,会导致不同分辨率下出现不同的效果。那么,如何将应用中所有大小的单位都设置为’dp’呢?
实际上TextView.setTextSize()重载了根据单位设置大小的方法。

笔者在此基础上实现了以下方法:

/**
 * 获取当前分辨率下指定单位对应的像素大小(根据设备信息)
 * px,dip,sp -> px
 * 
 * Paint.setTextSize()单位为px
 * 
 * 代码摘自:TextView.setTextSize()
 * 
 * @param unit  TypedValue.COMPLEX_UNIT_*
 * @param size
 * @return
 */

public float getRawSize(int unit, float size) {
       Context c = getContext();
       Resources r;

       if (c == null)
           r = Resources.getSystem();
       else
           r = c.getResources();
        
       return TypedValue.applyDimension(unit, size, r.getDisplayMetrics());
}

下面是网友提供的方法:

/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/

public static int dip2px(Context context, float dpValue) {
  final float scale = context.getResources().getDisplayMetrics().density;
  return (int) (dpValue * scale + 0.5f);
}

/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/

public static int px2dip(Context context, float pxValue) {
  final float scale = context.getResources().getDisplayMetrics().density;
  return (int) (pxValue / scale + 0.5f);
}
Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比) 本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。 阅读详情

相关推荐

OpenClaw:深度学习驱动的智能编程工具实战解析

智能编程工具通过深度学习技术革新传统开发流程,其核心在于代码语义理解与实时协作能力。这类工具采用AI代码补全、错误预测等技术,显著降低开发者认知负荷,尤其适用于复杂业务逻辑开发和遗留系统维护场景。以OpenClaw为例,其智能填充和上下文感知功能可提升40%编码效率,减少65%调试时间。关键技术实现包含自然语言处理、代码静态分析等,在金融科技、电商系统等领域具有广泛应用前景。热词提示:代码理解引擎、智能工作流整合展现了当前AI辅助开发的最新趋势。

chubaisheng8627的博客 320

android中常见单位 dp,sp,px,pt,in,mm,dpi,dip详解

android中常见单位 dp,sp,px,pt,in,mm,dpi,dip详解1. dp dp(与密度无关的像素):长度单位,在 100 dpi 屏幕上,1dp=1px=1/100英寸。随着密度变化,对应的像素数量也变化,但并没有直接的变化比例。 dp常作为空间大小单位。 2. sp 与刻度无关的一种像素,与dp类似,但是可以根据用户的字体大小首选项进行缩放。主要用于字体显示。 3. px

看淡一切的专栏 2672

IPSec Over GRE和GRE Over IPSec技术

IPSec Over GRE 和 GRE Over IPSec 一. 技术介绍 IPsec     主要作用是对数据进行加密,因为他能提供所有有时候被单独用作实现加密的一种方法!IPsec建立的是一个逻辑隧道,并不是真正意义上的隧道!并且不能提供路由功能,因为IPsec不支持非ip流量,也不支持广播(组播)! GRE     (通用路由封装)能很好的提供一个真正意义上的点对点的隧道,GRE是一种三层VPN封装技术。GRE可以对某些网络层协议(如IPX、Apple Talk、IP等)的报文进行封装,使封装后

qq_56228347的博客 9870

dp和sp的区别

一、dp(dip device independent point) 一种基于密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。和设备硬件有关 二、sp(scaled pixels) 主要用于字体显示,和dp类似,和刻度无关的一种像素。区别是sp会根据用户调节的字体大小改变。 ...

u014302041的博客 1万+

Ubuntu 22.04 “软件与更新”装了NVIDIA驱动,WiFi等设备不见了

在Win10装了Ubuntu22.04的双系统,台式机里面有NVIDIA 3080Ti的独立显卡,Ubuntu默认使用的nouveau驱动,需要更换成NVIDIA相应的驱动,在软件和更新里面一键安装了NVIDIA-driver-535-server之后,发现wifi、蓝牙等设备消失了。这个问题的根源据说跟这个nouveau驱动有关,希望linux社区可以解决这个问题。命令安装后 sudo reboot就可以重新看到WiFi以及蓝牙等设备图标了。然后用U盘拷贝到不能上网的Ubuntu22.04系统上,利用。

me_ysd的博客 5853

图像质量评估(5) -- 畸变(Distortion)

当图像中原本应该是直线的地方看起来发生了不自然的变形或扭曲时,我们称为图像畸变。有三种类型的镜头畸变:桶形畸变(后文使用英文barrel),枕形畸变(后文使用pincushion)和胡子畸变(后文使用英文wavef或mustache,这种畸变里包含了桶形畸变和枕形畸变)。有一个重要的点需要注意,根据透镜的类型以及透镜是否能够从相机中移除等条件不同,畸变会有不同的表现。 总的来说,旋转对称光学系统功能上会产生和物体几何相似的图形。但也有少数特殊的系统是例外,例如鱼眼镜头,这种镜头几何是故意设计为

vivo01的专栏 2万+

计算机SP与SSP什么岗位,校招sp和ssp是什么意思

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。校招sp和ssp的意思是:1、sp全称为“special offer”,所以SP是优质生源优先推荐的意思。sp是更高级的offer。2、而ssp的级别还要在sp之上。个人简历是求职者给招聘单位发的一份简要介绍。包含自己的基本信息:姓名、性别、年龄、民族、籍贯、政治面貌、学历、联系方式,以及自我评价、工作经历、学习经历、荣誉与成就、...

weixin_42298164的博客 2万+

雷电模拟器+Google Play服务配置全指南:从安装到定位问题解决

本文详细介绍了雷电模拟器配置Google Play服务的全流程,包括版本选择、组件安装、定位服务调试及网络问题排查。针对安卓开发者的常见挑战,提供从基础到高级的解决方案,帮助优化测试环境稳定性与定位精度。

weixin_30399821的博客 1232

CSS 中px、em、rem、%、vw、vh单位之间的区别详解【全网最全】

CSS 中px、em、rem、%、vw、vh单位之间的区别详解【全网最全】

橙-极纪元-JJYCheng 1万+

“华为”云桌面系统声音比较小,如何调大?

调整操作系统声音 开启云桌面,登录账户之后,进入操作系统,鼠标左键点击右下角的声音图标,把声音调到最大(如下图); 可以考虑使用浏览器在线听音乐,确定声音的音量! 如果只是耳麦声音小,可以鼠标右键点击声音图标,选择录音设备(R),如下图: 点击“录音设备(R)”后进入,鼠标右键点击“麦克风”选择属性,将侦听级别调至最大,确定! 调整华为云终端声音(软设置) 将鼠标移至桌面的顶端中间位置,打开如下图的样式图标,鼠标左键点击“主页”; 点击“主页”之后,将回到云桌面的终端操作界面,

shunchang的专栏 2336

RAGFlow 系列教程 第三课:后端服务入口与请求生命周期

本文深入解析RAGFlow v0.25.0后端核心机制,重点介绍了Quart框架选型原因和服务启动流程。RAGFlow选择Quart作为Web框架,主要基于其异步能力对LLM调用的支持、Flask生态兼容性以及长响应超时处理优势。文章详细拆解了服务启动的8个关键步骤,从日志初始化到HTTP服务启动,并分析了配置加载、数据库初始化等核心环节。通过源码分析揭示了RAGFlow如何实现动态API注册、双重认证体系等关键技术点,为深入理解该系统的请求处理生命周期提供了基础。

weixin_43674738的博客 188

深入理解安卓中的 dp 究竟是什么

凡是涉及数学公式的内容,都应该从数学物理上来理解。那么,最基本的,dp 的量纲是什么呢?从上面的公式中很容易推导,dp 的量纲是英寸。而且,可以进一步发现,对于对角线像素为 1 像素,dpi 为 1像素/英寸的设备,其对角线的 dp 值为 160。而实际上,对角线实际的长度值应为 1 英寸。这就是说,dp 只是一个绝对的长度单位,且 1 dp =11601601​英寸。由于 1 英寸 = 2.54 厘米,因此 1 dp =11601601​英寸 =0.015875。

暗诺星刻的博客 3535

第二大脑的觉醒:一个寄生在代码里的小生命,如何悄无声息地接管我的工作流

所有记忆都存在本地。

步子哥的博客 1063

Android的px、dp和sp等单位的区别详解

一、px、dp和sp等单位的区别 px:即像素,1px代表屏幕上一个物理的像素点;px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同 dp:这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度。假设有一部手机,屏幕的物理尺寸为1.5英 寸x2英寸,屏幕分辨率为240x320,则我们可以计算出在这部手机的屏幕上,

敢于挑战我可以的博客 590

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

关于dip,dp,px,sp等单位的说明和区别

作者:范晓伟 dip:device independentpixels,设备独立像素,一个基于density的抽象单位: 不同设备不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 在android上开发的程序将会在不同分辨率的手机上运行。为了让程序外观不至于相差太大,所以引入了dip的概念。比如定义一个矩形10

移动平台应用软件开发技术 1922

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android 常用布局单位区别(dp、sp、px、pt、in、mm

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_85969073的博客 1926

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

px、dp和sp这些单位有什么区别?

px、dp和sp,这些单位有什么区别? 相信每个Android新手都会遇到这个问题,希望这篇帖子能让你不再纠结。 px: 即像素,1px代表屏幕上一个物理的像素点; px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示 偶尔用到px的情况,是需要画1像素表格线或阴影线的时候,用其他单位如dp会显得模糊。 dp: 这个是最常用但也最

longjuanlongjuan的博客 561

Android 常用布局单位区别(dp、sp、px、pt、in、mm)

二、区别px:对应屏幕上的实际像素点。dip(dp):设备独立像素,一种基于屏幕密度的抽象单位,在每英寸160点得显示器上,1dip = 1px,但随着屏幕密度的改变,dip与px的换算会发生改变。因为,所以,引入了dip计量单位,这种计量单位与移动设备硬件无关。sp:全名,放大像素(比例像素),与刻度无关,。in:英寸(长度单位)。mm:毫米(长度单位)。pt:磅/点,标准的长度单位,1/72英寸。三、换算公式pxdpdensity是屏幕密度,表示每英寸有多少个显示点,与分辨率不同.例如:在。

2401_84123026的博客 1600

Android:px、dp、dip和sp这些单位的区别

纠结了很久,px、dp、dip、sp有什么区别?纠结有时候用dp和dpi感觉没什么区别之类的问题。 px(pixel): 即像素,1px代表屏幕上一个物理的像素点。 px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同。 dp(device independent pixels(设备独立像素)): 这个是最常用但也最难理解的尺寸单位。它与“像...

bangju6522的博客 250

Android中px,dp,sp单位的区别和应用

下面的解释基本是百度得来的 px: px就是pixel的缩写啦,pixel即像素,它不是自然界的长度单位。px是就是一张图片中最小的点,一张位图就是由这些点构成的。1024px就是1024像素,最简单的你可以在windows桌面属性里的“设置”看到,如果是1024×768,也就是说水平方向上有1024个点,垂直方向上有768个点。谁能说出一个“点”有多长多大么?可以画的很小,也可以很大。如果点

聪哥的专栏 7245

px,in,pt,mm,dp,sp 各单位的区别

kevin_xiang的专栏 1160

[Android问答] px、dp和sp,这些单位有什么区别?

相信每个Android新手都会遇到这个问题,希望这篇帖子能让你不再纠结。 px: 即像素,1px代表屏幕上一个物理的像素点; px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示(图片来自android developer guide,下同)。 偶尔用到px的情况,是需要画1像素表格线或阴影线的时候,用其他单位如dp会显得模糊。 d...

diaozhuo4700的博客 118

px、dp和sp,这些单位有什么区别

相信每个Android新手都会遇到这个问题,希望这篇帖子能让你不再纠结。 px: 即像素,1px代表屏幕上一个物理的像素点; px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示(图片来自android developer guide,下同)。 偶尔用到px的情况,是需要画1像素表格线或阴影线的时候,用其他单位如dp会显得模

大数据 955
上一篇: 【Android】详解Android动画之Interpolator插入器
下一篇: Android GridView属性集合
shaaiwei521
博客等级 码龄14年 3粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值