【Android】 dp与sp,加冕为王

news2024/11/23 21:25:22

目录

重要概念

屏幕尺寸

屏幕分辨率

屏幕像素密度

基础知识:

ppi

pt

DPI 的定义和重要性

Android 中的 DPI 级别

px

dp(Density Independent Pixels)

sp(Scale-independent Pixels)

安卓的dp/dip、sp 虚拟尺寸单位 ,不受ppi的影响

Android 基本布局

安卓文字排版标准

单位之间的转换

实际应用


重要概念


屏幕尺寸

  1. 含义:手机对角线的物理尺寸
  2. 单位:英寸(inch),1英寸=2.54cm

屏幕分辨率

  1. 含义:手机在横向、纵向上的像素点数总和
  2. 例子:1920x1080,即高度方向上有1920个像素点,宽度方向上有1080个像素点
  3. 单位:px(pixel),1px=1像素点
  4. Android手机常见的分辨率:320x480、480x800、720x1280、1080x1920

屏幕像素密度

  1. 含义:每英寸的像素点数
  2. 单位:dpi(dots per ich)

基础知识:

ppi

ppi是“每英寸像素数”,用来衡量屏幕的像素密度。它定义了每英寸长度内有多少像素点。ppi越高,屏幕显示的内容就越清晰。例如,一个320ppi的屏幕比一个160ppi的屏幕有更高的像素密度。

ppi 指每英寸所拥有的像素数 ,即每英寸像素。 像素密度越高,代表屏幕图像显示越清晰。

  

  同样 5 英寸的屏幕,像素数多,屏幕像素密度大,屏幕更清晰;

  

pt

pt是“磅”,是一种传统的打印和显示行业中使用的单位,主要用于打印文档。在Android中,1pt约等于1/72英寸。由于pt是基于物理尺寸的,它在不同设备上的显示效果可能不同。

DPI 的定义和重要性

DPI 是一个物理度量,表示每英寸长度内可以显示的像素点数。一个较高的 DPI 值意味着屏幕每英寸可以显示更多的像素,从而提供更清晰、更细腻的显示效果。DPI 的单位通常是像素/英寸(PPI,即 Pixels Per Inch)。

当DPI的概念用在计算机屏幕上时,就应称之为PPI(Pixels Per Inch)。

同理: PPI就是计算机屏幕上每英寸可以显示的像素点的数量。你说 DPI大伙也能理解。

对于手机屏幕,点和像素是一个意思,理论上ppi和dpi应该是一个东西,但是由于ppi五花八门,在按比例放大的时候会出现半个像素的情况,所以人为规定了几个特殊的dpi取值,比如160、240、320等,完美解决了问题,同时导致手机屏幕的ppi和dpi不再相等。

Windows系统默认PPI 为96, Mac OS系统默认PPI 为72。

假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,

则我们可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向)

160dpi就是这部手机的像素密度,像素密度的单位dpi是Dots Per Inch的缩写,即每英寸像素数量。横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。

不同的手机/平板可能具有不同的像素密度,例如同为4寸手机,有480x320分辨率的,也有800x480分辨率的,前者的像素密度就比较低。

Android 中的 DPI 级别

Android 系统将屏幕分为以下几个主要的 DPI 级别:

  • ldpi (Low Density): 约120 DPI
  • mdpi (Medium Density): 约160 DPI
  • hdpi (High Density): 约240 DPI
  • xhdpi (Extra High Density): 约320 DPI
  • xxhdpi (Extra Extra High Density): 约480 DPI
  • xxxhdpi (Extra Extra Extra High Density): 约640 DPI

这些 DPI 级别是相对于 mdpi 的基准值,mdpi 被定义为160 DPI。

px

px代表“像素”,是屏幕上最小的点。像素是硬件层面的度量单位,与屏幕的分辨率直接相关。不同设备的像素密度可能不同,因此px不适合用于跨设备布局设计

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

就是一个颜色点,一个像素点,最小的单位。不同的颜色点组成一张图像,因此图像的基本单位是像素px。它是一个相对单位,在不同的密度单位下能变大变小。同样是1英寸的屏幕,密度越大,像素越多,则单个像素的物理尺寸越小。
像素数量px = 像素密度ppi x 屏幕尺寸in
所以在屏幕尺寸一定的情况下,密度越大,像素数量越多,显示效果就会越清晰。

像素px主要用来描述图像大小和显示器分辨率:

  1. 相机所说的像素,其实就是最大像素的意思,像素是分辨率的单位,这个像素值仅仅是相机所支持的有效最大分辨率。
    1. 30万 640*480
    2. 50万 800×600
    3. 80万 1024×768 5” (3.5×5英寸)
  2. 我们常说一张100kb大小的图片,指的是图片的体积。一张图像在存储时,会描述每个像素点的颜色信息、位置、数量,这些描述数据就是图片的体积,如果像素越多自然图像体积越大。

