一种针对安卓系统SDK开发的屏幕适配方法及相关装置与流程

文档序号:24543302发布日期:2021-04-02 10:28阅读:125来源:国知局
一种针对安卓系统SDK开发的屏幕适配方法及相关装置与流程

本发明涉及屏幕适配领域,更具体地说,涉及一种针对安卓系统sdk开发的屏幕适配方法及相关装置。



背景技术:

由于android(安卓)系统的开放性,任何用户、开发者、硬件厂商、运营商都可以对android系统和硬件进行定制,近年来,随着基于android系统的设备增多,出现了大量不同屏幕尺寸和不同屏幕分辨率的电子设备。目前,虽然对于android系统的app开发已经有很成熟的屏幕适配方案,但是这些方案并不能完全解决在android系统下sdk(softwaredevelopmentkit,软件开发工具包)开发的屏幕适配问题;比如若sdk和集成该sdk的宿主app使用同一个屏幕适配方案,并且sdk的设计图和宿主app的设计图不一致时,容易导致宿主app出现严重的适配问题,不适合sdk开发。

另一种屏幕适配方案是针对不同屏幕像素密度(dpi)设计不同的用户界面布局xml文件。该方案虽然适配效果能达到预期,但是工作量较大,并且出现了不同屏幕尺寸或屏幕分辨率的电子设备后,不能第一时间适配,必须重新发版本。还有就是该方案会使得apk或者sdk的包体积较大。



技术实现要素:

有鉴于此,本发明提出一种针对安卓系统sdk开发的屏幕适配方法及相关装置,欲在达到预期的适配效果基础上,减少工作量、提高兼容性以及降低apk或者sdk的包的体积。

为了实现上述目的,现提出的方案如下:

第一方面,提供一种针对安卓系统sdk开发的屏幕适配方法,包括:

将电子设备的屏幕在第一方向的像素点数总和,除以与sdk对应的设计图在第一方向的长度,得到中间值,所述长度的单位为磅、毫米或英寸,所述第一方向为宽度方向或高度方向;

在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将所述中间值分别乘以第一控件的宽高值,得到第一控件在宽度和高度方向的显示像素值,所述第一控件为所述sdk用户界面的布局文件中单位与所述长度的单位相同的控件;

在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将第二控件的宽高值转换为所述长度的单位后分别乘以所述中间值,得到第二控件在宽度和高度方向的显示像素值,所述第二控件为所述sdk用户界面的布局文件中单位是预设的副单位且与所述长度的单位不相同的控件,所述副单位包括磅、毫米和英寸。

优选的,所述针对安卓系统sdk开发的屏幕适配方法,还包括:

将所述电子设备的每英寸像素点数除以160,得到密度参数;

在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将第三控件的宽高值分别乘以所述密度参数,得到第三控件在宽度和高度方向的显示像素值,所述第三控件为所述sdk用户界面的布局文件中单位是密度无关像素的控件。

优选的,在所述电子设备的安卓系统进行sdk用户界面渲染过程之前,还包括:

将安卓系统中的displaymetrics.xdpi的值替换为所述中间值。

第二方向,提供一种针对安卓系统sdk开发的屏幕适配装置,包括:

中间值计算单元,用于将电子设备的屏幕在第一方向的像素点数总和,除以与sdk对应的设计图在第一方向的长度,得到中间值,所述长度的单位为磅、毫米或英寸,所述第一方向为宽度方向或高度方向;

第一显示计算单元,用于在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将所述中间值分别乘以第一控件的宽高值,得到第一控件在宽度和高度方向的显示像素值,所述第一控件为所述sdk用户界面的布局文件中单位与所述长度的单位相同的控件;

第二显示计算单元,用于在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将第二控件的宽高值转换为所述长度的单位后分别乘以所述中间值,得到第二控件在宽度和高度方向的显示像素值,所述第二控件为所述sdk用户界面的布局文件中单位是预设的副单位且与所述长度的单位不相同的控件,所述副单位包括磅、毫米和英寸。

优选的,所述针对安卓系统sdk开发的屏幕适配装置,还包括:

