具体实施方式
图1为本发明布局显示方法实施例一的流程图,如图1所示,本实施例提供的所述方法适用于各种用户终端,尤其适用于基于android系统的手机终端,该方法可以由一个布局显示装置来执行,该装置可以集成设置在用户终端中,该方法具体包括如下步骤:
步骤101、获取目标用户终端的屏幕尺寸和待显示布局中根布局的尺寸,所述待显示布局为多级嵌套结构,所述多级嵌套结构中的最外层布局为所述根布局;
步骤102、根据所述目标用户终端的屏幕尺寸和所述根布局的尺寸,确定所述待显示布局在所述目标用户终端的屏幕上的显示比例;
步骤103、根据所述显示比例和所述待显示布局对应的布局文件中描述的所述待显示布局的属性信息显示所述待显示布局。
一般Android系统的用户终端会有相对布局(Relative Layout)、表格布局(TableLayout)、线性布局(Linear Layout)绝对布局(Absolute Layout)和帧布局(FrameLayout)几种。每种布局都有其自身的属性,以及显示其中包含的各个控件的方法。本实施例提供的所述方法的实施前提是,用户终端中运行的各个应用程序,已经定义了该应用程序中包含的诸如文字、图片等数据内容的显示形式,即布局,而且该布局已经描述在了相应的布局文件中。
而且,一般来说,一个应用程序的数据内容一般是通过多个布局嵌套在一起来呈现的,从而能够获得更加丰富、生动、形象的显示效果。也就是说,布局是可以嵌套使用的,本实施例中所述的待显示布局既可以是单一的上述几种布局中的一种,也可以是多种的嵌套,比如表格布局中的某个表格中嵌套了线性布局等等,从而,在待显示布局为多个布局嵌套使用的时候,该待显示布局便构成了一种多级嵌套的结构,该结构的最外层或者说是最上层的布局称为根布局,该根布局嵌套的下一层布局成为该根布局的子布局,依次类推,该多级结构的最内层或者成为最低层布局称为叶子布局,该叶子布局中包含了各个控件,比如文本控件、图像控件等。
每个待显示布局对应的布局文件中比如描述了根布局的大小、当其显示在终端屏幕上的时候应该距离该屏幕边缘的各向边距等属性信息,其中,各向边距是指上边距、下边距、左边距和右边距。还描述了比如子布局的大小、位置、相对于其所属的上一级布局的各向间距等属性信息,还描述了各个控件的属性信息,比如大小、位置,颜色、类型、字体等信息。
本实施例中,当待显示布局需要在某个目标用户终端的屏幕上进行显示的时候,首先,需要获得该目标用户终端的屏幕尺寸和该待显示布局的根布局的尺寸。实际中,该待显示布局的根布局的尺寸可以通过读取布局文件中所描述的该待显示布局的属性信息获得,该目标用户终端的屏幕尺寸可以记录在该终端的某个终端属性文件中,通过读取该属性文件来获得该屏幕尺寸。
进而,根据目标用户终端的屏幕尺寸和根布局的尺寸,确定待显示布局在所述目标用户终端的屏幕上的显示比例,并根据该显示比例和待显示布局对应的布局文件中描述的该待显示布局的属性信息显示待显示布局。具体地,为了保证待显示布局在不同屏幕尺寸的用户终端中进行显示的效果具有较佳用户体验,需要使得该待显示布局在比如小屏幕尺寸的用户终端中的显示形式和在大屏幕尺寸的用户终端上的显示形式比较相似,不能因为屏幕尺寸的变化导致显示效果出现太大差异。因此,本实施例中以待显示布局中的根布局的尺寸为依据,结合获得的目标用户终端的屏幕尺寸,得到该根布局尺寸相对于屏幕尺寸的相对显示比例,从而以该显示比例和待显示布局的布局文件中描述的该待显示布局的属性信息来最终显示待显示布局。
本实施例中,由于待显示布局中的根布局相当于限制了其中包含的各个子布局以及控件的最大显示范围,而且布局文件中描述的属性信息中也描述了各子布局以及各控件相对于根布局的属性信息,比如相对大小、位置等。因此,仅可以以该根布局的尺寸为依据,来确定待显示布局在目标用户终端屏幕上的显示比例即可。而且,该显示比例即限制了根布局乃至待显示布局在目标用户终端屏幕上的显示范围,即该跟布局也是待显示布局应该占目标用户终端屏幕的面积大小,而该根布局应该在目标用户终端屏幕上什么位置进行显示,即距离屏幕边缘的各向边距,可以通过布局文件中描述的该根布局的属性信息确定。当该根布局在目标用户终端屏幕上的显示位置以及显示范围确定后,其他子布局以及控件的显示,在一种理想的情况下,即全屏显示的情况下,仅需根据自适应显示的根布局的属性信息与布局文件中描述的其他子布局和控件的属性信息的相对属性值来确定即可,无需再按照上述显示比例调整子布局和控件的显示形式。
本实施例中,通过获取目标用户终端的屏幕尺寸和待显示布局中根布局的尺寸,能够根据目标用户终端的屏幕尺寸和根布局的尺寸,确定待显示布局在目标用户终端的屏幕上的显示比例,进而根据该显示比例和待显示布局对应的布局文件中描述的待显示布局的属性信息显示该待显示布局。当某布局需要在不同的用户终端屏幕上进行显示的时候,以该布局中根布局的尺寸相对于不同终端屏幕尺寸的相对比例大小,来确定该布局在不同用户终端屏幕上的显示形式,再结合该布局的布局文件中描述的属性信息来在不同用户终端屏幕上显示该布局,无需为不同用户终端预先适配不同布局,能够高效、便捷地实现布局自适应不同屏幕尺寸的用户终端。
图2为本发明布局显示方法实施例二的流程图,如图2所示,该方法包括:
步骤201、获取目标用户终端的屏幕尺寸和待显示布局中根布局的尺寸,所述待显示布局为多级嵌套结构,所述多级嵌套结构中的最外层布局为所述根布局,所述目标用户终端的屏幕尺寸包括所述屏幕的屏幕宽度和屏幕高度,所述根布局的尺寸包括所述根布局的布局宽度和布局高度。
步骤202、以所述根布局的布局宽度除以所述屏幕的屏幕宽度,得到所述待显示布局在所述目标用户终端的屏幕上的宽度百分比,以所述根布局的布局高度除以所述屏幕的屏幕高度,得到所述待显示布局在所述目标用户终端的屏幕上的高度百分比。
步骤203、确定所述宽度百分比和所述高度百分比中的最小百分比为所述待显示布局在所述目标用户终端的屏幕上的显示比例。
本实施例中,为了保证待显示布局最终在目标用户终端屏幕上的显示效果,选择上述宽度百分比和高度百分比中的最小的比值作为待显示布局在所述目标用户终端的屏幕上的显示比例。
步骤204、若所述布局文件中描述所述待显示布局为全屏显示,则执行步骤205、206和209,否则,若所述布局文件中描述所述待显示布局为非全屏显示,则执行步骤205和207-209。
步骤205、根据所述显示比例和根据所述布局文件中描述的所述根布局的属性信息,确定所述根布局在所述目标用户终端的屏幕上的显示范围和显示位置,所述根布局的属性信息包括所述根布局相距用户终端的屏幕边缘的各向边距。
具体地,根据显示比例确定根布局在目标用户终端的屏幕上的显示范围,即所占的面积,根据布局文件中描述的根布局的属性信息,确定根布局在目标用户终端的屏幕上的显示位置,即根布局相距用户终端的屏幕边缘的各向边距。
步骤206、根据所述布局文件中描述的所述子布局的属性信息和所述控件的属性信息,确定所述子布局和所述控件相对于所述根布局的相对属性值保持不变。
具体地,子布局的属性信息和控件的属性信息中比如描述了子布局或者控件在待显示布局中的位置、大小等信息,而根布局的属性信息中也描述了根布局的大小、位置,边距等信息,从而,可以根据这些属性信息确定出子布局相对于根布局的相对属性值,以及控件相对于根布局的相对属性值,该相对属性值尤其是指子布局和控件相对根布局的相对距离值,比如某子布局相对根布局的各向间距,某控件相对于该根布局的各向间距。在全屏显示的情况下,这些相对属性值要保持不变,即要保证各子布局和控件与根布局的各向间距不变,依旧是根据属性信息确定的各向间距的值,不随着显示比例而变,相当于在大屏幕上,放大了各子布局和控件的面积,但是保持与根布局的间距不变。
步骤207、根据所述显示比例和所述布局文件中描述的所述子布局的属性信息,确定所述子布局在所述目标用户终端的屏幕上的显示范围和显示位置,所述子布局的属性信息包括所述子布局相对所述根布局的各向间距。
步骤208、根据所述显示比例和所述布局文件中描述的所述控件的属性信息,确定所述控件在所述目标用户终端的屏幕上的显示范围和显示位置,所述控件的属性信息包括所述控件相对所述根布局的各向间距或相对所述子布局的各向间距。
步骤209、显示所述根布局、所述子布局和所述控件。
在非全屏显示的情况下,各子布局和控件与根布局的相对属性值发生了改变,该改变时依据上述显示比例来改变的,即上述的各子布局相对于根布局的各向间距和各控件相对于根布局或其所属的子布局的各向间距要根据显示比例适应性改变。
值得说明的是,上述的宽度、高度、各向边距和各向间距均以绝对像素为度量单位,即单位都是px。
本实施例中,通过获取目标用户终端的屏幕尺寸和待显示布局中根布局的尺寸,能够根据目标用户终端的屏幕尺寸和根布局的尺寸,确定待显示布局在目标用户终端的屏幕上的显示比例,进而根据该显示比例和待显示布局对应的布局文件中描述的待显示布局的属性信息显示该待显示布局。当某布局需要在不同的用户终端屏幕上进行显示的时候,以该布局中根布局的尺寸相对于不同终端屏幕尺寸的相对比例大小,来确定该布局在不同用户终端屏幕上的显示形式,再结合该布局的布局文件中描述的属性信息来在不同用户终端屏幕上显示该布局,无需为不同用户终端预先适配不同布局,能够高效、便捷地实现布局自适应不同屏幕尺寸的用户终端。
图3为本发明布局显示装置实施例一的结构示意图,如图3所示,该装置包括:
获取模块11,用于获取目标用户终端的屏幕尺寸和待显示布局中根布局的尺寸,所述待显示布局为多级嵌套结构,所述多级嵌套结构中的最外层布局为所述根布局;
确定模块12,用于根据所述目标用户终端的屏幕尺寸和所述根布局的尺寸,确定所述待显示布局在所述目标用户终端的屏幕上的显示比例;
显示模块13,用于根据所述显示比例和所述待显示布局对应的布局文件中描述的所述待显示布局的属性信息显示所述待显示布局。
本实施例的装置可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图4为本发明布局显示装置实施例二的结构示意图,如图4所示,本实施例的装置在图3所示实施例的基础上,所述目标用户终端的屏幕尺寸包括所述屏幕的屏幕宽度和屏幕高度,所述根布局的尺寸包括所述根布局的布局宽度和布局高度;
所述确定模块12,包括:
第一计算单元121,用于以所述根布局的布局宽度除以所述屏幕的屏幕宽度,得到所述待显示布局在所述目标用户终端的屏幕上的宽度百分比;
第二计算单元122,用于以所述根布局的布局高度除以所述屏幕的屏幕高度,得到所述待显示布局在所述目标用户终端的屏幕上的高度百分比;
第一确定单元123,用于确定所述宽度百分比和所述高度百分比中的最小百分比为所述待显示布局在所述目标用户终端的屏幕上的显示比例。
进一步地,所述待显示布局中包括至少一个子布局,所述至少一个子布局中的最低层布局为叶子布局,所述叶子布局中包括至少一个控件,所述至少一个控件用于显示待显示的数据内容;
若所述布局文件中描述所述待显示布局为全屏显示,则所述显示模块13,包括:
第二确定单元131,用于根据所述显示比例和根据所述布局文件中描述的所述根布局的属性信息,确定所述根布局在所述目标用户终端的屏幕上的显示范围和显示位置,所述根布局的属性信息包括所述根布局相距用户终端的屏幕边缘的各向边距;
所述第二确定单元131,还用于根据所述布局文件中描述的所述子布局的属性信息和所述控件的属性信息,确定所述子布局和所述控件相对于所述根布局的相对属性值保持不变;
显示单元132,用于显示所述根布局、所述子布局和所述控件。
进一步地,所述待显示布局中包括至少一个子布局,所述至少一个子布局中的最低层布局为叶子布局,所述叶子布局中包括至少一个控件,所述至少一个控件用于显示待显示的数据内容;
若所述布局文件中描述所述待显示布局为非全屏显示,则所述第二确定单元131,还用于:
根据所述显示比例和根据所述布局文件中描述的所述根布局的属性信息,确定所述根布局在所述目标用户终端的屏幕上的显示范围和显示位置,所述根布局的属性信息包括所述根布局相对用户终端的屏幕边缘的各向边距;
根据所述显示比例和所述布局文件中描述的所述子布局的属性信息,确定所述子布局在所述目标用户终端的屏幕上的显示范围和显示位置,所述子布局的属性信息包括所述子布局相对所述根布局的各向间距;
根据所述显示比例和所述布局文件中描述的所述控件的属性信息,确定所述控件在所述目标用户终端的屏幕上的显示范围和显示位置,所述控件的属性信息包括所述控件相对所述根布局的各向间距或相对所述子布局的各向间距;
所述显示单元132,还用于显示所述根布局、所述子布局和所述控件。
其中,所述宽度、所述高度、所述各向边距和所述各向间距均以绝对像素为度量单位。
本实施例的装置可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。