基本概念

名词概念

名称

解释

px

像素点,一个像素点为1px

dp

即dip,像素密度

sp

同dp,但是可以根据系统字体偏好缩放

dpi

每英寸的像素数,也叫做屏幕密度

换算关系

根据换算关系:

320 x 480分辨率,3.6寸的手机:dpi为160,1dp=1px

dp解析

dp是比例吗?为什么要用dp?

实验一

相同分辨率,不同大小的手机AB:

代号

分辨率

尺寸

dpi

dp

手机A

320x480

3.6寸

160

1dp=1px

手机B

320x480

7.2寸

80

1dp=0.5px

假如AB都设置一个宽度为100dp的TextView:

代号

TextView宽度

手机宽度

比例关系

手机A

100px

320px

10/32

手机B

50px

320px

5/32

得出结论:

对于相同分辨率的手机,屏幕越大,同DP的组件占用屏幕比例越小。

如图所示:

69F8518D-DB48-46FA-9692-1781D4BFCE96.png

C13B2003-1A88-4081-BF86-6369E78543A7.png

实验二

相同大小,不同分辨率的手机AB:

代号

分辨率

尺寸

dpi

dp

手机A

320x480

3.6寸

160

1dp=1px

手机B

640x960

3.6寸

320

1dp=2px

假如AB都设置一个宽度为100dp的TextView:

代号

TextView宽度

手机宽度

比例关系

手机A

100px

320px

10/32

手机B

200px

640px

10/32

得出结论:

对于相同尺寸的手机,即使分辨率不同,同DP的组件占用屏幕比例也相同。

如图:

519BBF6F-35CD-42FE-BBE2-906927DDDCDB.png

6D49FB83-DF00-4052-BDED-FB95D37ED32E.png

综上:

dp的UI效果只在相同尺寸的屏幕上相同,如果屏幕尺寸差异过大,则需要重做dp适配。

这也是平板需要单独做适配的原因,可见dp不是比例。

为什么不用比例

为什么Android要用dp,而不用比例以兼容不同大小的手机呢?

如果用dp,假设在手机A上设置一个宽度为屏幕一半宽dp值,高度为屏幕一半高dp值的TextView。效果图如下:

156F9450-7C1E-4A55-AE3B-0A3684563A6F.png

当它横屏时,显示效果如下:

FF6FBC0E-570B-473A-BBBC-8ACE7A9DAFBC.png

但是,如果Android没有采用dp作为单位,而选用比例作为单位,对于相同的TextView,横屏后的显示效果如下:

8B5338FD-450D-4145-966F-1E2B20E98799.png

整个TextView组件都变形了!

所以:

dp可以维护Android组件自身的比例平衡,不至于在不同屏幕上变形。这是比例做不到的。

总结

dp的意义在于:

同大小的手机,使用dp做出的UI效果一定相同。

不同大小的手机,使用dp做出的UI效果一定不同(这里不考虑weight等参数)。但只是组件相对于屏幕的大小比例有所缩放,组件自身的宽高比是不变的,即组件自身不会变形。

