Andoid最被人诟病的就是显示屏的各种不同尺寸和不同分辨率。由于Android厂商的纷繁多样,导致出现了不同尺寸和不同分辨率的手机,指示开发者需要兼容各种手机屏幕。本文想学习的就是Android的显示屏幕的各种名词。

打开手机参数,会看到这样的数据

尺寸

尺寸指的是屏幕对角线的长度。以英寸作为度量单位。

分辨率

分辨率指的是在长和宽上各有多少像素。用这个能知道宽高比,一般如果宽高比例是16:9,就是宽屏,4:3就是窄屏了。

我们平时说的VGA,HVGA,QVGA,WVGA,WQVGA是分辨率的概念:

VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素; 
HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320; 
QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240; 
WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素; 
WQVGA:Wide Quarter VGA;即:扩大的QVGA,分辨率比QVGA高,比VGA低,一般是:400×240,480×272

密度

指的是一英寸有多少像素点。

这里使用的单位有几个:dpi,ppi

ppi和dpi经常被混用,其实ppi才是正确的(pixel per inch),dpi(Dot Per inch)是在打印的时候才用到的。

比如上面那个手机参数中,密度是441ppi,则说明每1平方英寸的屏幕中有441*441个像素。

我们可以稍微做下计算,这个手机屏幕高有1920个像素,密度是441ppi,则高大致有1920/441 = 4.35 英寸,宽有1080/441 = 2.44英寸。那矩形对角线长度(尺寸)5^2 ~ 4.35^2 + 2.44^2

我们可以看到我们的res文件夹中保存的图片信息都是用dpi来做的,比如

drawable-hdpi

drawable-ldpi

drawable-mdpi

drawable-xdpi

hdpi就是高密度,mdpi中等密度,ldpi低密度,xdpi更高密度。

为什么这里要针对不同的密度做不同的资源划分呢?

因为图片大小是以像素来算的,比如一个图片是400*300,就是长宽占的像素。

想象下两个手机有同样的尺寸和宽高比,但是一个是高密度高分辨率的,一个是低密度低分辨率的。那么同样一个图片在高密度的手机上就会显示非常小,在低密度低分辨率手机上就会显示非常大。因此对不同密度设置不同的图片是很有必要的。

密度无关像素

我们一直都是用像素来做基本单位的,但是Android的大小分辨率不一,比如一个320的直线,在240*320的分辨率下正好放,但是在240*640的分辨率下只显示了一半,就是说这个图片展示实际和密度是相关的。因此Android引入了一个密度无关像素的概念。这是一个量词,dp或者叫dip(Density Independent Pixel)。它和像素并不是一一对应的,是有一个换算公式的。比如在160dpi密度的屏幕中(1英寸有160*160个像素),那么dp就和像素是等价的。如果说在320dpi密度的屏幕中,那么一个dp就相当于2个像素了。

使用dp的好处是什么呢?

好处就是如果在开发中,比如一条直线以dp作为单位,那么只要设置一次,就可以适配到多个屏幕了。

首先Android将分辨率与密度绑定起来,做了一个约定

即320*480分辨率的手机,它的密度必须设置为160dpi,那么它在宽上可以展示320个像素,也是320dp。对于480*800分辨率的在3寸到4寸手机呢,它的密度必须是240dpi,那么在宽上可以显示480像素,dp呢?160 / 240 * 480 = 320dp。也是可以显示320dp。所以如果在程序中设置一条直线为320dp,那么在不同分辨率下一样会占满了整个宽。

Android至今还有头疼的图片分辨率的问题就在于px和dp的转换上。我们的资源图片还是以px为单位,在转换成dp的过程中会出现各种问题。比如转换过程中的四舍五入的问题可能会导致图片的显示出现差异等。

参考文章

http://www.cnblogs.com/cmduan/archive/2012/03/09/2388345.html
http://blog.csdn.net/wuyao721/article/details/5286753

http://blog.csdn.net/moruite/article/details/6028547

http://blog.sina.com.cn/s/blog_6499f8f101014ipq.html