密度参数计算单元,用于将所述电子设备的每英寸像素点数除以160,得到密度参数;

第三显示计算单元,用于在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将第三控件的宽高值分别乘以所述密度参数,得到第三控件在宽度和高度方向的显示像素值,所述第三控件为所述sdk用户界面的布局文件中单位是密度无关像素的控件。

优选的,所述装置还包括:

第一替换单元,用于在所述电子设备的安卓系统进行sdk用户界面渲染过程之前,将安卓系统中的displaymetrics.xdpi的值替换为所述中间值。

第三方面,提供一种可读存储介质,其上存储有程序,所述程序被处理器执行时,实现如第一方面中任意一种所述针对安卓系统sdk开发的屏幕适配方法的各个步骤。

第四方面,提供一种电子设备,包括存储器和处理器;

所述存储器,用于存储程序;

所述处理器,用于执行所述程序,实现如第一方面中任意一种所述针对安卓系统sdk开发的屏幕适配方法的各个步骤。

与现有技术相比,本发明的技术方案具有以下优点:

上述技术方案提供的一种针对安卓系统sdk开发的屏幕适配方法及相关装置,方法包括将电子设备的屏幕在宽度或高度方向的像素点数总和,除以与sdk对应的设计图在相应方向的长度得到中间值,设计图的长度的单位为磅、毫米或英寸;在电子设备的安卓系统进行sdk用户界面渲染过程中,利用中间值计算得到sdk用户界面的布局文件中单位为预设的副单位的控件在宽度和高度方向的显示像素值。本发明中由于sdk使用的是一些不常用的单位来进行适配,降低了与宿主app或者第三方控件发生冲突的概率,进而提高了sdk与宿主app的兼容性;以及不需要设计多种用户界面布局xml文件,进而减少工作量且降低apk或者sdk的包的体积。

进一步的,在电子设备的安卓系统进行sdk用户界面渲染过程之前,将安卓系统中的displaymetrics.xdpi的值替换为中间值,使得渲染流程与android原始渲染流程没有差别,实现了与项目的完全解耦,不需要与业务逻辑融合。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种针对安卓系统sdk开发的屏幕适配方法的流程图;

图2为本发明实施例提供的一种针对安卓系统sdk开发的屏幕适配装置的示意图;

图3为本发明实施例提供的一种电子设备的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了便于对本发明的理解,下面先对本发明涉及的相关术语进行解释:

像素(px):是ccd/cmos上光感元应件的数量,简而言之,像素就是电子设备的屏幕的最小构成单位。一般情况下用户界面的设计图也将px作为统一的计量单位。

分辨率:电子设备在宽度和高度方向的像素点数总和,一般描述成宽x高,例如1080x1920。

屏幕尺寸(in):是电子设备的屏幕对角线的物理尺寸,单位是英寸(inch)。

屏幕像素密度(dpi):是每英寸的像素点数,假如一个屏幕每英寸内有160个像素点,则其屏幕像素密度为160dpi。

密度无关像素(dp,density-independentpixel):还可以用dip表示,与电子设备屏幕上的实际物理像素点无关,可以保证在不同屏幕像素密度的设备上显示相同的效果,是android特有的长度单位。

磅(pt):是一个标准的长度单位,1pt=1/72英寸。

毫米(mm):是一个标准的长度单位,1mm=1/25.4英寸。

sp:是独立比例像素。

displaymetrics:是android源码提供的一个类,该类提供了一种关于显示的通用信息,如显示大小,分辨率等。

屏幕适配:屏幕适配问题的本质是使得布局、布局组件在不同尺寸、不同分辨率的电子设备上具有相同的显示效果。

本发明核心思路是通过将当前电子设备的屏幕在宽度或高度方向的像素点数总和,除以与sdk对应的设计图在相应方向的长度得到中间值,即根据电子设备的实际宽度或者高度来动态计算中间值,保证了设计图不变技能达到适配效果。且sdk用户界面的布局文件中控件使用磅、毫米和英寸等副单位,从而降低和宿主app的用户界面设计的单位冲突而造成的兼容性问题。

