基于android平台的多分辨率解决方案

上传人:ji****n 文档编号:47365814 上传时间:2018-07-01 格式:PDF 页数:10 大小:349.15KB
返回 下载 相关 举报
基于android平台的多分辨率解决方案_第1页
第1页 / 共10页
基于android平台的多分辨率解决方案_第2页
第2页 / 共10页
基于android平台的多分辨率解决方案_第3页
第3页 / 共10页
基于android平台的多分辨率解决方案_第4页
第4页 / 共10页
基于android平台的多分辨率解决方案_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《基于android平台的多分辨率解决方案》由会员分享,可在线阅读,更多相关《基于android平台的多分辨率解决方案(10页珍藏版)》请在金锄头文库上搜索。

1、基于基于基于基于 AndroidAndroidAndroidAndroid 平台的多分辨率解决方案平台的多分辨率解决方案平台的多分辨率解决方案平台的多分辨率解决方案目前基于 Android 系统的机型越来越多,一些硬件指标出现了混乱的局面,其中最明显的就是屏幕分辨率的问题。 如何使应用程序尽可能多地适应多种分辨率,如何在开发程序时兼容不同平台不同屏幕,已成为开发者最为关注的问题点之一。1 1 1 1 引言引言引言引言如今的智能手机用户对应用软件的舒适性和美观性有了更大的期望, 应用程序界面友好性已经越来越重要。但是由于 Android 的开源性,硬件厂商屏幕分辨率 不统一,据统计目前市场上 A

2、ndroid 系统手机的分辨率有 10 余种,分辨率分布如此广泛使得开发者在处理多分辨率适应方面遇到了不少难题。 开发者在处理多分辨率时应采用怎样的方法,才能兼容同分辨率呢?2 2 2 2 AndroidAndroidAndroidAndroid平台简介平台简介平台简介平台简介Android 是一个包括操作系统、中间件和关键应用的移动设备软件堆,Android 系统和其他系统一样,采用分层的架构。由下至上依此为 Linux 操作系统和驱动、程序库及 Android 运行时环境、应用程序框架层、应用层。 Android应用程序的基本组件有 Activity、Intent、BroadcastRec

3、eiver、Service 四种,各个组件 的配置信息以及权限管理 、版本管理等配 置信息都保存 在AndroidManifest.xml 中。3 3 3 3 AndroidAndroidAndroidAndroid应用程序资源管理应用程序资源管理应用程序资源管理应用程序资源管理手机界面上加载的图片是 Android 资源的一种,除此之外还有 XML 资源(anim.xml layout.xml 等)以及原数据文件。新建一个 HelloAndroid 的 Android应用程序,默认生成的文件架构包含 src,gen,assets,res 等文件夹,以及AndroidManifest.xml

4、配置文件。src 文件夹中保存的是 Android 源代码,res文件夹代表应用程序需要使用到的资源文件,gen 包中包含 R.java 文件。Res文件夹中包含的所有资源文件都对应在 R.java 中。在 res/目录中任何一个子目录中添加相应类型的文件之后, ADT会在 R.java文件中相应的匿名内部类中国自动生成一条静态 int 类型的常量,对添加的文件进行索引。Android 系统采取这种架构使视图等资源文件与控制代码分离,实现松耦合。然而可以使用 R.java 文件在代码中对相应的资源文件进行存取,灵活操作。如图:不同的 layoutAndroid 手机屏幕大小不一,有 480x3

5、20, 640x360, 800x480.怎样才能让App 自动适应不同的屏幕呢?其实很简单,只需要在 res 目录下创建不同的 layout 文件夹,比如layout-640x360,layout-800x480,所有的 layout 文件在编译之后都会写入R.java 里,而系统会根据屏幕的大小自己选择合适的 layout 进行使用。 hdpihdpihdpihdpi、mdpimdpimdpimdpi、ldpildpildpildpi在之前的版本中,只有一个在之前的版本中,只有一个在之前的版本中,只有一个在之前的版本中,只有一个 drawabledrawabledrawabledrawab

6、le,而,而,而,而 2.12.12.12.1 版本中有版本中有版本中有版本中有 drawable-mdpidrawable-mdpidrawable-mdpidrawable-mdpi、drawable-ldpidrawable-ldpidrawable-ldpidrawable-ldpi、drawable-hdpidrawable-hdpidrawable-hdpidrawable-hdpi三个,这三个主要是为了支持多分辨率。三个,这三个主要是为了支持多分辨率。三个,这三个主要是为了支持多分辨率。三个,这三个主要是为了支持多分辨率。drawable-hdpidrawable-hdpidra

7、wable-hdpidrawable-hdpi、drawable-mdpidrawable-mdpidrawable-mdpidrawable-mdpi、drawable-ldpidrawable-ldpidrawable-ldpidrawable-ldpi的区别:的区别:的区别:的区别:(1)drawable-hdpi(1)drawable-hdpi(1)drawable-hdpi(1)drawable-hdpi 里面存放高分辨率的图片里面存放高分辨率的图片里面存放高分辨率的图片里面存放高分辨率的图片, , , ,如如如如 WVGA(480x800),FWVGAWVGA(480x800),F

