Android 屏幕适配dp,sp


相关的概念:

dp

即dip,设备独立像素,device independent pixels的缩写,密度无关像素,Android特有的单位,在屏幕密度dpi= 160屏幕上,1dp = 1px。1dp 在屏幕上总是1/160 英寸。
它常用在设置镖局,内边距或任何不打算按照像素值指定尺寸的情况下。

sp

和dp很类似,英文为:scale-independent pixel ,缩放无关像素,与密度无关。一般用来设置字体大小,和dp的区别是它可以根据用户的字体大小偏好来缩放。

px

是英文单词pixel的缩写,意为像素,屏幕上的点。我们通常所说的分辨率如480X800就是指的像素。
在设计领域中,像素是用来计算数码影像的最小单位。计算机中显示的图像并非连续的线条组成,而是由许多肉眼看不见的小点组成。如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小点所组成,这些小点就是构成影像的最小单位“像素”。由于是最小的独立显示单位,px均为整数,不会出现0.5px的情况。

dpi

dpi是Dots Per Inch的缩写, 每英寸点数,即每英寸包含像素个数。比如320X480分辨率的手机,宽2英寸,高3英寸, 每英寸包含的像素点的数量为320/2=160dpi(横向)或480/3=160dpi(纵向),160就是这部手机的dpi,横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。

Android Drawable

我们新建一个Android项目后应该可以看到很多drawable文件夹,分别对应不同的dpi

drawable-ldpi (dpi=120, density=0.75)

drawable-mdpi (dpi=160, density=1)

drawable-hdpi (dpi=240, density=1.5)

drawable-xhdpi (dpi=320, density=2)

drawable-xxhdpi (dpi=480, density=3)

首先必须清楚一个自动渲染的概念,Android SDK会自动屏幕尺寸选择对应的资源文件进行渲染,如SDK检测到你手机dpi是160的话会优先到drawable-mdpi文件夹下找对应的图片资源,注意只是优先,假设你手机dpi是160,但是你只在xhpdi文件夹下有对应的图片资源文件,程序一样可以正常运行。所以理论上来说只需要提供一种规格的图片资源就ok了,如果只提供ldpi规格的图片,对于大分辨率的手机如果把图片放大就会不清晰,所以需要提供一套你需要支持的最大dpi的图片,这样即使用户的手机分辨率很小,这样图片缩小依然很清晰。

xhdpi成为首选
上面说了只需要提供一套大的dpi的图片就ok了,现在市面手机分辨率最大可达到1080X1920的分辨率,如Nexus5,dpi属于xxhdpi,但是毕竟还没普及,目前市面上最普遍的高端机的分辨率还多集中在720X1080范围,也就是多集中在xhdpi,所以目前来看xhpdi规则的图片成为了首选。当然随着技术规格的提高以后发展,以后可能市场上xxdpi的手机会越来越普遍,但这是后话。


文章作者: imtianx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 imtianx !
评论
 上一篇
收集的Android开源框架及其地址 收集的Android开源框架及其地址
1、volley项目地址 https://github.com/smanikandan14/Volley-demoJSON,图像等的异步下载;网络请求的排序(scheduling)网络请求的优先级处理缓存多级别取消请求和Activity和生
下一篇 
android 中webview的屏幕适配问题 android 中webview的屏幕适配问题
两行代码解决WebView的屏幕适配问题一个简单的方法,让网页快速适应手机屏幕,代码如下 WebSettings webSettings= webView.getSettings(); webSettings.setLayoutAlgori
  目录