参见图1,为本实施例提供的一种针对安卓系统sdk开发的屏幕适配方法,该方法可以包括以下步骤:

s11:将电子设备的屏幕在第一方向的像素点数总和,除以与sdk对应的设计图在第一方向的长度,得到中间值。

本实施例中与sdk对应的设计图的长度的单位为磅、毫米或英寸,且第一方向为宽度方向或高度方向。具体的,第一方向为宽度方向时,中间值=电子设备的屏幕在宽度方向的像素点数总和/与sdk对应的设计图在宽度方向的长度;第一方向为高度方向时,中间值=电子设备的屏幕在高度方向的像素点数总和/与sdk对应的设计图在高度方向的长度。

s12:在电子设备的安卓系统进行sdk用户界面渲染过程中,将中间值分别乘以第一控件的宽高值,得到第一控件在宽度和高度方向的显示像素值。

第一控件为sdk用户界面的布局文件中单位与上述设计图的长度的单位相同的控件。控件指的是布局文件中具有长度单位的对象。sdk用户界面的布局文件具体为xml格式的文件。

s13:在电子设备的安卓系统进行sdk用户界面渲染过程中,将第二控件的宽高值转换为设计图的长度的单位后分别乘以中间值,得到第二控件在宽度和高度方向的显示像素值。

第二控件为sdk用户界面的布局文件中单位是预设的副单位且与长度的单位不相同的控件。副单位包括磅、毫米和英寸。示例性的,设计图的长度单位为英寸时,第一控件即为单位为英寸的控件,第二控件即为单位为磅和毫米的控件;第二控件为单位为磅时,转换为设计图的长度单位(即英寸),需要将第二空间的宽高值除以72;第二控件为单位为毫米时,转换为设计图的长度单位(即英寸),需要将第二空间的宽高值除以25.4。

安卓系统中能识别的长度单位除了常用的px、dp和sp,还能识别pt、in、mm这些副单位。在电子设备的安卓系统进行sdk用户界面渲染过程中,当sdk用户界面的布局文件使用pt、in、mm这些副单位,利用中间值计算各个控件在实际屏幕上显示的像素值,从而达到屏幕适配的效果。在一些具体实施例中,利用displaymetrics类来配合完成磅、英寸和毫米等长度单位转换为px。具体的,在电子设备的安卓系统进行sdk用户界面渲染过程之前,将安卓系统中的displaymetrics.xdpi的值替换为中间值;这样在渲染过程中直接利用displaymetrics.xdpi进行长度单位转换,使得渲染流程与android原始渲染流程没有差别,实现了与项目的完全解耦,不需要与业务逻辑融合。需要说明的是,有些品牌的电子设备中安卓系统是对原始安卓系统进行优化、开发后的操作系统,例如miui系统,对于这些安卓系统需要通过反射方式才能获取displaymetrics进而替换为中间值。

在电子设备的安卓系统进行sdk用户界面渲染过程中,若sdk用户界面的布局文件中控件的单位不是预设的副单位,且单位是密度无关像素,则将该控件的宽高值分别乘以密度参数,得到该控件在宽度和高度方向的显示像素值。电子设备的每英寸像素点数除以160,得到的是密度参数density,即density=dpi/160。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

参见图2,为本实施例提供的一种针对安卓系统sdk开发的屏幕适配装置,该装置包括:中间值计算单元21、第一显示计算单元22和第二显示计算单元23。

中间值计算单元21,用于将电子设备的屏幕在第一方向的像素点数总和,除以与sdk对应的设计图在第一方向的长度,得到中间值,所述长度的单位为磅、毫米或英寸,所述第一方向为宽度方向或高度方向。

第一显示计算单元22,用于在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将所述中间值分别乘以第一控件的宽高值,得到第一控件在宽度和高度方向的显示像素值,所述第一控件为所述sdk用户界面的布局文件中单位与所述长度的单位相同的控件。

第二显示计算单元23,用于在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将第二控件的宽高值转换为所述长度的单位后分别乘以所述中间值,得到第二控件在宽度和高度方向的显示像素值,所述第二控件为所述sdk用户界面的布局文件中单位是预设的副单位且与所述长度的单位不相同的控件,所述副单位包括磅、毫米和英寸。

