Android平台的多分辨率屏显设计及其兼容性测试

发布者:Changfeng520最新更新时间:2012-05-07 来源: eefocus关键字:OpenGL  Android  虚拟机 手机看文章 扫描二维码
随时随地手机看文章
0 引 言

2007 年11 月,Google 公司发布基于Linux2.6 内核的移动终端操作系统- Android, 由于其开源性,得到很多手机厂商的追捧和应用开发者的青睐。近年来智能手机发展迅速,运行速度、存储容量和可靠性等指标有了显着提高[1],当今的智能手机用户对应用软件的舒适性和美观性有了更大的期望,应用程序界面友好性已经越来越重要。但是由于Android 的开源性,硬件厂商屏幕分辨率不统一,据统计目前市场上Android系统手机的分辨率有10 余种,分辨率分布如此广泛使得开发者在处理多分辨率适应方面遇到了不少难题。文章首先介绍Android 平台的系统架构及资源管理方法,之后介绍目前开发者在处理多分辨率时采用的方法,而后重点分析Android 平台资源加载机制并且结合实例给出多分辨率的处理步骤及技巧,最后介绍测试多分辨率效果的方法。

1 Android 平台简介

Android 是一个包括操作系统、中间件和关键应用的移动设备软件堆[2],Android 系统和其他系统一样,采用分层的架构。由下至上依此为Linux 操作系统和驱动、程序库及Android 运行时环境、应用程序框架层、应用层。 Android 应用程序的基本组件有Activity、Intent、BroadcaSTReceiver、Service 四种,各个组件的配置信息以及权限管理、版本管理等配置信息都保存在AndroidManifest.xml 中。

1.1 Android 应用程序资源管理

手机界面上加载的图片是Android 资源的一种,除此之外还有XML 资源(anim.xml layout.xml 等)以及原数据文件( 音视频文件等)[3].新建一个HelloAndroid 的Android 应用程序,默认生成的文件架构包含src,gen,assets,res 等文件夹,以及AndroidManifest.xml 配置文件。src 文件夹中保存的是Android 源代码,res 文件夹代表应用程序需要使用到的资源文件,gen 包中包含R.java 文件。Res 文件夹中包含的所有资源文件都对应在R.java 中。

当开发者在res/ 目录中任何一个子目录中添加相应类型的文件之后,ADT 会在R.java 文件中相应的匿名内部类中国自动生成一条静态int 类型的常量,对添加的文件进行索引。

Android 系统采取这种架构使视图等资源文件与控制代码分离,实现松耦合。然而可以使用R.java 文件在代码中对相应的资源文件进行存取,灵活操作。

1.2 一般多分辨率处理方法及其缺点

1.2.1 图片缩放

基于当前屏幕的精度,平台自动加载任何未经缩放的限定尺寸和精度的图片。如果图片不匹配,平台会加载默认资源并且在放大或者缩小之后可以满足当前界面的显示要求。例如,当前为高精度屏幕,平台会加载高精度资源(如HelloAndroid中drawable-hdpi 中的位图资源),如果没有,平台会将中精度资源缩放至高精度,导致图片显示不清晰。

1.2.2 自动定义像素尺寸和位置

如果程序不支持多种精度屏幕,平台会自动定义像素绝对位置和尺寸值等,这样就能保证元素能和精度160 的屏幕上一样能显示出同样尺寸的效果。例如,要让WVGA 高精度屏幕和传统的HVGA 屏幕一样显示同样尺寸的图片,当程序不支持时,系统会对程序慌称屏幕分辨率为320×480,在(10,10)到(100,100)的区域内绘制图形完成之后,系统会将图形放大到(15,15)到(150,150)的屏幕显示区域。

1.2.3 兼容更大尺寸的屏幕

当前屏幕超过程序所支持屏幕的上限时,定义supportsscreens元素,这样超出显示的基准线时,平台在此显示黑色的背景图。例如,WVGA 中精度屏幕上,如程序不支持这样的大屏幕,系统会谎称是一个320×480 的,多余的显示区域会被填充成黑色。

1.2.4 采用OpenGL 动态绘制图片

