ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:542.56KB ,
资源ID:9869143      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9869143.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android屏幕自适应.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android屏幕自适应.docx

1、Android屏幕自适应Android屏幕自适应1、屏幕相关概念1.1分辨率是指屏幕上有横竖各有多少个像素1.2屏幕尺寸指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸。android将屏幕大小分为四个级别(small,normal,large,and extra large)。1.3屏幕密度 每英寸像素数。手机可以有相同的分辨率,但屏幕尺寸可以不相同,Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=252android将实际的屏幕密度分为四个通用尺寸(low,medium,high,and extra high)。一般情况下的普

2、通屏幕:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi。对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚1.4密度无关的像素(Density-independent pixeldip)dip是一种虚拟的像素单位。dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)。当你定义应用的布局的UI时应该使用dp单位,确保UI在不同的屏幕上正确显示。 目前主要是以分辨率为800*480和854*480的手机用户居多。从以上的屏幕尺寸分布情况上看,其实手机只要考虑3-4.5寸之间

3、密度为1和1.5的手机。2、android多屏幕支持机制Android的支持多屏幕机制即用为当前设备屏幕提供一种合适的方式来共同管理并解析应用资源。Android平台中支持一系列你所提供的指定大小(size-specific),指定密度(density-specific)的合适资源。指定大小(size-specific)的合适资源是指small, normal, large, and xlarge。指定密度(density-specific)的合适资源,是指ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)。Androi

4、d有个自动匹配机制去选择对应的布局和图片资源1)界面布局方面根据物理尺寸的大小准备5套布局:layout(放一些通用布局xml文件,比如界面顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局), layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间)2)图片资源方面需要根据dpi值准备5套图片资源:drawable:主要放置xml配置文件或者对分辨率要求较低的图片drawalbe-ldpi:低分辨率的图片,如Q

5、VGA (240x320)drawable-mdpi:中等分辨率的图片,如HVGA (320x480)drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854)drawable-xhdpi:至少960dp x 720dpAndroid有个自动匹配机制去选择对应的布局和图片资源。系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。3、AndroidManifest.xml 配置android从1.6和更高,Google为了方便开发者对于各种分辨率机型的移植而增

6、加了自动适配的功能3.1是否支持多种不同密度的屏幕android:anyDensity=true | false 如果android:anyDensity=true:指应用程序支持不同密度,会根据屏幕的分辨率自动去匹配。如果android:anyDensity=false:应用程序支持不同密度,系统自动缩放图片尺寸和这个图片的坐标。具体解释一下系统是如何自动缩放资源的。例如我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240320像素的手机,如果设置android:anyDensit

7、y=false,Android系统会将240 x 320(低密度)转换为 320480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。3.2是否支持大屏幕android:largeScreens=true | false如果在声明不支持的大屏幕,而这个屏幕尺寸是larger的话,系统使用尺寸为(normal)和密度为(medium)显示,不过会出现一层黑色的背景。3.3是否支持小屏幕android:smallScreens=true | false如果在声明不支持的小屏幕,而当前屏幕尺寸是smaller的话,系统也使用尺寸为(normal)和密度为(medium)显示。如

8、果应用程序能在小屏幕上正确缩放(最低是small尺寸或最小宽度320dp),那就不需要用到本属性。否则,就应该为最小屏幕宽度标识符设置本属性来匹配应用程序所需的最小尺寸。4、Android提供3种方式处理屏幕自适应4.1预缩放的资源(基于尺寸和密度去寻找图片)1)如果找到相应的尺寸和密度,则利用这些图片进行无缩放显示。2)如果没法找到相应的尺寸,而找到密度,则认为该图片尺寸为 medium,利用缩放显示这个图片。3)如果都无法匹配,则使用默认图片进行缩放显示。默认图片默认标配 medium (160)。4.2自动缩放的像素尺寸和坐标(密度兼容)1)如果应用程序不支持不同密度android:an

9、yDensity=false,系统自动缩放图片尺寸和这个图片的坐标。2)对于预缩放的资源,当android:anyDensity=false,也不生效。3)android:anyDensity=false,只对密度兼容起作用,尺寸兼容没效果4.3兼容更大的屏幕和尺寸(尺寸兼容)1)对于你在声明不支持的大屏幕,而这个屏幕尺寸是normal的话,系统使用尺寸为 (normal)和密度为(medium)显示。2)对于你在声明不支持的大屏幕,而这个屏幕尺寸是larger的话,系统同样使用尺寸为(normal)和密度为(medium)显示,不过会出现一层黑色的背景。5、Android系统自动适配技巧An

10、droid系统采用下面两种方法来实现应用的自动适配:1)布局文件中定义长度的时候,最好使用wrap_content,fill_parent, 或者dp 进行描述,这样可以保证在屏幕上面展示的时候有合适的大小2)为不同屏幕密度的手机,提供不同的位图资源,可以使得界面清晰无缩放。对应bitmap 资源来说,自动的缩放有时会造成放大缩小后的图像变得模糊不清,这是就需要应用为不同屏幕密度配置提供不同的资源:为高密度的屏幕提供高清晰度的图像等。3)不要使用AbsoluteLayout4)像素单位都使用DIP,文本单位使用SP6、在代码中获取屏幕像素、屏幕密度DisplayMetrics metric =