在一些具体实施例中,针对安卓系统sdk开发的屏幕适配装置,还包括:密度参数计算单元和第三显示计算单元。

密度参数计算单元,用于将所述电子设备的每英寸像素点数除以160,得到密度参数。

第三显示计算单元,用于在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将第三控件的宽高值分别乘以所述密度参数,得到第三控件在宽度和高度方向的显示像素值,所述第三控件为所述sdk用户界面的布局文件中单位是密度无关像素的控件。

针对安卓系统sdk开发的屏幕适配装置还包括:第一替换单元,用于在所述电子设备的安卓系统进行sdk用户界面渲染过程之前,将安卓系统中的displaymetrics.xdpi的值替换为所述中间值。

参见图3,为本实施例提供的一种电子设备。电子设备的硬件结构可以包括:至少一个处理器31,至少一个通信接口32,至少一个存储器33和至少一个通信总线34;且处理器31、通信接口32、存储器33通过通信总线34完成相互间的通信.

处理器31在一些实施例中可以是一个cpu(centralprocessingunit,中央处理器),或者是asic(applicationspecificintegratedcircuit,特定集成电路),或者是被配置成实施本发明实施例的一个或多个集成电路等。

通信接口32可以包括标准的有线接口、无线接口。通常用于在电子设备与其他电子设备或系统之间建立通信连接。

存储器33包括至少一种类型的可读存储介质。可读存储介质可以为如闪存、硬盘、多媒体卡、卡型存储器等nvm(non-volatilememory,非易失性存储器)。可读存储介质还可以是高速ram(randomaccessmemory,随机存取存储器)存储器。可读存储介质在一些实施例中可以是电子设备的内部存储单元。在另一些实施例中,可读存储介质还可以是电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘、smc(smartmediacard,智能存储卡)、sd(securedigital,安全数字)卡,闪存卡(flashcard)等。

其中,存储器33存储有计算机程序,处理器31可调用存储器33存储的计算机程序,所述计算机程序用于:

将电子设备的屏幕在第一方向的像素点数总和,除以与sdk对应的设计图在第一方向的长度,得到中间值,所述长度的单位为磅、毫米或英寸,所述第一方向为宽度方向或高度方向;

在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将所述中间值分别乘以第一控件的宽高值,得到第一控件在宽度和高度方向的显示像素值,所述第一控件为所述sdk用户界面的布局文件中单位与所述长度的单位相同的控件;

在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将第二控件的宽高值转换为所述长度的单位后分别乘以所述中间值,得到第二控件在宽度和高度方向的显示像素值,所述第二控件为所述sdk用户界面的布局文件中单位是预设的副单位且与所述长度的单位不相同的控件,所述副单位包括磅、毫米和英寸。

所述程序的细化功能和扩展功能可参照上文描述。

图3仅示出了具有组件31~34的电子设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本发明实施例还提供一种可读存储介质,该可读存储介质可存储有适于处理器执行的程序,所述程序用于:

将电子设备的屏幕在第一方向的像素点数总和,除以与sdk对应的设计图在第一方向的长度,得到中间值,所述长度的单位为磅、毫米或英寸,所述第一方向为宽度方向或高度方向;

在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将所述中间值分别乘以第一控件的宽高值,得到第一控件在宽度和高度方向的显示像素值,所述第一控件为所述sdk用户界面的布局文件中单位与所述长度的单位相同的控件;

在所述电子设备的安卓系统进行sdk用户界面渲染过程中,将第二控件的宽高值转换为所述长度的单位后分别乘以所述中间值,得到第二控件在宽度和高度方向的显示像素值,所述第二控件为所述sdk用户界面的布局文件中单位是预设的副单位且与所述长度的单位不相同的控件,所述副单位包括磅、毫米和英寸。

所述程序的细化功能和扩展功能可参照上文描述。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可,且本说明书中各实施例中记载的特征可以相互替换或者组合。

对本发明所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1