关于android屏幕自适应的个人心得

这是一些博主自己对安卓的屏幕自适应的理解,有什么不到之处也别喷。

  首先,观察新建的项目res文件夹,大家估计都能找到drawable文件夹有很多个,如drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi,这些文件夹是谷歌公司为屏幕自适应做的准备,意思说各位朋友在做屏幕自适应之前应该准备5套资源图片来出来该问题。相应的比例关系大概是 1 : 0.5 : 0.75 : 1.5 : 2 ,而现在大部分4.0的机子不再适用于240*320和320*480的屏幕了,而转向如480*800、720*1280等一些更大的屏幕所以作图可以只做1  : 1.5  : 2 即可。

  介绍问drawable文件夹下来该说说values文件夹了,同样读者可以看到也是对应的有许多类似文件夹(如果没有手动新建也是可以的),values 、values-large、values-xlarge等,这些文件夹的作用也是为了自适应屏幕大小而准备的。其中重要的一个文件就是dimens。

  还有就是layout多个文件,详细读者应该都熟悉这些文件夹的作用,这里不再细细解读。

  好了现在手里可用的资源就是上面介绍的,进入正题。

  博主在处理屏幕自适应的问题上想到了三种(1)多套layout布局(建议使用频率降低)、(2)多套图和多套dimens配合使用,(3)多套布局、多套图、多套dimens混合使用。

  方法一:

  建立layout、layout-large、layout-xlarge三个文件夹(如果还想适应240*320和320*480的话还可以建立layout-small、layout-middle),假设layout文件夹下新建一个test.xml的文件,定义该文件下所有的数量值基准为1,所有的控制大小、间距、填充的量值全部写死,比如padding10、margin10,layout_width=100等。在layout-large文件夹下,也新建一个文件命名与layout下的文件同名也叫test.xml,但是该文件的量值应该全部是layout文件夹下量值的1.5倍,这样大屏的适配就基本算是完成了。依葫芦画瓢也可以完成超大屏的适配。完成之后再做检查,将集中不合适的量值修改即可完成粗略的屏幕自适应。等到项目在真机上跑起来的时候,安卓系统会根据当前屏幕大小来决定,那一套layout资源在屏幕上显示。如果想划分得更细读者还可以建立多个layout资源文件,在原基准之上添加1.15、1.25、1.35、1.45倍数的layout布局。这样屏幕自适应越趋于完美,只能说无限接近完美,而达不到完美。这种方法理解起来相对并不困难,就是处理的布局较多时,此方法带来的工作量就会成几何级的速率增长,建议慎用。

  方法二:一套layout布局,多套量值适应

  这种方法操作就相对简单了,以做出一套layout布局来适应480*800的屏幕也就是说,适应基准屏幕即可,但是其中所有的例如padding、margin、width、height、textsize就不能写死了,全部变为引用值,引用值在values文件夹下的dimens中建立,dimens文件里面可以定义尺寸和字体大小,例如官方给出的例子                <dimen name="activity_horizontal_margin">16dp</dimen> 定义的尺寸。values文件夹下的dimens文件对应的基准设为1,相应的其他dimens对应的为1.5和2 。例如在values-large下的dimens文件内定义<dimen name="activity_horizontal_margin">24dp</dimen>、在values-xlarge下的dimens定义<dimen name="activity_horizontal_margin">32dp</dimen> 。这样在layout布局下控件大小、padding、margin等的值应该写成例如android:layout_width="@dimen/activity_horizontal_margin"这样的形式,就是引用了一个变量来作为控件的宽度,目的是让安卓系统自己去判断该怎么显示。这个方法是博主之前用的方法,效果还不错。下面给出图示:

  这是values目录下的dimens,定义了许多字体大小

下面是在values-lagre下定义的字体大小

下面是在values-xlarge下dimens中字体带下的定义

可以看出名称没有变化,只是量值发生了变化,这样就可以大概结局屏幕自适应的问题,其他一些需要改动的另行设置即可。

  方法三:混合使用

  在前两种方法的基础之上,部分做多布局,部分做多变量,这样可以最大程度的解决自适应的方法,就是在做的过程中需要时刻抓住该怎样的界限,这个方法博主也在尝试,不过完全可以预期此方法的好处。

  总结,以前经常看到一些文章提到了屏幕密度,屏幕尺寸的问题,博主感觉应该是把问题复杂化而后扯远了。只要跟着谷歌公司的意图来做,应该不会出太大的意外。好了时间不早了,洗洗睡吧,有问题请留言。勿喷!!!

时间: 2024-12-19 23:36:05

关于android屏幕自适应的个人心得的相关文章

android屏幕自适应4方法案例整合

android:屏幕自适应 From:4种必须知道的Android屏幕自适应解决方案(求投票支持) demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQxN3w1NzAwOTV8MTczOTcz Demo首页的预览图 一.细说layout_weight 目前最为推荐的Android多屏幕自适应解决方案. 该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布

4种必须知道的Android屏幕自适应解决方案

文章来源:http://blog.csdn.net/shimiso/article/details/19166167 demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQxN3w1NzAwOTV8MTczOTcz一.细说layout_weight    目前最为推荐的Android多屏幕自适应解决方案.    该属性的作用是决定控件在其父布局中的显示权重,一般用于

Android 屏幕自适应方向尺寸

最近感觉要被屏幕适配玩死了…… 安卓的手机为虾米不能像苹果那样只有几个分辨率呢?为什么呢!!!!!!!阿门…… 目前想到有两种解决办法…… 第一种:   HTML5+CSS3+WebView交互……目前还在研究,空了放demo 第二种:   通过安卓UI自己的layout来处理:   1.屏幕界面布局     在 res 目录下创建不同的 layout(drawable也支持)文件夹,比如 layout-640x360 .layout-800x480 ,所有的 layout 文件在编译之后都会写

Android -- Webview自适应屏幕

第一种                                                                                          WebSetting settings = webView.getSettings(); settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 把所有内容放在webview等宽的一列中.(可能会出现页面中链接失效) 第二种             

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,

Android开发屏幕自适应方法

先来看一下效果图: 上图是通过设置layout_weight来解决Android多屏幕自适应.该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中. 其值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是layout_width的优先级:纵向布局中,决 定的是layout_height的优先级. 传统的layout_weight使用方法是将当前控件的layout_width和layout_height都设置成fill_paren

android屏幕适配详解

android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如果是纯色背景,尽量使用android的shape 自定义. 5.如果需要在特定分辨率下适配,可以在res目录上新建layout

关于android 使用bitmap的OOM心得和解决方案

android开发,从2010年开始学习到现在的独立完成一个app,这漫长的四年,已经经历了很多次bug的折磨,无数次的加班训练.然而,自以为自己已经比较了解android了,却最近在一个项目上,因为oom而折腾了一个周,回到原地,认识了自己的不足,感觉自己是如此的菜鸟呀. 好了,不废话,大家在使用开发android的时候,很少会注意或者意识到释放内存的重要性,因为大家在使用过程中,涉及的图片资源不多,或者比较稳定,来回切换界面,图片也就那么几张或者使用的都是很小的图片,根本不会感觉到图片占用内

关于Android屏幕适配的总结

Android用两种常规的属性来分类设备屏幕:即尺寸和像素密度.作为开发者,我们在设计应用的时候必须要考虑到我们所做的应用会被安装到不同屏幕尺寸和像素密度的设备上.因此,我们的应用应当包含可选的资源来优化应用外观,以便支持不同尺寸和像素密度的设备. 有四种广义上的尺寸:small.normal.large.xlarge. 同样也有四种广义的像素密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi) 为了声明用于不同屏幕的不同la