深入理解什么是 dp(dip)

news2024/11/15 13:35:04

文章目录

  • dp 的计算公式
  • dp 计算的例子
  • dp 的来历
  • 究竟什么是 dp

dp 的计算公式

  dp 是安卓 UI 开发中最常见的单位之一,它有一个别名 dip。dp 与 dip 是同一个意思。dp 指的是什么呢?官方的解释是 device independent pixels(设备独立像素)。这是一个很抽象的说法,为此,官方还以定量的形式给出了它的计算公式:

(px 的单位是 像素,dpi 的单位是 像素/英寸

在这里插入图片描述

dp 计算的例子

  举个例子,如果一台设备的分辨率是500 × 1200,对角线长度是 4.0625 英寸。那么该设备的 dp 与 px 的关系如下:

  这台设备的分辨率是500 × 1200,说明它的对角线的像素为 50 0 2 + 120 0 2 = 1300 \sqrt{500^2+1200^2}=1300 5002+12002 =1300 像素,于是该设备的 dpi 为 1300 ÷ 4.0625 = 320 1300\div4.0625=320 1300÷4.0625=320 像素/英寸。单位 dp 为 160 ÷ 320 = 0.5 160\div320=0.5 160÷320=0.5 像素。

dp 的来历

  但笔者不得不指出的是,很多人喜欢把简单问题深奥化,把数学问题抽象化。实际上 dp 这个概念甚至比 dpi 还好理解。但在这之前,需要先介绍一下 dp 是怎么来的。

  在相同尺寸的设备上,显示同一个图片文件,在自然情况下,dpi 越高的设备,该图片显示的物理尺寸越小。为什么会这样呢?原因是图片只是记载着各个像素点的颜色值。在不加处理的情况下,需要显示图片中所有的像素点。在这种情况下,dpi 很高的设备,不需要很大的尺寸就可以显示完图片中所有像素点,因此,dpi 越高的设备,该图片显示的物理尺寸越小。

  可是这样就带来问题了,如果图片很小的话,势必影响观感,这样就会导致 dpi 越高的设备的阅读体验越差,这种使用像素值作为长度单位来显示显然是不对的。

  于是,为了使同一个图片文件,在不同 dpi 的设备都可以美观的显示,于是就有了 dp 这个概念。

究竟什么是 dp

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

  很多的手机的尺寸大概是 7 cm × 16 cm。因此,200 dp 大概就是该手机竖屏时水平方向一半的长度,读者可以自行试试。

  因此,正如笔者前面所说,实际上 dp 这个概念甚至比 dpi 还好理解。dp 只是一个与设备与关的绝对长度单位,不要故弄玄虚把它弄得非常深奥。

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

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

相关文章

Golang 函数调用机制

在真实的内存里面是没有test和main栈区的,这里只是为了区分。这两个数据空间是独立的,但是同时都在栈区里面。 这里可以清楚的看到,虽然两个名字都叫n1,但是其实上都是独立的。就好比不同的教师里面坐着名字相同的人。 注意test…

软考A计划-重点考点-专题四(多媒体相关)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Mongodb 在工业场景下的数字解决方案

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

数字经济下的企业数字化转型

上周,由国家网信办、国家发改委、科技部、工信部、国务院国资委、福建省人民政府共同主办的第六届数字中国建设峰会在福州隆重开幕。 本届峰会以“加快数字中国建设,推进中国式现代化”为主题,集中展示数字中国建设最新成果和优秀实践案例&a…

uniapp实现微信小程序横屏适配问题demo效果(整理)

使用VMIN进行布局 先了解css3的两个属性vmax和vmin vmax 相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax vmin 相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin竖屏布局的时候,750rpx就是竖屏布局屏幕的宽度…

[前端]深浅拷贝

一、回顾变量类型 基础类型 boolean(bool) number string null undefined 引用类型 object ​ function ​ array 基本类型与引用类型的存储 基本类型一般存储在 栈 (栈小) 栈一旦确认 大小就固定 可能会造成溢出栈一般是先进后出用于存储…

数据库sql语句练习(二)

例题&#xff1a; ●检索出生年份比杜甫早的诗人 select name from poets where birth <( select birth from poets where name 杜甫’) 重点&#xff1a;ALL&#xff0c;SOME,ANY(对于any&#xff0c;有些系统用some) 使用all或者any时。必须同时使用比较运算符 注&…

Linux配置sftp用户访问指定目录

一、环境 开发环境&#xff1a;Win 10 -- 64位 服务环境&#xff1a;centos7 SSH&#xff1a;OpenSSH_7.4p1 二、新建sftp用户&#xff1a; 需要root权限执行-------------------------- 1.新建一个用户组 为了方便后面添加用户 groupadd sftp2.添加用户 useradd -g sf…

【Python】【进阶篇】27、Django url标签详解

目录 27、Django url标签详解1. url标签基本使用2. 给定参数的动态url 27、Django url标签详解 在 Django 的模板语言中除了我们前面章节介绍过的 if 标签和 for 标签之外&#xff0c;还有许多我们时常用到标签&#xff0c;比如 url 标签。 1. url标签基本使用 Django 的模板…

Xcode 使用 Instruments 无法找到代码中耗时挂起操作的解决

问题现象 Instruments 是一套非常有用的代码分析和调试利器,我们经常用它来查找 App 中的性能瓶颈。 不过,有时 Instruments 却无法捕获到系统明显挂起或长耗时的方法,这是怎么回事呢? 如上图所示,App 运行中系统(Severe Hang)被挂起长达 3 秒钟,但在 Instruments 竟…

tmux一个终端复用器(terminal multiplexer)

tmux 安装 使用包管理工具 # Ubuntu 或 Debian $ sudo apt-get install tmux# CentOS 或 Fedora $ sudo yum install tmux# Mac $ brew install tmuxsession 会话管理 1. 新建会话 第一个启动的 Tmux 窗口&#xff0c;编号是0&#xff0c;第二个窗口的编号是1&#xff0c;以…

[无线统计设计与国际标准]【chapter 1】[参考信号设计]【DMRS】

前言&#xff1a; 参考信号相关的所有内容都在38.211 中有介绍。 DMRS是用于信道估计&#xff0c;服务于UE信 道解调的。基站将DMRS穿插到各种信道的时频资源里面去&#xff0c;伴随着数据一起发送给UE&#xff1b; 对UE来说&#xff0c;DMRS是一个确…

Java【多线程基础6】定时器 + 模拟实现Timer

文章目录 前言一、定时器1, 什么是定时器2, 如何使用定时器 二、模拟实现定时器1, 初步实现2, 问题改善 总结 前言 &#x1f4d5;各位读者好, 我是小陈, 这是我的个人主页 &#x1f4d7;小陈还在持续努力学习编程, 努力通过博客输出所学知识 &#x1f4d8;如果本篇对你有帮助, …

【设计模式】责任链模式的介绍及其应用

责任链的介绍 责任链模式是一种对象的行为模式。在责任链模式里&#xff0c;很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递&#xff0c;直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&a…

一款非常经典的蓝牙多媒体芯片​RDA5850

RDA5850是一款高度集成的蓝牙无线电收发器和基带处理器&#xff0c;基于低成本的32位XCPU RISC核心&#xff08;其实虽然手册上说是RISC核心&#xff0c;但我怎么感觉这款芯片有点MIPS的影子 &#xff09;具有多媒体能力。此芯片有着丰富的外设&#xff0c;而大多数的功能都是…

找出3个数中的最大值与最小值

设计完整的程序实现以下功能&#xff1a;从键盘上输入3个整数&#xff0c;通过指针运算&#xff0c;找出3个数中的最大值与最小值和它们的地址&#xff0c;并实现最大值与最小值的交换&#xff08;要求用指针作为函数参数处理&#xff09;。 #include <stdio.h>void swap…

onnxruntim的使用方法

onnxruntime是谁发明的&#xff1f; ONNX Runtime 是由微软公司开发和维护的深度学习推理框架。ONNX Runtime 的前身是 Microsoft Cognitive Toolkit (CNTK)&#xff0c;它是微软公司开发的一个深度学习框架&#xff0c;支持多种硬件平台和操作系统&#xff0c;具有高性能和易…

杜甫经典长诗“三吏”“三别”赏析

杜甫简介 杜甫&#xff08;公元712—公元770&#xff09;&#xff0c;原籍湖北襄阳&#xff0c;后徙河南巩县。字子美&#xff0c;自号少陵野老&#xff0c;杜少陵&#xff0c;杜工部等&#xff0c;唐代著名诗人&#xff0c;世称“诗圣”&#xff0c;生活在安史之乱(唐朝由盛转…

时间管理:瞎忙和高效的区别

前言 最近看到一个非常有价值的文章&#xff0c;内容上确实震撼到我了&#xff0c;借鉴过来用于自勉。 人和人的差距为什么这么大&#xff1f; 而且这种差距&#xff0c;并不是家庭背景、权利财富或天赋带来的&#xff0c;仅仅是我们对时间的掌控&#xff0c;人总是错把忙碌…

B860AV2.1-A/M/B_1g/2g-通刷_当贝纯净桌面-线刷固件包

ZTE_B860AV2.1-A&#xff0f;M&#xff0f;B_1g&#xff0f;2g-通刷_当贝纯净桌面-线刷固件包-内有教程及短接点 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&a…