多分辨率支持
在设计之初,Android
系统
就被设计为一个可以在多种不同分辨率的设备上运行的操作系统。对于应用程序来说,系统平台向它们提供的是一个稳定的,跨平台的运行环境,而关于如何将程序以正确的方式显示到它所运行的平台上所需要的大部分技术细节,都由系统本身进行了处理,无需程序的干预。当然,系统本身也为程序提供了一系列API,所以在目标平台的分辨率是可以完全确定的情况下,程序也可以精确的控制自身在目标平台上的界面
显示方式。
这个文档会说明系统平台究竟提供了哪些分辨率支持特性,与它们如何在程序中使用的信息。如果你遵循文档中列出的方法,就很容易让你的程序在所有支持的分辨率下都能完美显示。这样你就可以用一个单独的.apk文件
,将你的程序发布到所有的平台上。
如果你已经发布过针对Android
1.5或更早版本平台的程序,你应该仔细阅读这篇文档,然后考虑一下到底如何让自己的老程序可以在拥有各种不同分辨率,并且运行着Android
1.6或更新平台上正常显示。在绝大部分情况下,只需要对程序作出小小的修改就可以达到目的,但你仍然需要尽可能地在各种分辨率的平台上进行测试。
特别的,如果你有一个已经完成的程序,又想让它可以在超低分辨率的设备(比如320×240)上正确运行,你需要阅读“老程序的更新策略”,那篇文档会告诉你应该怎么做。
术语和概念
屏幕
尺寸
屏幕的物理尺寸,以屏幕的对角线长度作为依据(比如
2.8寸,
3.5寸)。
简而言之,
Android把所有的屏幕尺寸简化为三大类:大,正常,和小。
程序可以针对这三种尺寸的屏幕提供三种不同的布局方案,然后系统会负责把你的布局方案以合适的方式渲染到对应的屏幕上,这个过程是不需要程序员用代码来干预的。
屏幕长宽比
屏幕的物理长度与物理宽度的比例。程序可以为制定长宽比的屏幕提供制定的素材,只需要用系统提供的资源分类符
long和
notlong。
分辨率
屏幕上拥有的像素的总数。注意,虽然大部分情况下分辨率都被表示为“宽度×长度”,但分辨率并不意味着屏幕长宽比。在
Android系统中,程序一般并不直接处理分辨率。
密度
以屏幕分辨率为基础,沿屏幕长宽方向排列的像素。
密度较低的屏幕,在长和宽方向都只有比较少的像素,而高密度的屏幕通常则会有很多——甚至会非常非常多——像素排列在同一区域。屏幕的密度是非常重要的,举个例子,长宽以像素为单位定义的界面元素(比如一个按钮),在低密度的屏幕上会显得很大,但在高密度的屏幕上则会显得很小。
密度无关的像素(
DIP
)
指一个抽象意义上的像素,程序用它来定义界面元素。它作为一个与实际密度无关的单位,帮助程序员构建一个布局方案(界面元素的宽度,高度,位置)。
一个与密度无关的像素,在逻辑尺寸上,与一个位于像素密度为
160DPI的屏幕上的像素是一致的,这也是
Android平台所假定的默认显示设备。在运行的时候,平台会以目标屏幕的密度作为基准,“透明地”处理所有需要的
DIP缩放操作。要把密度无关像素转换为屏幕像素,可以用这样一个简单的公式:
pixels = dips * (density /
160)。举个例子,在
DPI为
240的屏幕上,
1个
DIP等于
1.5个物理像素。我们强烈推荐
你用
DIP来定义你程序的界面布局,因为这样可以保证你的
UI在各种分辨率的屏幕上都可以正常显示。
支持的屏幕分辨率范围
1.5及更早版本的
Android系统,在设计的时候假定系统只会运行在一种分辨率的设备上——
HVGA(
320×
480)分辨率,尺寸为
3.2寸。由于系统只能工作在一种屏幕上,开发人员就可以针对那个屏幕来编写自己的程序,而无需去考虑程序在其他屏幕上的显示问题。
但自从
Android 1.6以来,系统引入了对多种尺寸、多种分辨率屏幕的支持,以此满足拥有各种配置的新平台的运行需求。这就意味着开发人员在针对
Android
1.6或更新版系统开发程序的时候,需要为自己的程序在多种分辨率的屏幕上良好显示作出额外的设计。
为了简化程序员面在对各种分辨率时的困扰,也为了具备各种分辨率的平台都可以直接运行这些程序,
Android平台将所有的屏幕以密度和分辨率为分类方式,各自分成了三类:
·三种主要的尺寸:大,正常,小;
·三种不同的密度:高(
hdpi),中(
mdpi)和低(
ldpi)。
如果需要的话,程序可以为各种尺寸的屏幕提供不同的资源(主要是布局),也可以为各种密度的屏幕提供不同的资源(主要是位图)。除此以外,程序不需要针对屏幕的尺寸或者密度作出任何额外的处理。在执行的时候,平台会根据屏幕本身的尺寸与密度特性,自动载入对应的资源,并把它们从逻辑像素(
DIP,用于定义界面布局)转换成屏幕上的物理像素。
下表列出了
Android平台支持的屏幕中一些比较常用的型号,并显示了系统是如何把它们分类到不同的屏幕配置里的。有些屏幕分辨率并不在下面的列表上,但系统仍会把它们归入下列的某一个类型中。
|
低密度(
120),
ldpi
|
中密度(
160),
mdpi
|
高密度(
240),
hdpi
|
小
屏幕
|
·
QVGA(
240×
320),
2.6~
3.0寸
|
|
|
普通
屏幕
|
·
WQVGA(
240×
400),
3.2~
3.5寸
·
FWQVGA(
240×
432),
3.5~
3.8寸
|
·
HVGA(
320×
480),
3.0~
3.5寸
|
·
WVGA(
480×
800),
3.3~
4.0寸
·
FWVGA(
480×
854),
3.5~
4.0寸
|
大
屏幕
|
|
·
WVGA(
480×
800),
4.8~
5.5寸
·
FWVGA(
480×
854),
5.0~
5.8寸
|
|
如上表所示,所有分辨率的屏幕,都围绕在基准屏幕
周围,而基准屏幕在分类中,为“正常”尺寸,与“中”密度。之所以用
HVGA屏幕作为基准屏幕,是因为所有针对
Android 1.5或更早的程序都是针对这片屏幕所写的(因为只支持这一片),比如
T-Mobile G1。
虽然系统支持上面
9种不同配置的屏幕,但你并不一定需要为它们都提供各自不同的资源。系统已经提供了足够鲁棒(就是在各种恶劣环境下正常工作,对环境变化不敏感)的兼容特性,用于在各种不同的屏幕上良好显示你的程序。这在下面的文档中会详细描述,如果你需要更多的资料,请查看“与屏幕无关的最佳实践”。
分享到:
相关推荐
在Android开发中,多分辨率支持是一项关键的技术,它确保了应用程序能在各种不同尺寸和像素密度的设备上正常显示。Android系统的设计允许开发者创建能够适应多种屏幕尺寸和分辨率的应用,但这也带来了一些挑战。 ...
"android分辨率适配源码+apk包" 提供了一个解决这一问题的实例,它包含源码和可安装的APK应用,帮助开发者了解如何在Android应用中实现自适应不同分辨率的屏幕。 首先,我们来理解分辨率适配的基本概念。Android...
"android分辨率适配文件生成"这个话题就是针对这个问题提出的一种解决方案。Android系统支持多种屏幕尺寸和分辨率,包括小屏、中屏、大屏以及超大屏,对应的像素密度有ldpi(低密度)、mdpi(中密度)、hdpi(高密度...
### Android主流分辨率及对应机型详解 #### 一、引言 在移动互联网时代,随着智能手机的普及和技术的进步,屏幕分辨率成为衡量手机显示效果的重要指标之一。不同分辨率的屏幕能够为用户提供不同的视觉体验,同时也...
Android支持`drawable-mdpi`、`drawable-hdpi`、`drawable-xhdpi`等目录,分别用于存放中等、高和超高密度的图像资源。每种密度对应不同的像素密度,例如: - `drawable-ldpi`:低密度,120dpi,适用于QVGA分辨率...
Android 5.0(API 21)引入了VectorDrawable,支持矢量图形,可以在不同分辨率下保持清晰,无需为每个密度准备多个图像文件。 总结,Android多分辨率适配是一项复杂但必要的任务,涉及到资源文件的组织、布局设计、...
### Android分辨率完美适应详解 在Android应用开发过程中,面对各种屏幕尺寸和分辨率的设备,确保应用界面能够完美适配每一种设备,是一项重要的任务。本文将深入探讨Android应用如何实现分辨率的完美适应,涵盖...
这个"android分辨率xml生成工具"的源码module就是为了简化这一过程而设计的。它允许开发者快速为各种屏幕尺寸生成相应的资源文件,提高开发效率。 首先,我们需要理解Android系统如何处理屏幕分辨率。Android支持...
- **利用Android资源目录**:Android支持不同dpi目录下的资源加载,合理利用ldpi、mdpi、hdpi、xhdpi、xxhdpi等目录,实现资源的高效管理和加载。 - **网页设计中的媒体查询**:使用CSS媒体查询,根据不同屏幕尺寸和...
Android系统支持多种屏幕尺寸和密度,包括小、正常、大、超大四种尺寸类别,以及低、中、高、超高四种密度类别。开发者需要确保应用能在这些不同的配置下正常运行。 获取屏幕分辨率的方法主要涉及Android的`...
在IT领域,尤其是在嵌入式系统和Linux驱动开发中,"uvc摄像头查询支持分辨率"是一个常见的需求。UVC(Universal Video Class)是USB设备类定义的一种,用于处理视频流设备,如网络摄像头。V4L2(Video for Linux Two...
Android系统支持多种不同的屏幕尺寸和分辨率,以适应广泛的设备类型,包括手机、平板电脑以及智能电视等。了解和适配这些不同分辨率对于开发者来说至关重要。 1. **DPI(dots per inch,每英寸像素数)**: ...
然而,这些值可能不会直接对应于屏幕的实际分辨率,因为Android支持多种屏幕密度。 `dm.density`是一个浮点数,表示屏幕的密度因子,它通常基于160dpi(每英寸160个像素,也称为MDPI或中等密度)的标准。例如,如果...
1. **使用不同的布局目录**:Android支持在res/layout目录下创建针对不同屏幕尺寸的子目录,如layout-small、layout-normal、layout-large和layout-xlarge。这样,系统会根据设备尺寸选择合适的布局文件。 2. **...
8. **资源多版本支持**:Android提供了一个资源目录结构,允许开发者为不同屏幕尺寸和密度提供特定的资源,如`res/layout-sw600dp`、`res/drawable-hdpi`等,确保应用在不同设备上看起来美观且功能正常。 9. **...
通过以上介绍,我们可以看到,Android分辨率管理是开发过程中的重要环节,合理的资源管理和适配策略对于提升应用质量至关重要。这个压缩包提供的不同分辨率的图片实例,是学习和实践这一概念的好材料。
白名单的分辨率数据要和kernel中的hdmi驱动新增分辨率一致
总之,Android的多分辨率支持和图标尺寸大小管理是其跨设备兼容性的重要组成部分。开发者需了解这些概念,以便创建能在各种Android设备上无缝运行的应用程序。通过正确使用DIP、适应性布局和密度特定的资源,可以...
同时,Android提供了资源多密度支持,允许开发者为不同密度的设备提供不同的资源文件,进一步优化用户体验。例如,将图片放在对应的ldpi、mdpi、hdpi、xhdpi等资源目录下,系统会自动选择最合适的资源。 总的来说,...
在Android系统中,由于设备的多样性,同一张图片在不同分辨率的屏幕上显示时,为了保持清晰度和视觉效果,往往需要有不同的尺寸版本。这涉及到Android的资源适配机制,包括密度独立像素(DP, Density Independent ...