Android 底层提供了OpenGL 的接口和方法,可以动态绘制图片,但是这种方式对不熟悉计算机图形学的开发者来讲是一个很大的挑战。一般开发游戏,采用OpenGL 方式。[page]

1.2.5 多个apk 文件

Symbian 和传统的J2ME 就是采用这种方式,为一款应用提供多个分辨率版本,用户根据自己的需求下载安装相应的可执行文件。针对每一种屏幕单独开发应用程序不失为一种好方法,但是目前Google Market 对一个应用程序多个分辨率版本的支持还不完善,开发者还是需要尽可能使用一个apk 文件适应多个分辨率。

2 多分辨率处理方案详解

2.1 基本术语介绍

2.1.1 屏幕尺寸

真正的物理尺寸,屏幕对角线的长度,单位是英寸。为了简化起见,Android 把支持的所有物理尺寸分成了4 组:small,normal, large, extra large.

2.1.2 屏幕密度Density

一定物理范围的像素的个数,单位通常是dpi(dots perinch),即每英寸的点数。例如一个低分辨率屏幕相对于高分辨率屏幕在一定的物理区域内包含的像素点要少。为了简化起见,Android 将所有的屏幕密度分成四组:low, medium,high 和extra high.

2.1.3 方向Orientation

从用户视角来看的屏幕的方向,Portrait 纵向和Landscape 横向。

2.1.4 分辨率Resolution

屏幕上所有的像素点数目,一般用480*800 的形式来表示。密度无关像素dp: Android 平台中虚拟的像素单位,定义成一种密度无关的形式,像素px 和dp 的转换公式为 px =dp*(dpi/160)。在界面开发中应使用dp 作为像素单位,从而保证在不同的屏幕密度上控件所占的实际px 因密度而自动调整。

2.2 手机屏幕的分类

Android 采用两种标准对屏幕进行分类。按照屏幕尺寸分为四组small, normal, large, extra large;按照屏幕密度分为四组 low, medium ,high 和extra high,其分界线如图1所示。

图1 Android 中的屏幕分类

为了优化程序UI,让其适应多种分辨率并能清晰显示,一般情况下需要为不同屏幕大小密度提供不同的图片文件和对应的布局文件,在运行的时候,Android 系统会根据当前设备的屏幕大小及密度等信息,选择加载其中一套匹配的资源加以运行,从而达到适应多分辨率的效果。

2.3 Android 支持多分辨率原理及步骤

由以上分析,默认的加载方式都不能很好地适应不同的分辨率,Android 从1.6 开始支持多种分辨率的处理,原理简而言之就是根据屏幕参数,动态加载资源文件。在Android 项目文件结构中,drawable 文件夹下包含三个子文件夹,分别为drawable-hdpi, drawable-mdpi, drawable-ldpi, 分别存放hdpi,mdpi,ldip 的位图。应用程序运行时,Android 系统会根据当前设备的屏幕大小、分辨率、屏幕密度、方向、长宽比等信息,选择相应文件夹进行加载。Android 配置修饰符的定义规则如下:

1)在res 文件夹下新建目录,命名为- 这种格式,其中 为标准资源名称,例如drawable 或者layout; 即修饰符,指定对应的屏幕参数,比如normal/small/large,hdpi/mdpi/ldpi,land/port,long/notlong 等。

2)在步骤1 新建的文件夹中存入相应的资源,比如位图资源或者layout 资源,资源文件的名字必须与默认资源文件的名字相同。例如:

3)Android 系统支持多分辨率的机制离不开Android-Manifest.xml 文件的supports-screen 元素,若应用程序要适应多种分辨率,需要将anyDensity 设置为true.[page]

2.4 界面设计技巧

前面的部分已经详细讲解了如何架构应用程序使其更好地适应多种分辨率屏幕,此外,在界面设计和控制中我们还应该掌握一些原则或者技巧,从而使应用程序界面友好、适应性强。

1)在XML layout 文件中定义长度的时候,最好使用wrap_content,fill_parent, 或者dp 进行描述,这样可以保证在屏幕上面展示的时候有合适的大小。例如,一个view layout_width="100dip",在 HVGA@160 density 的设备上显示100 个px,而在 WVGA@240 density 的设备上显示150 个px,但是所占的物理尺寸时相同的。

