基于Android的全屏幕适配方案.doc
《基于Android的全屏幕适配方案.doc》由会员分享,可在线阅读,更多相关《基于Android的全屏幕适配方案.doc(4页珍藏版)》请在三一文库上搜索。
1、基于Android的全屏幕适配方案一、现状由于Android碎片化严重,屏幕适配一直是开发中较为头疼的问题。面对市面上五花八门的屏幕大小与分辨率, Android基于dp与res目录名称来适配的方案已无法满足一次编写全屏幕适配的需求,为了 达到最优的视觉效果,开发过程中总是需要花费较多资源进行适配。也有开发者给出了一些自己的解决方案。首先来分析一下一些常见的解决方案的现状:官方适配方案dp。dp是Android开发中特有的一个单位。与px不同,dp是基于屏幕像素密度的一种单位。在 密度低的屏幕上或许1dp=1px,但在密度高的屏幕上可能1dp=4px。编写布局xml时,如果一个控件的长宽都使用
2、dp来指定,那么能确保该控件在各种大小与分辨率的屏幕下的绝对大小都大致相当。也就是说无论在pad下还是大小屏手机下,我们实际看到的该控件的大小是差不多的:资源目录名。上图可见虽然使用dp确保了控件在不同屏幕中的绝对大小一致。这样的好处在于,在大小相近的屏幕中, 无论分辨率多大都不会对布局造成影响;但是当屏幕大小相差较大时,仅保证控件的 绝对大小看起来就有些问题了。在res目录下可以给 各资源目录都加上例如-1920x1080等后缀来适配不同的 屏幕,具体规则可见官网文档。这样可以针对不同的屏幕提供不同的布局,甚至针对pad与手机提供两套完全不同的布局样式。但是通常情况下,设计师并不会对不同屏幕
3、提供不同的设计图,他们的需求仅仅是不同屏幕下控件对屏幕的相对大小一致,所以dp并不能满足这一点,而对各种屏幕适配一遍又显得略为繁琐,并且修改也较为麻烦。通常我们需要的适配是这样的:百分比布局支持库。没有使用过,但是deprecated in API level 26.0.0-beta1。ConstraintLayout。百分比支持库deprecated之后推荐使用的布局,看起来似乎略复杂。玩家适配方案。广大玩家的适配目的很明确,目的就是要确保控件在不同屏幕的相对大小一致,看起来一毛一样的。 以一位大神玩家的两种适配方案为例:方案一。 编写脚本将长度转换成各分辨率下的长度,缺点是难以覆盖市面上的
4、所有分辨率。方案二。AutoLayout支持库。该库的想法非常好:对照设计图,使用px编写布局,不影响预览;绘制阶段将对应设计图的px数值计算转换为当前屏幕下适配的大小;为简化接入,inflate时自动将 各Layout转换为对应的AutoLayout,从而不需要在所有的xml中更改。但是同时该库也存在以下等问题:扩展性较差。对于每一种ViewGroup都要对应编写对应的AutoLayout进行扩展,对于各View的每个需要适配的属性都要编写代码进行适配扩展;在onMeasure阶段进行数值计算。消耗性能,并且这对于非LayoutParams中的属性存在较多不合理之处。比如在onMeasure
5、时对TextView的 textSize进行换算并setTextSize,那么 玩家在代码中动态设置的textSize都会失效,因为在每次onMesasure时都会重新被 AutoLayout重新设置覆盖。issue较多并且作者已不再维护。二、想法对于大小差异较大的屏幕,本不该使用同一套设计方案,否则大屏的优势没有完全体现出来,从官方的适配方案也似乎是表达了这个意思。但是在实际设计与开发中,对于一个普通的App,很少有项目有意愿有精力来对各屏幕来分别设计与开发一套设计方案来适配。通常的一个简单的适配需求是:假如设计图宽度为200,一个控件在设计图上标注的长度为3,那么该控件长度相当于总宽度的3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 全屏幕 配方
链接地址:https://www.31doc.com/p-3409185.html