Android设备的多样化导致的屏幕分辨率适配问题一直是Android开发中让人头疼的问题。
一、屏幕尺寸(screen size)
屏幕尺寸的大小是按照屏幕对角线的长度测量的,以英寸为单位。
比如:4英寸的屏幕就表示屏幕的对角线长度为4英寸,1英寸=2.54厘米,4英寸=4*2.54厘米=10.16厘米。
实际上,这种方法适用对象不仅仅包括手机屏幕,还包括电脑显示器、电视屏幕等。
附注:市面上,Android设备的屏幕尺寸是五花八门,这就导致了本文所介绍的问题。
二、分辨率(image resolution)
手机上任何画面都是由一个个小点组成的,这些小点就是所谓的像素点。一块方形的屏幕横向与竖向含有的像素点的乘积即所谓的分辨率,比如,我们通常所的1024*768,或者数码相机中的xxx万像素就是这个乘积。
经常会看到的指标是屏幕比率是4:3、16:9、5:4等,其实就是横向像素点与竖向像素点的比值,比如:1024:768。
分辨率还有类似于1080p(即分辨率为1920*1080像素)之类的说法,其实这里的p就是progressive scan,即逐行扫描。
通常实际屏幕画面显示效果取决于屏幕尺寸与分辨率之间的关系,即屏幕大小一定的情况下,分辨率越大,显示效果越细腻,分辨率不变,屏幕越小,显示效果越细腻。
三、屏幕密度(screen density)
屏幕密度即像素密度(pixels per inch)是基于屏幕分辨率定义的,即每英寸屏幕所拥有的像素点数。
像素密度=(长度像素^2+宽度像素^2)开平方/屏幕尺寸
以分辨率为1280*720和屏幕尺寸为6英寸为例,屏幕密度约等于245。
Android支持三种类别的屏幕密度,即低(ldpi)、中(mdpi)、高(hdpi),这三种密度的区别在于屏幕中每英寸像素点的多少。默认情况下,Android浏览器和WebView是针对中密度屏幕设计的,在高密度屏幕上将Web页面缩放约1.5倍,而在低密度屏幕上缩放0.75倍。
四、设备像素比(devicePixelRatio)
设备像素比=物理像素/设备独立像素
物理像素这里可以认为就是分辨率。
设备独立像素(device independent pixels, dip或dp),与屏幕密度有关。
在屏幕密度为160的显示屏上,1dip=1px,即一个设备独立像素等于一个像素,换句话说160dpi是标准的,即此时设备像素比为1。如果你的屏幕分辨率很大,但屏幕密度没有正确设置,那么使用dip显示图片就会显示过小,dip与像素的换算关系如下:
dip(value) =(int) (px(value)/1.5 + 0.5)
Android上的屏幕密度通常为120dpi、160dpi、240dpi、320dpi,对应于Android工程中的文件夹分别为drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi,即同一张图片的尺寸在这几个文件夹中的比例为3:4:6:8。
为了尽量自适应各种屏幕最好用dp为单位,或者拿px乘以设备像素比来作为实际像素。
阅读(1194) | 评论(0) | 转发(0) |