【Android】 dp与sp,加冕为王

目录

重要概念

屏幕尺寸

屏幕分辨率

屏幕像素密度

基础知识:

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.mzph.cn/pingmian/47993.shtml

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

相关文章

在 PostgreSQL 中怎样进行数据库的容量规划?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 中怎样进行数据库的容量规划?一、为什么容量规划如此重要?二、影…

JDBC技术

JDBC提供了在Java程序中直接访问数据库的功能 JDBC连接数据库之前必须先装载特定厂商提供的数据库驱动程序(Driver),通过JDBC的API访问数据库。有了JDBC技术,就不必为访问Mysql数据库专门写一个程序,为访问Oracle又专门…

Vue项目实现单点登录(SSO)的逻辑和基本流程

项目集群如果一个一个登录会非常麻烦,尤其是一些大企业或者多项目使用一套体系数据的环境中,这时候登录中心也就应用而生, 今天简单说一下vue sso的实现思路,vue项目实现单点登录(SSO)通常涉及以下几个步骤…

LabVIEW和Alicat Scientific质量流量计实现精确流量控制

在现代工业自动化和科研实验中,精确的气体流量控制至关重要。这里将介绍一个使用LabVIEW与Alicat Scientific公司的质量流量计实现流量控制的项目。项目采用Alicat Scientific的质量流量计(型号:M-200SCCM-D),通过LabV…

R绘制Venn图及其变换

我自己在用R做各种分析时有不少需要反复用到的基础功能,比如一些简单的统计呀,画一些简单的图等等,虽说具体实现的代码也不麻烦,但还是不太想每次用的时候去找之前的代码。 索性将常用的各种函数整成了一个包:pcutils…

[CP_AUTOSAR]_分层软件架构_接口之通信模块交互介绍

目录 1、协议数据单元(PDU)传输2、通信模块的案例2.1、SDU、 PCI & PDU2.2、通信模块构成2.3、从数据传输的角度看Communication2.4、Communication中的接口 在前面 《关于接口的一些说明》 以及  《Memory软件模块接口说明》 中,简要介绍了CP_AUTOSAR分层…

ByteBuf释放注意的问题

Bytebuf需要释放,否则可能导致OOM。 如果bytebbuf传递到了head或tail,不需要我们关心。 在head和tail里(head实现了outhandler、inhander。tail实现了inhander),底层自动调用了bytebuf.release。 其他情况需要我们手动…

MySQL(终章)视图, 用户管理, C连接MySQL.

目录 1.视图; 2.用户管理; 1.视图: 1.1 概念和基本操作: 视图本质就是表结构, 虚拟表. 视图和基表数据的改变都会相互影响. 创建视图语法: create view 视图名 as select语句; 修改视图: update set ; 删除视图: drop view 视图名; 1. 2 视图使用规则: …

减分兔搜题-12123学法减分20题目及答案 #媒体#职场发展

对于即将参加驾驶考试的朋友来说,掌握一些经典题目和答案至关重要。今天,我就为大家带来了这样一份干货——20道驾驶考试题目和答案,助你轻松应对考试!这些题目不仅包括了考试中常考的内容,还有针对难点和重点的详细解…

ETL数据同步之DataX,附赠一套DataX通用模板

今天跟大家分享数据同步datax的模板,小伙伴们简单直接借鉴使用。 还记得上一篇关于大数据DS调度工具的分享嘛? 主流大数据调度工具DolphinScheduler之数据ETL流程-CSDN博客 里面的核心就是采用了DATAX的数据同步原理。 一,什么是DataX D…

基于luckysheet实现在线电子表格和Excel在线预览

概述 本文基于luckysheet实现在线的电子表格,并基于luckyexcel实现excel文件的导入和在线预览。 效果 实现 1. luckysheet介绍 Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 官方文档在线Demo 2. 实现 …

华为云.VPC关联概念与对等连接实践

云计算.华为云 VPC关联概念与对等连接实践 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/q…

视频监控平台LntonCVS视频融合共享平台智慧安防视频监控汇聚应用方案

LntonCVS是一款功能强大且灵活部署的安防视频监控平台。它支持多种主流标准协议,包括GB28181、RTSP/Onvif、RTMP等,同时能够兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统的安防监控功能,还支持接入AI智能分析&#x…

无人机之产业链篇

无人机产业链上游为无人机设计研发及关键原材料的生产,其中关键原材料有金属材料和复合材料两大类,包括钛合金、铝合金、陶瓷基等特殊材料 中游无人机整机制造包括飞行系统、地面系统、任务载荷系统三个方面,是无人机制造的核心部分&#xf…

Adobe国际认证详解-网页设计认证专家行业应用场景解析

在当今数字化时代,网页设计已成为各行各业不可或缺的一环。而网页设计认证专家,作为经过Adobe国际认证体系严格考核的专业人才,正逐渐成为行业内炙手可热的存在。他们凭借深厚的网页设计理论基础和实践经验,为各行各业提供了高质量…

144. 字典序最小的 01 字符串(卡码网周赛第二十六期(23年阿里淘天笔试真题))

题目链接 144. 字典序最小的 01 字符串(卡码网周赛第二十六期(23年阿里淘天笔试真题)) 题目描述 小红有一个 01 字符串,她可以进行最多 k 次提作,每次操作可以交换相邻的两个字符,问可以得到的…

【Langchain大语言模型开发教程】模型、提示和解析

🔗 LangChain for LLM Application Development - DeepLearning.AI 学习目标 1、使用Langchain实例化一个LLM的接口 2、 使用Langchain的模板功能,将需要改动的部分抽象成变量,在具体的情况下替换成需要的内容,来达到模板复用效…

【Linux服务器Java环境搭建】012在linux中安装消息队列RabbitMQ,以及对RabbitMQ设置、启动、开启可视化

系列文章目录 【Linux服务器Java环境搭建】 前言 上一篇博客竟然用了不到半小时就写完了,那就继续吧,如果对此系列感兴趣,可以点击系列【Linux服务器Java环境搭建】进行查看哈,这一篇主要是安装和配置消息队列RabbitMQ。 一、消…

[解决方法]git上传的项目markdown文件的图片无法显示

应该有不少初学者会遇到这种情况 以下是本人摸索出的解决方法 我使用的是typora,首先设置typora的图片设置 文件>偏好设置>图像 如下: 选择这个就会在此文件的同级目录下创建一个assets文件夹来存放此markdown文件的所有图片 然后勾选优先使用相…

monocle3拟时序分析怎么做到多样本间pseudotime值可比?

愿武艺晴小朋友一定得每天都开心 monocle3呢,有好多文章分享了它的流程。跟着学呢,也都能计算出一套pseudotime值。 在跑monocle3时,我就有一个困惑产生了:monocle3计算的pseudotime值在多样本间可比,该怎么做到呀&am…