android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》

看世界杯的空闲 时间,翻译一下 官方文档。分辨率 问题是你们都很关心的(720×480会不会悲剧),而关于这个问题,android官方的文档无疑最有说服力。因为不是全部的人都愿意去读英文,因此趁球赛没开始,翻译一些。

原文地址: http://developer.android.com/guide/practices/screens_support.html

————————下面是翻译—————————我是分割线—————————

       多分辨率支持

  在设计之初, Android 系统就被设计为一个能够在多种不一样分辨率的设备上运行的操做系统。对于应用程序来讲,系统平台向它们提供的是一个稳定的,跨平台的运行环境,而关于如何将程序以正确的方式显示到它所运行的平台上所须要的大部分技术细节,都由系统自己进行了处理,无需程序的干预。固然,系统自己也为程序提供了一系列API,因此在目标平台的分辨率是能够彻底肯定的状况下,程序也能够精确的控制自身在目标平台上的 界面显示方式。

  这个文档会说明系统平台究竟提供了哪些分辨率支持特性,与它们如何在程序中使用的信息。若是你遵循文档中列出的方法,就很容易让你的程序在全部支持的分辨率下都能完美显示。这样你就能够用一个单独的.apk 文件,将你的程序发布到全部的平台上。

  若是你已经发布过针对Android 1.5或更早版本平台的程序,你应该仔细阅读这篇文档,而后考虑一下到底如何让本身的老程序能够在拥有各类不一样分辨率,而且运行着Android 1.6或更新平台上正常显示。在绝大部分状况下,只须要对程序做出小小的修改就能够达到目的,但你仍然须要尽量地在各类分辨率的平台上进行测试。
  特别的,若是你有一个已经完成的程序,又想让它能够在超低分辨率的设备(好比320×240)上正确运行,你须要阅读“老程序的更新策略”,那篇文档会告诉你应该怎么作。

术语和概念
屏幕尺寸
屏幕的物理尺寸,以屏幕的对角线长度做为依据(好比2.8寸,3.5寸)。
简而言之,Android把全部的屏幕尺寸简化为三大类:大,正常,和小。
程序能够针对这三种尺寸的屏幕提供三种不一样的布局方案,而后系统会负责把你的布局方案以合适的方式渲染到对应的屏幕上,这个过程是不须要程序员用代码来干预的。

屏幕长宽比
屏幕的物理长度与物理宽度的比例。程序能够为制定长宽比的屏幕提供制定的素材,只须要用系统提供的资源分类符longnotlong

分辨率
屏幕上拥有的像素的总数。注意,虽然大部分状况下分辨率都被表示为“宽度×长度”,但分辨率并不意味着屏幕长宽比。在Android系统中,程序通常并不直接处理分辨率。

密度
以屏幕分辨率为基础,沿屏幕长宽方向排列的像素。
密度较低的屏幕,在长和宽方向都只有比较少的像素,而高密度的屏幕一般则会有不少——甚至会很是很是多——像素排列在同一区域。屏幕的密度是很是重要的,举个例子,长宽以像素为单位定义的界面元素(好比一个按钮),在低密度的屏幕上会显得很大,但在高密度的屏幕上则会显得很小。

密度无关的像素(DIP
指一个抽象意义上的像素,程序用它来定义界面元素。它做为一个与实际密度无关的单位,帮助程序员构建一个布局方案(界面元素的宽度,高度,位置)。
一个与密度无关的像素,在逻辑尺寸上,与一个位于像素密度为160DPI的屏幕上的像素是一致的,这也是Android平台所假定的默认显示设备。在运行的时候,平台会以目标屏幕的密度做为基准,“透明地”处理全部须要的DIP缩放操做。要把密度无关像素转换为屏幕像素,能够用这样一个简单的公式:pixels = dips * (density / 160)。举个例子,在DPI240的屏幕上,1DIP等于1.5个物理像素。咱们强烈推荐你用DIP来定义你程序的界面布局,由于这样能够保证你的UI在各类分辨率的屏幕上均可以正常显示。


支持的屏幕分辨率范围
1.5及更早版本的Android系统,在设计的时候假定系统只会运行在一种分辨率的设备上——HVGA320×480)分辨率,尺寸为3.2寸。因为系统只能工做在一种屏幕上,开发人员就能够针对那个屏幕来编写本身的程序,而无需去考虑程序在其余屏幕上的显示问题。
但自从Android 1.6以来,系统引入了对多种尺寸、多种分辨率屏幕的支持,以此知足拥有各类配置的新平台的运行需求。这就意味着开发人员在针对Android 1.6或更新版系统开发程序的时候,须要为本身的程序在多种分辨率的屏幕上良好显示做出额外的设计。
为了简化程序员面在对各类分辨率时的困扰,也为了具有各类分辨率的平台均可以直接运行这些程序,Android平台将全部的屏幕以密度和分辨率为分类方式,各自分红了三类:
·三种主要的尺寸:大,正常,小;
·三种不一样的密度:高(hdpi),中(mdpi)和低(ldpi)。
若是须要的话,程序能够为各类尺寸的屏幕提供不一样的资源(主要是布局),也能够为各类密度的屏幕提供不一样的资源(主要是位图)。除此之外,程序不须要针对屏幕的尺寸或者密度做出任何额外的处理。在执行的时候,平台会根据屏幕自己的尺寸与密度特性,自动载入对应的资源,并把它们从逻辑像素(DIP,用于定义界面布局)转换成屏幕上的物理像素。
下表列出了Android平台支持的屏幕中一些比较经常使用的型号,并显示了系统是如何把它们分类到不一样的屏幕配置里的。有些屏幕分辨率并不在下面的列表上,但系统仍会把它们纳入下列的某一个类型中。

低密度(120),ldpi
中密度(160),mdpi
高密度(240),hdpi
屏幕
·QVGA240×320),2.63.0


普通屏幕
·WQVGA240×400),3.23.5
·FWQVGA240×432),3.53.8
·HVGA320×480),3.03.5
·WVGA480×800),3.34.0
·FWVGA480×854),3.54.0
屏幕

·WVGA480×800),4.85.5
·FWVGA480×854),5.05.8


如上表所示,全部分辨率的屏幕,都围绕在基准屏幕周围,而基准屏幕在分类中,为“正常”尺寸,与“中”密度。之因此用HVGA屏幕做为基准屏幕,是由于全部针对Android 1.5或更早的程序都是针对这片屏幕所写的(由于只支持这一片),好比T-Mobile G1
虽然系统支持上面9种不一样配置的屏幕,但你并不必定须要为它们都提供各自不一样的资源。系统已经提供了足够鲁棒(就是在各类恶劣环境下正常工做,对环境变化不敏感)的兼容特性,用于在各类不一样的屏幕上良好显示你的程序。这在下面的文档中会详细描述,若是你须要更多的资料,请查看“与屏幕无关的最佳实践”。
相关文章
相关标签/搜索