2)在Activity 或者其他控制视图加载的代码处,不要使用像素单位的硬编码。

3)不要使用AbsoluteLayout.绝对布局是由AndroidUI toolkit 提供的布局容器中的一种。但是与其他layout 不一样的是,AbsoluteLayout 使用固定的位置表示,使得在不同的屏幕上面显示效果不好,因此AbsoluteLayout 在sdk1.6 及以后的版本中被弃用了。

4)为不同屏幕密度的手机,提供不同的位图资源,可以使得界面清晰无缩放。

3 多分辨率兼容性测试方案

在产品发行之前,要在所有的目标手机上进行全面的测试。Android SDK 包含了一套测试多分辨率的机制。可以自己定制avd 作为应用程序的测试环境,avd 会模拟真实机器的屏幕大小和密度。例如图2 为模拟器的列表,可以将程序运行在这四个模拟器中进行多分辨率的测试。

图2 虚拟机列表

4 结论

本文介绍Android 平台的体系架构和分辨率相关的术语,详细论述资源加载原理和多分辨率处理的详细流程,最后给出了测试应用程序是否适应多种分辨率的方法。结合本人实践经验进行讲述,内容深入浅出,较完整地论述了如何使应用程序尽可能多地适应多种分辨率屏幕。

关键字:OpenGL  Android  虚拟机 引用地址:Android平台的多分辨率屏显设计及其兼容性测试

上一篇:基于霍尔电流传感器的太阳能电池的输出电流测量
下一篇:MMA7361L的高精度角度检测平台设计

推荐阅读最新更新时间:2024-03-30 22:25

安卓最强!高通骁龙8150安兔兔跑分首曝:远超麒麟980
11月15日消息,随着首款搭载基于7n m工艺制程打造的麒麟980芯片的华为Mate 20系列机型以及今年最后的一批旗舰机陆续亮相,用户和业内人士都将目光集中在了明年旗舰机主打的全新高通骁龙旗舰处理器上。现在有最新消息,全新旗舰处理器骁龙8150的跑分数据得到曝光。         今日,安安兔官方微博公布了高通骁龙8150的跑分成绩,该芯片总分高达362292分,是目前Android平台最高分。据安安兔表示,骁龙8150这次也是大中小架构,不过是“1+3+4”,频率分别是2.84GHz、2.4GHz、1.78GHz。GPU是Andreno 640,目前相比骁龙845上的Adreno 630来说提升超过20%。  
[手机便携]
索尼爱立信推娱乐智能手机 豪言夺Android第一
    3月11日消息,根据索尼爱立信发布的战略,其将在中国大推“通信娱乐”功能的智能手机,并且更专注于Android市场,目标是在短期内做到Android系统产品中的第一位。   根据官方数据,索尼爱立信目前智能手机的出货量达到了1000万部,智能手机的收入占据整体利润的50%。   据悉,索尼爱立信的智能手机战略是:将索尼技术与Android平台结合,大做“通信娱乐”功能的智能手机   索尼爱立信大中华区总裁奎迈格特别强调了Android系统对于索尼爱立信智能手机的重要性,同时奎迈格还表示,在2011年索尼爱立信将更专注于Android市场,并力争要成为Android市场中的领导品牌。奎迈格还明确表示,索尼爱立信的目标是
[手机便携]
这些Nexus设备 最早将在10月迎来更新
     在谷歌发布最新系统Android N之后,旗下的Nexus设备预计将在不久之后迎来更新了。而根据外媒最新报道称,谷歌近日公布了旗下Nexus设备的系统更新时间表,很遗憾的是,较早的一些设备我们可能看不到其更新到Android N了。 Android N   时间表显示,谷歌最新的设备Nexus 5X、Nexus 6P到2017年9月份依然支持官方系统更新,而早些时候的Nexus 9与Nexus 6今年10月份将迎来Android N更新,至于更早的Nexus 5、Nexus 7(2013)以及Nexus 10将无缘今年的新系统更新。     另外从时间表我们也能看到,谷歌很可能会在今年的9月或10月份推出A
