
尺寸单位dip Device Independent Pixels 再简写为dp是指设备独立像素。不要与dpi混淆。dp是Android上为了适配不同屏幕设备而定义的一种抽象单位1dp在不同分辨率屏幕上占用的像素数量不一样在屏幕分辨率高的设备上占用更多像素在分辨率小的设备上占用更少像素从而让整体上看显示的比例相对屏幕大小是一样的。px Pixel屏幕物理像素dpiDots Per Inch这里的Dots是指像素每英寸像素点数可称作像素密度。常见取值 160240320等。density 密度比是指dpi与标准dpi的比值即dpi/160也可以理解为1dp对应多少个像素。常见取值1.0、1.5、2.0等。sp: Scaled Pixels缩放像素。 用于字体显示。分辨率 横纵2个方向的像素点的数量。屏幕尺寸 屏幕对角线的长度。TextView.setTextSize (float size) 单位是spdensityDpi即dpi以1080×1920分辨率的5英寸手机为例对角线上大约有2203像素则dpi2203/5440。px和densityDpi是真实的物理屏幕尺寸和密度。dp和density是Android中为了让不同屏幕尺寸上显示效果接近一致而抽象出来的表示抽象的屏幕尺寸和密度。调节显示大小在设置/显示/显示大小中调节显示尺寸。调节的越大则density值越大即1dp对应的像素数量越多但由于分辨率不变屏幕宽高的最大dp数变小所以如果使用绝对位置布局则可能会显示到屏幕之外。adb之wm命令到sdk\platform-tools找到adbadb devices查找连接的设备adb shell进入wm density # 查看屏幕的 像素密度,wm density 160 # 把屏幕像素密度改为 160 dpimipmap和drawable文件夹核心结论对于应用图标App Icon永远放在mipmap目录中。对于其他所有图标和图片资源包括位图、矢量图、XML图都放在drawable目录中。1. mipmap 目录设计初衷专门为应用启动器图标Launcher Icon设计。关键特性系统永远不会对mipmap目录下的资源进行缩放。无论你的应用安装在哪一种屏幕密度的设备上Launcher桌面都会获取到为该设备分辨率精确匹配的mipmap资源从而确保应用图标始终清晰、无锯齿。适用场景有且仅有应用图标即ic_launcher或ic_launcher_round等。这些图标会显示在手机桌面、应用列表、设置界面以及分享菜单中。为什么不放别的如果把其他UI图标也放在mipmap中系统不会缩放它们在布局中引用时可能需要自己处理尺寸反而增加麻烦。而且这违背了该目录的设计初衷。2. drawable 目录设计初衷存放应用内所有其他的图片资源。关键特性系统可能会根据设备的屏幕密度dpi对drawable目录下的图片进行缩放以适配不同屏幕。系统会选择最接近的密度版本然后缩放至合适大小。适用场景除了应用启动图标之外的所有图片。包括但不限于UI图标如返回箭头、菜单图标、心形收藏图标等按钮背景Button Backgrounds界面背景Backgrounds位图BitmapsXML绘制的形状Shapes、选择器Selectors等res-swres-sw 是 Android 里按屏幕最小宽度smallest width来区分资源的限定符写成 res/values-swNdp 这样的目录名比如 values-sw360dp。系统会根据设备的“最短可用边” W单位 dp来判断取数字小于等于W的那个目录来加载资源。 比如设备宽度是 360dp有 values-sw320dp 和 values-sw400dp 时会选 sw320dp。