==================================
作者:轩脉刃
出处:(http://www.cnblogs.com/yjf512/
版权声明:本文的版权归作者与博客园共有。欢迎转载阅读,转载时须注明本文的详细链接。

Android众说纷纭分辨率的更多相关文章

  1. 关于android的分辨率

    关于Android的分辨率支持,为大家翻译官方文档 看世界杯的空闲时间,翻译一下官方文档.分辨率问题是大家都很关心的(720×480会不会悲剧),而关于这个问题,android官方的文档无疑最有说服力 ...

  2. (13)[Xamarin.Android] 不同分辨率下的图片使用概论

    原文 [Xamarin.Android] 不同分辨率下的图片使用概论 设计Android App的时候,其尺寸众多也是一个挑战之一.要针对不同尺寸设计Android App时,就要先来了一下dpi(d ...

  3. 【cocos2d-x 手游研发小技巧(3)Android界面分辨率适配方案】

    先感叹一下吧~~android的各种分辨率各种适配虐我千百遍,每次新项目我依旧待它如初恋···· 每家公司都有自己项目工程适配的方案,这种东西就是没有最好,只有最适合!!! 这次新项目专项针对andr ...

  4. Android各分辨率定义的图片规格

    我们定义的app图片规格 app图标需要分iphone和android两套 iphone: 名称 Iphone4 Iphone5 手机尺寸 960*640(高*宽) 1136*640 (高*宽) 电池 ...

  5. android 屏幕分辨率 更改

    手头上有一个320x240的LCD.运行android时,显示内容过大,需要更改屏幕的分辨率. 参考链接 http://www.bkjia.com/Androidjc/899396.html http ...

  6. android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项

    1 Android手机目前常见的分辨率 1.1 手机常见分辨率: 4:3VGA     640*480 (Video Graphics Array)QVGA  320*240 (Quarter VGA ...

  7. android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配

    http://www.tuicool.com/articles/nuyMZb 1 Android手机目前常见的分辨率 1.1 手机常见分辨率: 4:3 VGA     640*480 (Video G ...

  8. Android手机分辨率基础知识(DPI,DIP计算)二

    dp = dip : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不 ...

  9. Android手机分辨率基础知识(DPI,DIP计算)

    1.术语和概念 概念解释 名词 解释 Px (Pixel像素) 不同设备显示效果相同.这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100px.也正是因为 ...

随机推荐

  1. 访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决

    访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决 2017年05月09日 10:54:18 AinUser 阅读数:922 标签: el表达式4 ...

  2. hadoop flume 架构及监控的部署

    1 Flume架构解释  Flume概念 Flume是一个分布式 ,可靠的,和高可用的,海量的日志聚合系统 支持在系统中定制各类的数据发送方 用于收集数据 提供简单的数据提取能力 并写入到各种接受方 ...

  3. mmm和mmma的区别

    m:编译整个安卓系统 makes from the top of the tree mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Andr ...

  4. css3动画特效集合

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...

  5. urllib.parse.parse_qsl 的一个小问题

    最近在使用urllib时发现的一个问题,记录一下. 首先请分别执行下面这两句代码: 1."你好".encode("utf8").decode("gbk ...

  6. (完全背包)Writing Code -- Codeforce 544C

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=99951#problem/C  (zznu14) Writing Code  Writin ...

  7. poj2094

    很不错的一道题,很让我见识到了差分序列的运用的神奇之处..一下是从北邮BBS看到的题解,写得很清楚..这边就直接转过来. uRLhttp://bbs.byr.cn/#!article/ACM_ICPC ...

  8. Dnsmasq安装与配置-搭建本地DNS服务器

    默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...

  9. 如何获取帮助———— QQ群讨论摘要

    QQ群对话整理(删除一些简单的回应),对一些重要的地方,我做了一些加粗   宝玉 2015/9/21 1:49:05       这次题目还有个问题就是如何读取Excel,我想对于很多同学来说是个困难 ...

  10. Kali Linux渗透测试实战 2.2 操作系统指纹识别

    目录 2.2 操作系统指纹识别 2.2.1 Banner抓取 2.2.2 TCP 和 ICMP 常规指纹识别技术 TCP数据报格式 ICMP首部格式 TTL与TCP窗口大小 FIN探测 BOGUS f ...