[手机便携]
安卓厂商跟风iPhone X面部识别:屏下指纹识别遭弃
    就在安卓阵营努力改进指纹识别技术的时候,苹果iPhone X直接跳了过去,搭载全新的TrueDepth摄像头和Face ID面部识别技术,安卓世界也随之改变了风向。   据凯基证券分析师郭明錤称, iPhone X发布之后,安卓手机厂商对于3D识别技术的需求增长了至少3倍。   郭明錤指出,屏下光学指纹识别只不过是传统电容式方案的升级版,3D识别则带来了革命性的用户体验提升,而且能给厂商带来更丰厚的利润。   3D识别不仅可以实现安全的面部识别、带来更有趣的体验,比如苹果的Animoji动态表情,更重要的它还是推动AR增强现实的关键因素。   目前,安卓阵营可用的3D识别方案中,高通与IC设计公司奇景光电(Himax
[手机便携]
新汉TI AM3354开启Android 4.0新时代
   新汉最新推出的ACEK 3354-7P是一套ARM SoC入门套件,采用TI Sitara™ AM3354 ARM® Cortex™-A8处理器和超低功耗计算机模块(ULP-COM)。ACEK 3354-7P是一套完整的、随时可使用的系统,主要由一块ACES 3354 ULP-COM模块和一块ACEB-35载板组成,内置了7" LCD屏,投射电容式(P Cap)触摸面板和可启动的SD卡,并可预先安装Windows Embedded Compact 7.0或Linux 2.6。该ARM SoC入门套件旨在帮助开发人员评估低功耗ARM系统,并加快其开发,例如便携式设备、数据信息亭、机顶盒、家庭和工业自动化系统。   其中
[嵌入式]
新汉TI AM3354开启<font color='red'>Android</font> 4.0新时代
无线充电盘,iPhone或安卓等Qi设备都能用
爱马仕自从跟 Apple 合作,不时都会推出电子产品,以迎合不同人士的需要。就在上周,Hermès 再度跟电子产品结缘,推出了史上最昂贵奢华的无线充电盘。   这款产品整个采用真皮覆盖,边缘缝线处理,设计简约,法国原装制作,没有多余的装饰,切合爱马仕一向高贵优雅的形象。   爱马仕无线充电盘拥有一个卧式托盘无线充电区域,分为左右两个部分,左边是无线充电模块部分,右边下凹是置物盘,用于收纳零碎物件。   据悉,这款无线充电盘支持 Qi 无线充电,不论是 iPhone、AirPods 或是 Android 手机都可以用得到。它使用 USB-PD / USB-C 充电线连接,最低 30W 输入,15W 无线充电功率。   
[手机便携]
基于Android的多传感器信息融合技术应用
引言 气溶胶的检测方法和仪器很多,不同方法及仪器的适应范围不同,各种检测仪器间的信息存在互补性 .不同仪器采用的协议类型和接口方式不同,给使用和实时检测带来很大不便。气溶胶涵盖的物质种类繁多,成分复杂,单一仪器往往只能采集一个或几个参数。传统方案在多参数数据采集分析系统中的应用加剧了系统的复杂程度,降低了系统的适应性及便捷操作性。 测量气溶胶的空气动力学粒谱仪、积分浊度仪、扫描迁移率粒谱仪、黑碳仪和QTrak Plus室内空气质量监测器能够准确测量不同性质的气溶胶参数,但是各种传感器的测量结果常常出现不一致的情况,因此需要对测量结果进行综合对比分析。气溶胶的几种测量仪器的结果互为补充,通过对比和综合分析,可以得到气溶胶的综
[嵌入式]
T-Mobile推第二款Android手机MyTouch
美国 Wired:T-Mobile正式推出第二款Android手机MyTouch T-Mobile日前发布了其第二款Android手机MyTouch,该款新机在外型上体积更小巧,重量更轻便,风格更加简约。 据国外媒体报道,T-Mobile介绍称,与此前那款Android手机G1相比,MyTouch没有QWERT键盘,取而代之的是屏幕软键盘。而且该机在外型上更加轻薄,全机只有160克重,除了黑色和白色之外,该新产品还有其他色彩可供选择。 相比G1较小的电池效能,MyTouch采用1340毫安的新款电池,据称将能够维持5个小时的通话时间。 T-Mobile还表示,MyTouch最早将会在7月8日正式上市,但是新客户可
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved