一种基于百分比的Android手机屏幕适配方法

文档序号:10473924阅读:299来源:国知局
一种基于百分比的Android手机屏幕适配方法
【专利摘要】本发明公开了一种基于百分比的Android手机屏幕适配方法,该方法针对现有的Android手机屏幕适配方案的不足,提出了一种根据屏幕尺寸和像素无关密度之间的映射关系的基于百分比的屏幕适配方案。主要包括确定需要适配的手机屏幕分辨率、将需要适配的手机屏幕分辨率在横向和纵向上以UI基准进行等分,计算出在这个基准下一个单元的高度和宽度所分别对应的像素值、然后通过编程,自动生成适配文件的工具类,生成需要适配的分辨率所对应的XML文件、引用适配文件中对应数值的方式设置控件的参数,系统会根据当前设备的分辨率找到准确的像素值设置给控件,从而可以实现准确的适配。本发明利用了Android系统自适应特性,与传统适配方案相比,可以精确地适配不同手机分辨率。
【专利说明】
一种基于百分比的Andro i d手机屏幕适配方法
技术领域
[0001]本发明涉及一种图像数据处理领域中的图像转换技术,具体涉及一种针对Android系统移动终端的屏幕适配方法。
【背景技术】
[0002]随着互联网的迅速发展,移动客户端应用的开发被推到了风口浪尖。根据报告显示在中国市场上Android系统的市场份额2014年己经增加至86%,并且还在不断提升。在国内市场上,像小米的MIU1、华为的EMU1、魅族的Flyme系统等,都是在Android系统基础上深度定制的操作系统,以此来满足国人的使用习惯。但是正是由于这种开放性,使得Android系统的定制参差不齐。不同厂商可以根据自身需要定制系统,因此出现了“碎片化”问题。如图1所示。该图中每一个矩形代表一种Android设备屏幕尺寸。
[0003]传统的适配解决方法是,在编写布局文件时尽量使用wrap_content、match_口&代111:、'\¥618111:属性来设定一个控件的宽和高。使用¥瓜口_001^6111:,系统就会将视图的宽度或高度设置成所需的最小尺寸以适应视图中的内容,而match_parent(在低于API级别8的级别中称为fill_parent)则会展开组件以填充其父视图的尺寸。而weight则是线性布局(Liner Layout)中的特有属性,我们可以根据纵向或者横向的控件个数和weight的本比例来对界面进行分配。但是如果想要界面变得更加美观、更加符合用户的使用习惯,仅仅凭借这种方法是远远不够的。所以我们想到了像素无关的密度单位dp和sp来控制控件的长宽。虽然dp可以使相同的控件在不同的屏幕下显示的效果近似,但是并不是所有的屏幕宽度都是相同的dp长度。当设备的物理尺寸存在差异的时候,dp就显得无能为力了。比如为4.3寸屏幕准备的UI,运行在5.0寸的屏幕上,很可能在右侧和下侧存在大量的空白;而5.0寸的UI运行到4.3寸的设备上,就无法全部显示。所以上述传统适配解决方法并不能解决所有适配问题,虽然dp能够让同一数值在不同分辨率展示出大致相同的尺寸大小,比如,公开号为CN103905643A的发明针对不同分辨率的手机屏幕需要使用不同分辨率的背景图片的问题,提出了一种单一背景图片手机适配方法,但是当设备的尺寸差异较大时,这种方法就无能为力了。
[0004]Android手机的屏幕适配一直以来都是开发者必须要面对的一个头疼的问题。从手机到平板,现在市面上各种移动设备屏幕尺寸和分辨率各式各样,Android开发者在完善应用的功能的同时还需要对参差不齐的设备和定制化系统完成适配,以提高用户体验,这需要分散相当大的时间和精力。所以提出一种快速准确可复用的屏幕适配方案势在必行。

【发明内容】

[0005]本发明针对上述现有的Android手机屏幕适配方案的不足,提出了一种根据屏幕尺寸和像素无关密度(Density Independent Pixels)之间的映射关系的基于百分比的屏幕适配方案。
[0006]本发明在屏幕尺寸和像素无关密度之间映射关系的基础上,提出了一种基于百分比的手机屏幕适配方法,可以便捷准确的完成屏幕适配工作,使开发者可以设计出更加丰富多彩并且有较好交互体验的用户界面。包括以下步骤:
[0007](I)根据项目需求确定需要适配的手机屏幕分辨率,包括市面上主流的分辨率以及特殊的分辨率(比如平板等)。
[0008](2)以UI给出的设计图的分辨率为基准,将需要适配的手机屏幕分辨率在横向和纵向上以这个基准进行等分,并计算出在这个基准下一个单元的高度和宽度所分别对应的像素值。
[0009](3)然后通过文件输入输出流的编程,实现自动生成适配文件的工具类,生成需要适配的分辨率所对应的values文件夹,以〃 values-需要适配的分辨率〃的格式对该文件夹进行命名,该文件夹下包含两个文件,分别是记录屏幕宽度像素值和屏幕高度像素值的XML文件,这些像素值来自步骤2中的计算结果。
[0010](4)在编写布局文件时,直接使用设计图上的PX数值,即通过引用适配文件中对应数值的方式设置控件的属性以及距离,系统会根据当前设备的分辨率到步骤3中生成的values文件夹中找到准确的像素值设置给控件,从而可以实现准确的适配。
[0011]如果需要适配一些特殊的分辨率,则通过命令行的方式将需要适配的特殊分辨率以参数的形式输入,生成需要适配分辨率的适配文件,然后根据Android系统的自适应特性,将这些适配文件夹加入Android项目的res目录下,最后执行步骤4,完成准确的适配。
[0012]有益效果:本发明根据目前Android项目开发过程中屏幕适配方案的不足,提出了一种根据屏幕尺寸和像素无关密度(Density Independent Pixels)之间的映射关系的基于百分比的屏幕适配方案。该方案具有以下优点:
[0013](I)根据Android系统自适应特性,计算得到不同分辨率下对应的像素值,所以与传统适配方案相比可以精确地适配不同手机分辨率。
[0014](2)该方案是以UI给出的设计图分辨率为基准,以开发者可以直接使用设计图中标注的px数值设置宽高属性,非常便捷,减轻了开发者在px和dp之间转换的压力。
[0015](3)并且分辨率是以基准进行等分,很容易实现类似于WEB网页布局中的百分比布局,而这正是Andro i d布局中所不具有的属性。
[0016](4)该方案生成的各个分辨率是适配文件是通用的,不同项目可以使用相同的适配文件,所以具有很好的复用性。
[0017](5)若需要添加新的适配分辨率只需要通过命令行的方式,就可以快速生成对应的分辨率的适配文件,具有很好的扩展性。
【附图说明】
[0018]图1是反映目前Android设备屏幕“碎片化”问题的示意图。
[0019]图2是本发明适配方案的流程图。
[0020]图3是本发明一个实施例的适配流程图。
【具体实施方式】
[0021]现结合附图对本发明的具体实施作进一步的说明。
[0022]本发明在屏幕尺寸和像素无关密度之间映射关系的基础上,提出了一种基于百分比的手机屏幕适配方法,可以便捷准确的完成屏幕适配工作,使开发者可以设计出更加丰富多彩并且有较好交互体验的用户界面。如图2所示,包括以下步骤:
[0023](I)根据项目需求确定需要适配的手机屏幕分辨率,包括市面上主流的分辨率以及特殊的分辨率(比如平板等)。
[0024](2)以UI给出的设计图的分辨率为基准,将需要适配的手机屏幕分辨率在横向和纵向上以这个基准进行等分,并计算出在这个基准下一个单元的高度和宽度所分别对应的像素值。
[0025](3)然后通过文件输入输出流的编程,实现自动生成适配文件的工具类,生成需要适配的分辨率所对应的values文件夹,以〃 values-需要适配的分辨率〃的格式对该文件夹进行命名,该文件夹下包含两个文件,分别是记录屏幕宽度像素值和屏幕高度像素值的XML文件,这些像素值来自步骤2中的计算结果。
[0026](4)在编写布局文件时,直接使用设计图上的px数值,即通过引用适配文件中对应数值的方式设置控件的属性以及距离,系统会根据当前设备的分辨率到步骤3中生成的values文件夹中找到准确的像素值设置给控件,从而可以实现准确的适配。
[0027]如果需要适配一些特殊的分辨率,则通过命令行的方式将需要适配的特殊分辨率以参数的形式输入,生成需要适配分辨率的适配文件,然后根据Android系统的自适应特性,将这些适配文件夹加入Android项目的res目录下,最后执行步骤4,完成准确的适配。
[0028]本发明还提供了一个实施例,其适配案实施的步骤流程图如图3所示。在采用该方案进行Android设备的屏幕适配时,首先需要根据项目需求确定需要适配的分辨率,包括市场上主流的手机屏幕分辨率以及需要适配的一些特殊的分辨率。然后以UI设计的效果图的分辨率选为基准分辨率。一般UI在设计效果图时其分辨率固定,如设计图是按照480*320的分辨率设计的则选取480*320的分辨率为基准;编写JAVA工具类实现适配文件的自动生成。自动生成的文件包含主流分辨率,若需要适配其它分辨率可以通过命令行的形式实现;最后再将生成的适配文件加入到项目里,布局时引用即可完成适配工作。
[0029]现对以上步骤做详细说明:
[0030]步骤1:在适配时,需要确定需要适配的分辨率。除了适配市面上比较主流的分辨率以外,还需根据项目需要适配一些比较特殊的分辨率,例如一些应用需要同时面向手机端用户和平板设备用户,则一些平板设备的分辨率也是需要考虑在内的。具体的市场上存在的设备分辨率可以通过如下的网址进行查询:http: //screensiz.es/phone ο
[0031]步骤2:需要确认一个基准分辨率,并以此来计算在不同分辨率下宽度每份xl以及高度每份yl所占的像素Px值。一般在一个项目开发过程中UI会提供每个界面的设计效果图,Android开发者需要根据这个效果图来编写界面的布局。这些界面效果图一般都是基于同一分辨率。例如UI给出的效果图是基于320*480分辨率的,那么可以此分辨率为基准,将任何分辨率的宽度分为320份,取值为χ1-χ320;将任何分辨率的高度分为480份,取值为yl-y480。然后计算出在任意分辨率下xl和yl所占的像素数。例如适配320*480分辨率的屏幕,由于该分辨率与基准相同,则对应的xl = Ipx,yl = lpx。若需要适配1080*1920的屏幕,则根据xl = 1080/基准=1080/320 = 3.37px,yl = 1920/基准= 1920/480 = 4px。以此类推分别计算出xl-x320以及yl-y480。另外在设计图中控件的宽高和距离都是通过px单位标注的,所以可以直接将px转化为x[l-320],y[l-480],这样在编写布局时可以直接使用设计图上的尺寸就可以完成全分辨率的适配了。不用再像以前一样要根据设计图的PX计算出一个适中的dp值再设置宽高,并且这种方法在不同屏幕尺寸和分辨率下显示效果也是有差异的,影响用户体验。
[0032]步骤3:通过上述介绍可知,我们需要为适配的每一种分辨率生成一个适配文件夹。文件夹的命名规则是valuse+适配分辨率。例如用于适配1920*1080分辨率的文件夹名称为values-1920xl080。该文件夹下包含两个XML文件,分别为lay_x.xml里面包含xl-x320所对应的px值以及lay_y.xml文件,里面包含yl-y480所对应的px值。由于需要适配的分辨率比较多,我们需要通过JAVA的文件输入输出流编写一个工具类来自动生成这些文件。该工具类需要生成主流分辨率的适配文件。并且考虑到可扩展性,main方法里需要接收args参数,这样用户在需要对一些特殊分辨率做适配时可以通过命令行的方式:java-jarXX.jar width height来生成对用分辨率的适配文件,以此来完成对特殊分辨率的适配。
[OO33 ] 步骤4:根据Andro i d系统的特性,如果一个Andro i d应用的资源文件夹后缀中存在和运行当前应用的手机相同或者近似的分辨率数值,那么系统会优先使用该资源文件夹下的资源文件。所以在生成适配文件之后需要将这些文件加入到项目的res目录下,方便系统根据不同情况进行引用。
[0034]步骤5:最后在编写布局文件时,通过使用Odimen/x数值的方式来设置控件的宽高以及距离。如果UI设计的界面基于320*480,并且标注一个控件的长度为160px,则只需要将该控件的长度width设置为0dimen/xl60即可。在320*480的机器上会使用对应文件下的xl60的值为160px为宽度的一半,而在1920*1080的机器上会使用values-1920xl080下的xl60的值540px也为屏幕宽度的一半,其他分辨率以此类推。综上只要简单的使用设计图标注的px数值即可完成所有分辨率设备的适配。
[0035]以上所述仅为本发明的一个具体实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于百分比的Android手机屏幕适配方法,其特征在于包括以下步骤: 1)根据项目需求确定需要适配的手机屏幕分辨率; 2)以UI给出的设计图的分辨率为基准,将需要适配的手机屏幕分辨率在横向和纵向上以这个基准进行等分,并计算出在这个基准下一个单元的高度和宽度所分别对应的像素值px ; 3)通过文件输入输出流的编程,实现自动生成适配文件的工具类,生成需要适配的分辨率所对应的values文件夹,以"values-需要适配的分辨率"的格式对该文件夹进行命名,该文件夹下包含两个文件,分别是记录屏幕宽度像素值和屏幕高度像素值的XML文件,这些像素值来自步骤2中的计算结果; 4)在编写布局文件时直接使用设计图上的px数值,即通过引用适配文件中对应数值的方式设置控件的属性和距离,系统会根据当前设备的分辨率到上述步骤3中生成的values文件夹中找到准确的像素值设置给控件,从而可以实现准确的适配。2.根据权利要求1所述的一种基于百分比的Android手机屏幕适配方法,其特征在于如果需要适配一些特殊的分辨率,则通过命令行的方式将需要适配的特殊分辨率以参数的形式输入,生成需要适配分辨率的适配文件,然后根据Android系统的自适应特性,将这些适配文件夹加入Android项目的res目录下,最后执行步骤4,完成准确的适配。
【文档编号】H04M1/725GK105827833SQ201610164574
【公开日】2016年8月3日
【申请日】2016年3月22日
【发明人】钱程, 蒋国平
【申请人】南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1