https://material.io/devices/ 官方推荐的dp与px对换。
完全参考文章:http://geek.csdn.net/news/detail/190325
1、屏幕像素密度
·含义:每英寸的像素点数
·单位:dpi(dots per ich)
假设设备内每英寸有 160 个像素,那么该设备的屏幕像素密度=160dpi
2、密度无关像素(dp)
·含义:density-independent pixel,叫 dp 或 dip,与终端上的实际物理像素点无关。
·单位:dp,可以保证在不同屏幕像素密度的设备上显示相同的效果
·Android 开发时用 dp 而不是 px 单位设置图片大小,是 Android 特有的单位
场景:假如同样都是画一条长度是屏幕一半的线,如果使用 px 作为计量单位,那么在 480x800 分辨率手机上设置应为 240px;在 320x480 的手机上应设置为 160px,二者设置就不同了;如果使用 dp 为单位,在这两种分辨率下,160dp 都显示为屏幕一半的长度。
·dp 与 px 的转换
因为 UI 设计师给你的设计图是以 px 为单位的,Android 开发则是使用 dp 作为单位的,那么我们需要进行转换:
在 Android 中,规定以 160dpi(即屏幕分辨率为 320x480)为基准:1dp=1px
3、UI给工程师切多大图是合适的
在之前, 设计师的交互和视觉设计都是基于480*800的界面, 切图的时候会以480*800为基础切一版, 然后在给所切图片的宽和高乘上个4/3,然后在出一版。
比如同一个120*180的图片, 就会出两个版本, 一个是120*180的一个是160*240的。分别放到hdpi目录和xhdpi目录。
吃到的苦头是,UI很累, apk很大。T^T
这番探究下来, 发现直接基于720*1280的视觉稿切一版图片就可以了。 将图片只放到xhdpi目录中,这样系统会在不同密度屏幕的手机中对图片进行合理的缩放, 而之前这个缩放工作竟然是人工完成的!
另: 如果想在xxhdpi的手机上显示的很好, 也可以基于1080P的屏幕设计, 这样的话就兼容所有低密度屏幕的手机, 而且也不会出现图片被拉扯的现象。