摩客怎么设置安卓的dp_Android屏幕适配之单位DP相关推荐

  1. 摩客怎么设置安卓的dp_Android屏幕适配——使用 dp 实现完美适配

    我们一直知道 Android 可以使用 dp.sp 完成简单的适配,那你真的理解了么?先来看几个问题: dp 是如何进行适配的? dp 和 px 是如何换算的? sp 和 dp 的区别? dp 适配为 ...

  2. 摩客怎么设置安卓的dp_Android下设置文字大小用sp还是dp

    相信很多人看到标题会大吃一惊,长度宽度的数值要用dp,字体的大小用sp,这个理论恐怕在大家心目中早已根深蒂固,官方文档 上也是这样写的 结论: 1.当修改系统字体大小时,字体大小以dp为单位时,大小不 ...

  3. 摩客怎么设置安卓的dp_Android中dp和px之间进行转换

    在xml布局文件中,我们既可以设置px,也可以设置dp(或者dip).一般情况下,我们都会选择使用dp,这样可以保证不同屏幕分辨率的机器上布局一致.但是在代码中,如何处理呢?很多控件的方法中都只提供了 ...

  4. 摩客怎么设置安卓的dp_Android中的dp

    在Android开发中,我们在描述View的宽.高时通常使用dp,但是设计在UI中进行标注时,却使用的是px.所以很多时候就导致UI和实际效果不一致.史记开发中,给设计和开发人员带来了很多困扰. dp ...

  5. 摩客怎么设置安卓的dp_Android中sp和dp区别

    --- title: Android中sp和dp区别 date: 2016-09-08 17:04:15 tags: Android categories: Android开发 --- ## 理解an ...

  6. 摩客怎么设置安卓的dp_安卓屏幕完美适配方案——独家秘笈

    一.为什么要适配 由于Android系统的开放性,任何用户.开发者.硬件厂商.运营商都可以对Android系统和硬件进行定制,修改成他们想要的样子. 但是这种"碎片化"到达什么程度 ...

  7. 摩客怎么设置安卓的dp_摩客【操作攻略】

    很多小伙伴都遇到过摩客的困惑吧,一些朋友看过网上零散的摩客的处理方法,并没有完完全全明白摩客是如何解决的,今天小编准备了简单的解决办法,只需要按照 1:如图所示,我们所做的是一个登陆的简单的线框图,现 ...

  8. 摩客怎么设置安卓的dp_安卓的显示单位dp、dip、px、sp

    dp==dip:设备独立像素 .(device independent pixels) dip是年迈的dp,已经退休,在比较老的代码中还可以看到dip.目前谷歌推荐用dp,在我们开发安卓程序的时候,除 ...

  9. 摩客怎么设置安卓的dp_简单谈谈Android中SP与DP的区别

    从一开始写Android程序,就被告知这些常识 一.dp(或者dip device independent pixels) 一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dp=1px.不同 ...

最新文章

  1. oracle触发器初始化,oracle – 触发器无法初始化变量
  2. NAT的完全分析及其UDP穿透的完全解决方案
  3. [Scoi2015]小凸玩矩阵
  4. mysql 二维表 查询_二维报表数据表设计
  5. Transformer 模型详解
  6. 30 天精通 RxJS (01):认识 RxJS
  7. 技术人写作和写代码一样重要
  8. vue请求数据传给子组件_vue.js基础,父组件如何向子组件传递数据「607」
  9. SIM900A 发送中英文短信
  10. 如何批量将mp3压缩变小?
  11. TDD、FDD是什么意思?
  12. Blue Coat 庖丁解牛 云安全势在必行
  13. android 定时器 误差,运动会计时器(PC+安卓)版本
  14. web网站搭建(nginx优化)二
  15. PHP - 使用file_get_contents下载远程文件到本地
  16. Kaggle泰坦尼克号比赛项目详解
  17. Linux中的高级存储管理
  18. 朗强:画面分割器投影拼接设备与原理
  19. echarts仪表盘式进度条
  20. 【Appium踩坑】Encountered internal error running command: Error executing adbExec.

热门文章

  1. VLAD和MultiVLAD
  2. SuperView FlyThingsOS 智能显示屏上移植modbus协议支持串口RTU功能
  3. 使用JS制作论坛发帖
  4. 使用Java编写,写出1-100的偶数和奇数
  5. 视频文件格式解析之 3GP与MP4
  6. 给中国学生的第八封信:21世纪最需要的7种人才
  7. 《算法导论》第四章-第3节_练习(参考答案)
  8. android手机App的开发——音乐播放器
  9. 【电子学会】2020年06月图形化四级 -- 计算生肖
  10. 蓝桥杯算法训练KAc给糖果贪心-python题解