例如:

假设你设计了一个109×109px的蓝色方块,并且这个方块的物理尺寸为1×1英寸。

如果你的屏幕是72PPI的,那这个方块看起来就要比实际的物理尺寸更大点,因为72PPI的屏幕要显示109px差不多需要1.5英寸才行。

dp(Density Independent Pixels)

dp是Android中最基本的单位之一,它代表的是“密度无关像素”。dp的目的是让开发者能够创建不依赖于屏幕密度的布局。1dp在不同密度的屏幕上看起来是相同的物理大小。

例如,1dp在160ppi的屏幕上可能对应1像素,但在320ppi的屏幕上可能对应2像素。

它与“像素密度”密切相关

Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。

例如界面上有一个长度为“80dp”的图片,那么它在240dpi的手机上实际显示为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px。如果你拿这两部手机放在一起对比,会发现这个图片的物理尺寸“差不多”,这就是使用dp作为单位的效果。

  1. dp就是为了使得开发者设置的长度能够根据不同屏幕(分辨率/尺寸也就是dpi)获得不同的像素(px)数量。
    1. 比如:我将一个控件设置长度为1dp,那么在160dpi上该控件长度为1px,在240dpi的屏幕上该控件的长度为1*240/160=1.5个像素点。
    2. 也就是dp会随着不同屏幕而改变控件长度的像素数量。
  2. 关于dp的官方叙述为:
    1. 当屏幕每英寸有160个像素时(也就是160dpi),dp与px等价的。那如果每英寸240个像素呢?1dp—>1*240/160=1.5px,即1dp与1.5px等价了。
  3. 其实记住一点,dp最终都要化为像素数量来衡量大小的,因为只有像素数量最直观。

sp(Scale-independent Pixels)

sp代表“比例像素”,它类似于dp,但是会根据用户的字体大小首选项进行缩放。使用sp可以确保文本大小在不同设备和不同用户设置下保持一致的可读性。

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

要想判别手机屏幕的显示好坏,还要考虑屏幕的宽高(英寸),也就是用dpi即每英寸多少像素来评价屏幕的显示效果。(不然假如手机分辨率是1920×1080,但是屏幕是几十寸的,那显示效果将不会很好,甚至你有可能看到小的像素块,那将更影响视觉效果。)

--------------------------------------------------------------------------------------------------------------------------------

安卓的dp/dip、sp 虚拟尺寸单位 ,不受ppi的影响

  

  

  

Android 基本布局

  基准间距原则:

   

  水平外边距:

  

安卓文字排版标准

  

  

--------------------------------------------------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/wuhaoquan/p/9104603.html

单位之间的转换

  • 1dp = (dpi / 160) * 1px
  • 1pt ≈ 1/72 * 2.54cm = 1dp(在Android中,1pt大约等于1dp)

实际应用

在设计UI时,推荐使用dp作为主要的长度单位,因为它能够保证布局在不同密度的屏幕上保持一致。对于文本,使用sp来确保文本大小适应用户的字体偏好。

dp和sp是跨设备设计的首选单位,而px和pt则更适合特定情况下使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1936776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设置浏览器网页全屏

在日常笔记本上办公时,由于屏幕较小,为了尽可能多和方便的显示浏览器网页上的内容,可以设置网页全屏的方式,去掉屏幕顶端的网址栏和底端栏,具体设置如下: 以Edge浏览器和Google Chrome浏览器为例&#xff…

如何免费用java c#实现手机在网状态查询

今天分享手机在网状态查询接口,该接口适用的场景非常广泛!首先我们先讲下什么是手机在网状态?简单来说,就是你得手机号是否还在正常使用中,是否能够及时接收和回复信息,是否能够随时接听和拨打电话。如果你…

通过libx246 libfaac转换推送RTMP音视频直播流

一、RTMP简介及rtmplib库: RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing…

C++ :友元类

友元类的概念和使用 (1)将类A声明为B中的friend class后,则A中所有成员函数都成为类B的友元函数了 (2)代码实战:友元类的定义和使用友元类是单向的 (3)友元类是单向的,代码实战验证 互为友元类 (1)2个类可以互为友元类,代码实战…

相同IP地址仿真测试

相同IP地址仿真测试 背景与挑战解决方案技术优势功能特点 背景与挑战 在汽车电子领域,电子控制单元(ECU)的测试是确保其功能性和可靠性的关键步骤。然而,当测试场景涉及多个配置相同IP地址的ECU时,传统的测试方法面临…