11、 new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric);int width = metric.widthPixels; / 屏幕宽度(像素)int height = metric.heightPixels; / 屏幕高度(像素)float density = metric.density; / 屏幕密度(0.75 / 1.0 / 1.5)int densityDpi = metric.densityDpi; / 屏幕密度DPI(120 / 160 / 240)7、 一般多分辨率处理方法及其缺

12、点7.1 图片缩放基于当前屏幕的精度,平台自动加载任何未经缩放的限定尺寸和精度的图片。如果图片不匹配,平台会加载默认资源并且在放大或者缩小之后可以满足当前界面的显示要求。例如,当前为高精度屏幕,平台会加载高精度资源(如HelloAndroid中drawable-hdpi 中的位图资源),如果没有,平台会将中精度资源缩放至高精度,导致图片显示不清晰。7.2 自动定义像素尺寸和位置如果程序不支持多种精度屏幕,平台会自动定义像素绝对位置和尺寸值等,这样就能保证元素能和精度160 的屏幕上一样能显示出同样尺寸的效果。例如,要让WVGA 高精度屏幕和传统的HVGA 屏幕一样显示同样尺寸的图片,当程序不支

13、持时,系统会对程序慌称屏幕分辨率为320480,在(10,10)到(100,100)的区域内绘制图形完成之后,系统会将图形放大到(15,15)到(150,150)的屏幕显示区域。7.3 兼容更大尺寸的屏幕当前屏幕超过程序所支持屏幕的上限时,定义supportsscreens元素,这样超出显示的基准线时,平台在此显示黑色的背景图。例如,WVGA 中精度屏幕上,如程序不支持这样的大屏幕,系统会谎称是一个320480 的,多余的显示区域会被填充成黑色。7.4 采用OpenGL 动态绘制图片Android 底层提供了OpenGL 的接口和方法,可以动态绘制图片,但是这种方式对不熟悉计算机图形学的开发者

14、来讲是一个很大的挑战。一般开发游戏,采用OpenGL 方式。7.5 多个apk 文件Symbian 和传统的J2ME 就是采用这种方式,为一款应用提供多个分辨率版本,用户根据自己的需求下载安装相应的可执行文件。针对每一种屏幕单独开发应用程序不失为一种好方法,但是目前Google Market 对一个应用程序多个分辨率版本的支持还不完善,开发者还是需要尽可能使用一个apk 文件适应多个分辨率。以下是Demo首页的预览图一、细说layout_weight目前最为推荐的Android多屏幕自适应解决方案。该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。其值越小,则对应的layout

15、_width或layout_height的优先级就越高,一般横向布局中,决定的是layout_width的优先级;纵向布局中,决定的是layout_height的优先级。传统的layout_weight使用方法是将当前控件的layout_width和layout_height都设置成fill_parent,这样就可以把控件的显示比例完全交给layout_weight;这样使用的话,就出现了layout_weight越小,显示比例越大的情况。不过对于2个控件还好,如果控件过多,且显示比例也不相同的时候,控制起来就比较麻烦了,毕竟反比不是那么好确定的。于是就有了现在最为流行的0px设值法。看似让人

16、难以理解的layout_height=0px的写法,结合layout_weight,却可以使控件成正比例显示,轻松解决了当前Android开发最为头疼的碎片化问题之一。先看下面的styles(style_layout.xml) fill_parent fill_parent wrap_content wrap_content 0px 0px 可以看到,layout_width和layout_height两个属性被我封装成了4个style根据实际布局情况,选用当中的一种,不需要自己设置,看过我前一个ActivityGroup的Demo的同学应该非常熟悉了然后我的Demo的布局如下(weight_

17、layout.xml) 整个界面布局看起来非常直观,只是嵌套的逻辑要自己理下。显示效果如下图,其中左面一个是480x800的界面,右面的是320x480的界面(后面的图也如此),可以看出显示比例和代码中完全一致,我就不多说了,大家对照下就能看出来了。二、自定义尺寸法这个是我自己想出来的方法,可能是个比较笨的方法,所以没有多少人提过用这种方法解决自适应的问题。虽然这个方法缺点也很多,但有时候也是个不错的方法。先看下面这张图可以看到我定义了两套尺寸文件,我们可以看下其中一个文件6px12px18px24px30px36px42px48px54px60px66px72px78px84px90px96px102px108px114px120px126px132px138px144px150px156px162px168px174px180px186px192px198px204px210px216px222px228px234px240px246px252px258px264px270px276px282px288px294px300px306px312px318px324px330px336px342px348px354px360px366px372px378px384pxd

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1