做android开发还有面试的时候经验会遇到屏幕适配问题,Android由于机型太多,所以导致屏幕尺寸还有分辨率多样化.接下来讲解下DP、DPI、SP的概念,有些不对的地方欢迎指正

引用Andorid官方文档的说明

When adding support for multiple screens, applications do not work directly with resolution; applications should be concerned only with screen size and density, as specified by the generalized size and density groups.

所以关于适配主要根据手机屏幕大小和屏幕密度

什么是DPI

DPI(Dots Per Inch)表示屏幕密度,按字面意思理解就是每一英寸有多少个像素点,例如320DPI就表示一个Inch包含320个像素点.Android DPI也可以理解为PPI

一般我们说手机多少寸,是指手机屏幕对角线的长度,因此可以根据手机屏幕尺寸还有分辨率计算手机的DPI,比如MOTO X(1920*1080)、5.2英寸

DPI = Math.sqrt(1920*1920+1080*1080)/5.2

通过计算得出MOTO X的屏幕密度为424DPI

DP与PX的换算公式:

px = dp*(dpi/160)

也就是说如果要保持图片的大小统一,需要根据DPI提供不同的切图.
我们现在看下dp与英寸的关系,假设有一款手机Y也是5.2寸屏幕,分辨率是(1280*768),DPI计算后为287,由上面的公式可以计算出1dp对应多少英寸

Y = 1*(287/160)*(5.2/Math.sqrt(1280*1280+768*768))
Y = 0.0062...

然后我们计算MOTO X 1dp对应多少英寸

MOTO X = 1*(424/160)*(5.2/Math.sqrt(1920*1920+1080*1080))
MOTO X = 0.062...

通过上述我们可以得出一个结论dp可以保证所有设备大小的统一

假如项目里只提供一套切图

高DPI下图会被放大,低DPI下图会被缩小。

什么是SP

用于设置字体大小,因为手机可以设置大中小字体调整字体大小,所以特地设置的单位

TIPS之关于launcher图标

我们现在在studio新建项目的时候会发现在res底下多出一个mipmap的目录里面存放了APP的launcher图标,有人会疑惑有drawable不就行了为什么多了个这个文件夹,通过查官方文档大概了解了下,大概意思是部分设备会将launcher图标放大百分之25,这样会造成图标显示效果不够好,把图标放在mipmap目录下就会避免在不同的DPI下被删掉,这样android系统就可以在mipmap文件夹底下选择最优的Launcher icon显示在homescreen上。

Some devices scale-up the launcher icon by as much as 25%. For example, if your highest density launcher icon image is already extra-extra-high-density, the scaling process will make it appear less crisp. So you should provide a higher density launcher icon in the mipmap-xxxhdpi directory, which the system uses instead of scaling up a smaller version of the icon.

Different home screen launcher apps on different devices show app launcher icons at various resolutions. When app resource optimization techniques remove resources for unused screen densities, launcher icons can wind up looking fuzzy because the launcher app has to upscale a lower-resolution icon for display. To avoid these display issues, apps should use the mipmap/ resource folders for launcher icons. The Android system preserves these resources regardless of density stripping, and ensures that launcher apps can pick icons with the best resolution for display.

Make sure launcher apps show a high-resolution icon for your app by moving all densities of your launcher icons to density-specific res/mipmap/ folders (for example res/mipmap-mdpi/ and res/mipmap-xxxhdpi/). The mipmap/ folders replace the drawable/ folders for launcher icons. For xxhpdi launcher icons, be sure to add the higher resolution xxxhdpi versions of the icons to enhance the visual experience of the icons on higher resolution devices.

不同屏幕密度的参照图

参考http://www.jianshu.com/p/913943d25829