8、WVGAWVGA(480x800),FWVGAWVGA(480x800),FWVGA(480x854)(480x854)(480x854)(480x854)(2)drawable-mdpi(2)drawable-mdpi(2)drawable-mdpi(2)drawable-mdpi里面存放中等分辨率的图片里面存放中等分辨率的图片里面存放中等分辨率的图片里面存放中等分辨率的图片, , , ,如如如如 HVGAHVGAHVGAHVGA (320x480)(320x480)(320x480)(320x480)(3)drawable-ldpi(3)drawable-ldpi(3)drawable-l

9、dpi(3)drawable-ldpi里面存放低分辨率的图片里面存放低分辨率的图片里面存放低分辨率的图片里面存放低分辨率的图片, , , ,如如如如 QVGAQVGAQVGAQVGA (240x320)(240x320)(240x320)(240x320)低密度(120) , ldpi中密度(160) , mdpi高密度(240) , hdpi小屏幕QVGA ( 240 320) ,2.6 3.0 寸普通屏幕WQVGA ( 240 400 ) ,3.23.5 寸FWQVG ( 240 432 ) ,3.5 3.8 寸HVGA(320 480) ,3.03.5 寸WVGA(480800) ,3.

10、3 4.0 寸FWVGA(480854) ,3.5 4.0 寸大屏幕WVGA(480 800) ,4.85.5 寸FWVGA(480854) ,5.05.8 寸系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。注:在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。横屏竖屏每个 activity 都有这个属性 screenOrientation,每个 activity 都需要设置,可以设置为竖屏(portrait) ,也可以设置为无重力感应(nosensor) 。要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:AndroidManifest.

11、xml 里面配置一下就可以了。加入这一行 android:screenOrientation=“landscape“。例如(landscape是横向,portrait 是纵向) 。4 4 4 4 AndroidAndroidAndroidAndroid多分辨率设备兼容性问题解决方案多分辨率设备兼容性问题解决方案多分辨率设备兼容性问题解决方案多分辨率设备兼容性问题解决方案基本思路首先应当明确应用希望支持几种分辨率设备;其次,需明确哪些资源文件在不同分辨率的设备存在显示问题;对于显示有问题的, 需要重新准备与相应分辨率设备适配的资源文件和页面布局文件一般多分辨率处理方法及其缺点1)1)1)1) 图

12、片缩放图片缩放图片缩放图片缩放基于当前屏幕的精度,平台自动加载任何未经缩放的限定尺寸和精度的图片。如果图片不匹配,平台会加载默认资源并且在放大或者缩小之后可以满足当前界面的显示要求。例如,当前为高精度屏幕,平台会加载高精度资源(如HelloAndroid 中 drawable-hdpi 中的位图资源) ,如果没有,平台会将中精度资源缩放至高精度,导致图片显示不清晰。Android 平台中,当程序在 manifest中设置 android:anyDensity=“true“后,系统会对创建的 bitmap 进行缩放,缩放的根据就是 Density。2)2)2)2) 自动定义像素尺寸和位置自动定义

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

14、supports-screens 元素,这样超出显示的基准线时,平台在此显示黑色的背景图。例如,WVGA 中精度屏幕上,如程序不支持这样的大屏幕,系统会谎称是一个 320480 的,多余的显示区域会被填充成黑色。4)4)4)4)采用采用采用采用 OpenGLOpenGLOpenGLOpenGL动态绘制图片动态绘制图片动态绘制图片动态绘制图片Android 底层提供了 OpenGL 的接口和方法,可以动态绘制图片,但是这种方式对不熟悉计算机图形学的开发者来讲是一个很大的挑战。一般开发游戏, 采用 OpenGL 方式。5)5)5)5)多个多个多个多个 apkapkapkapk文件文件文件文件Sym

15、bian 和传统的 J2ME 就是采用这种方式,为一款应用提供多个分辨率版本,用户根据自己的需求下载安装相应的可执行文件。针对每 一种屏幕单独开发应用程序不失为一种好方法,但是目前 Google Market 对一个应用程序多个分辨率版本的支持还不完善, 开发者还是需要尽可能使用一个 apk 文件适应多个分辨率。5 5 5 5 相关术语相关术语相关术语相关术语屏幕尺寸屏幕尺寸屏幕尺寸屏幕尺寸真正的物理尺寸(屏幕对角线的长度,单位是英寸,如 2.8 寸,3.5 寸) 。为了简化起见,Android 把支持的所有物理尺寸分成了 4 组:small, normal,large, extra larg

16、e。屏幕长宽比屏幕长宽比屏幕长宽比屏幕长宽比屏幕的物理长度与物理宽度的比例。 程序可以为制定长宽比的屏幕提供制定的素材,只需要用系统提供的资源分类符 long 和 notlong。 屏幕密度屏幕密度屏幕密度屏幕密度 DensityDensityDensityDensity一定物理范围的像素的个数,单位通常是 dpi(dots per inch),即每英寸的点数。 例如一个低分辨率屏幕相对于高分辨率屏幕在一定的物理区域内包含的像素点要少。为了简化起见,Android 将所有的屏幕密度分成四组: low,medium ,high 和 extra high。简单的说简单的说简单的说简单的说,就是以屏幕分辨率为基础就是以屏幕分辨率为基础就是以屏幕分辨率为基础就是以屏幕分辨率为基础,沿屏幕长宽方向排列的像素沿屏幕长宽方向排列的像素沿屏幕长宽方向排列的像素沿屏幕长宽方向排列的像素。 密度密度密度密度较低的屏幕,在长和宽方向都只有比较少的像素,而高密度的屏幕通常则会有较低

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号