Chinaunix首页 | 论坛 | 博客
  • 博客访问: 237042
  • 博文数量: 61
  • 博客积分: 125
  • 博客等级: 入伍新兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-23 23:28
文章分类

全部博文(61)

文章存档

2014年(37)

2013年(21)

2012年(3)

分类: Android平台

2014-08-09 10:45:31

原文地址:Android之分辨率适配 作者:scq2099yt

        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) |
给主人留下些什么吧!~~