关于dpi、dp与sp的基础了解相关推荐

  1. [css] ui设计中px、pt、ppi、dpi、dp、sp之间的关系?

    [css] ui设计中px.pt.ppi.dpi.dp.sp之间的关系? QQ20150717160352 做了几个移动端的项目之后,深感移动端尺寸换算的必要性,在此做个总结. 先介绍下各自的定义: ...

  2. 浅谈屏幕适配 dp dip sp dpi ppi px sp

    一.Drawable资源文件夹之间的关系 Android开发中,UI一般会制作多种图片素材,根据素材的分辨率大小,放在如下几个文件夹中: Android 工程里 res 目录下的 drawable-h ...

  3. dpi、dp、sp、px、mm之间的关系

    参考链接: Android 开发者->文档->指南->支持不同的像素密度 前言 Android 设备(手机.平板电脑.电视等)不仅有不同的屏幕尺寸,而且其屏幕也有不同的像素尺寸.也就 ...

  4. Android手机适配,手机尺寸、px、dpi、dp、sp详解

    转载请注明出处:http://blog.csdn.net/z191726501/article/details/50411483 最近一直在学习Android的适配问题,在学习的过程中发现很多博客抄来 ...

  5. dpi和ppi换算_八一八那些px、pt、ppi、dpi、dp、sp之间的关系

    做了几个移动端的项目之后,深感移动端尺寸换算的必要性,在此做个总结. 先介绍下各自的定义: px:pixel,像素,电子屏幕上组成一幅图画或照片的最基本单元 pt: point,点,印刷行业常用单位, ...

  6. dp的定义原理和dpi,ppi,px,sp之间的区别

    扩展知识: 1080p和720p是什么意思 百度百科分辨率中最后一段话不明白的,可以参考这里 在开始讲解dp前,先来认识一些概念: 相关尺寸单位 px(pixel 像素):屏幕上的点,一般HVGA代表 ...

  7. dpi与dp的关系_px、dp、sp、dpi之间的区别和转换

    px.dp.sp.dpi之间的区别和转换 区别: px (pixels)像素 -- 是像素,就是屏幕上实际的像素点单位.(一般UI人员在ps中经常使用) dp/dip 设备独立像素,android l ...

  8. dp、sp和px的区别

    参考链接1:http://blog.sina.com.cn/s/blog_4d59e3c70100o2so.html 看到有很多网友不太理解dp.sp和px的区别:现在这里介绍一下dp和sp.dp也就 ...

  9. “ px”,“ dip”,“ dp”和“ sp”有什么区别?

    Android度量单位有什么区别? 像素 蘸 dp SP #1楼 我将详细说明dp如何精确转换为px: 如果在mdpi设备上运行,则150 x 150 px图像将占用150 * 150 dp的屏幕空间 ...

最新文章

  1. python推荐系统-不到40行代码用Python实现一个简单的推荐系统
  2. 025_CSS框模型概述
  3. java二位数组biaoda_1 面向对象前部分
  4. 顺序查找计时函数C语言,用C语言编二分查找
  5. mysql单表最大数据量_你的Mysql库真需要Adaptive Hash Index
  6. 开源项目贡献者_如何认识您的开源项目贡献者并发展您的社区
  7. 用JAVA FX制作3D魔方游戏
  8. 申请退款微信php,三:申请退款
  9. 使用记事本编写并运行java代码
  10. C语言最新学习路线(从入门到实战)
  11. 汉诺塔递归算法Java实现
  12. iOS图片两种压缩方法
  13. Spring Cloud Ribbon 全解 (1) - 总览篇
  14. 使用火焰图(FlameGraph)分析程序性能
  15. c# 正则表达式 Group
  16. VUE Object.assign()的使用
  17. 邢不行 | Python量化 + 数字货币 + 轮动 = 4年1000倍【附代码】
  18. STM32CubeIDE开发(二十六), STM32的CAN总线开发要点
  19. 全国大学生大数据技能竞赛——基于Scala和Echart的大数据分析与挖掘
  20. Arduino驱动VL53L0X V2激光测距(串口输出)

热门文章

  1. 20155220 吴思其 《网络攻防》 Exp1 PC平台逆向破解(5)M
  2. 数据库中冗余数据处理_SQL去重
  3. 基础算法一:大整数模积运算
  4. android最新版本6,keep安卓官方最新版
  5. 你知道这些关于大数据与数据分析的学习网站吗?
  6. 金仓数据库KingbaseES数据库开发指南(4. 面向应用程序的PL/SQL开发)
  7. 设备Kingston DataTraveler 3.0无法连接到理想的主机控制器。将尝试将该设备连接到可用的最佳主机控制器......
  8. python圆形_Python实现的圆形绘制(画圆)示例
  9. windows常用CMD命令大全总结
  10. UI进阶——XML解析与Json解析