GooglePlay 金融品类政策更新(7月17号)

距离上次政策大更新(4月5号)才过去了3个月,Google Play又迎来了一次大更新,不得不说Google Play的要求越来越高了。 我们来梳理一下这次GooglePlay针对金融品类更新了哪些政策: 1.要求提供金融产品和服务的开发者必须注册为组织…

IDEA的常见代码模板的使用

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …

STM32使用SPI向W25Q64存储信息(HAL库)

SPI全双工通信:全双工在时钟脉冲周期的每一个周期内,每当主设备同时发送一个字节的同时,会接受从设备接受一个字节数据,SPI全双工最大的特点就是发送和接受数据同步进行,发送多少数据就要接受多少数据。使用全双工通信…

vst 算法R语言手工实现 | Seurat4 筛选高变基因的算法

1. vst算法描述 (1)为什么需要矫正 image source: https://ouyanglab.com/singlecell/basic.html In this panel, we observe that there is a very strong positive relationship between a gene’s average expression and its observed variance. I…

【iOS】static、extern、const、auto关键字以及联合使用

目录 前言extern关键字static关键字const关键字 联合使用static和externstatic和constextern和const auto关键字 先了解一下静态变量所在的全局/静态区的特点:【iOS】内存五大分区 前言 上面提到的全局/静态区中存放的是全局变量或静态变量: 全局变量…

逻辑回归(Logistic Regression,LR)

分类和回归是机器学习的两个主要问题。 分类处理的是离散数据回归处理的是连续数据 线性回归:回归 拟合一条线预测函数: 逻辑回归:分类——找到一条线可以将不同类别区分开 虽然称为逻辑回归,但是实际是一种分…

Chromium CI/CD 之Jenkins实用指南2024-在Windows节点上创建任务(九)

1. 引言 在现代软件开发流程中,持续集成(CI)和持续交付(CD)已成为确保代码质量和加速发布周期的关键实践。Jenkins作为一款广泛应用的开源自动化服务器,通过其强大的插件生态系统和灵活的配置选项&#xf…

【第4章】Spring Cloud之Nacos单机模式支持mysql

文章目录 前言一、初始化1. 初始化数据库2. 修改配置文件 二、效果1. 重新启动2. 新增用户 总结 前言 在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具…

数据如光,科技助航丨泰迪智能科技2024年暑期数据分析学徒班正式开班

7月16日,泰迪智能科技2024年暑期数据分析学徒班在泰迪智能科技天河培训中心正式开班,泰迪智能科技培训业务部孙学镂、教学代表周津、授课讲师巫兴港、就业指导老师赵欣欣、孟宪同、教学班主任黄晨华出席此次开班仪式。 仪式伊始,孙学镂代表广…

达梦数据库的系统视图v$arch_status

达梦数据库的系统视图v$arch_status 在达梦数据库(DM Database)中,V$ARCH_STATUS 是一个动态性能视图(Dynamic Performance View),用于显示归档日志的状态信息。这个视图可以帮助数据库管理员监控和管理数…

【Linux服务器Java环境搭建】010在linux中安装Redis,以及对Redis的配置与远程连接

系列文章目录 【Linux服务器Java环境搭建】 前言 好久没有更新博客了,今天下了班回到家,看到电脑桌上尘封已久的《Spring Boot应用开发实战》,翻开目录想起来之前写的系列【Linux服务器Java环境搭建】还未完结,那就继续吧&#…

通义千问AI模型对接飞书机器人-模型配置(2-1)

一 背景 根据业务或者使用场景搭建自定义的智能ai模型机器人,可以较少我们人工回答的沟通成本,而且可以更加便捷的了解业务需求给出大家设定的业务范围的回答,目前基于阿里云的通义千问模型研究。 二 模型研究 参考阿里云帮助文档&#xf…

IDEA的断点调试(Debug)

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …

基于chrome插件的企业应用

一、chrome插件技术介绍 1、chrome插件组件介绍 名称 职责 访问权限 DOM访问情况 popup 弹窗页面。即打开形式是通过点击在浏览器右上方的icon,一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 可访问绝大部分api 不可以 bac…

数据分析入门:用Python和Numpy探索音乐流行趋势

一、引言 音乐是文化的重要组成部分,而音乐流行趋势则反映了社会文化的变迁和人们审美的变化。通过分析音乐榜单,我们可以了解哪些歌曲或歌手正在受到大众的欢迎,甚至预测未来的流行趋势。Python作为一种强大的编程语言,结合其丰…