显示视图控件的方法及装置制造方法及图纸

技术编号:35975454 阅读:8 留言:0更新日期:2022-12-17 22:43
本申请提供一种显示视图控件的方法及装置,涉及电子设备领域。该方法可以应用于终端设备,终端设备包括第一引擎、第一组件、以及第二引擎。该方法包括:第一引擎确定第一应用对应的视图控件的插件属性、以及视图控件对应的前端DOM节点。第一组件根据前端DOM节点确定视图控件对应的布局信息;根据插件属性创建视图控件对应的第三方插件和纹理数据,并将纹理数据注册到GPU中。第一组件向第二引擎发送布局信息。第一组件根据第三方插件显示纹理数据。第二引擎从GPU获取纹理数据,并根据布局信息对纹理数据进行渲染。终端设备通过该方法可以显示各种不同的视图控件,对不同的视图控件具有通用性。有通用性。有通用性。

【技术实现步骤摘要】
显示视图控件的方法及装置


[0001]本申请实施例涉及电子设备领域,尤其涉及一种显示视图控件的方法及装置。

技术介绍

[0002]操作系统(Operation System,OS)支持显示各种类型的视图控件,有利于OS生态的构建。例如,对操作系统A而言,当操作系统A支持显示安卓(android)的视图(view)控件(以下简称安卓view控件)时,安装操作系统A的终端设备可以支持显示基于安卓view控件开发的应用页面,有利于操作系统A构建OS生态。其中,安卓view控件可以是网页视图(webview)控件、地图视图(mapview)控件、相机视图(cameraview)控件等。
[0003]目前,实现操作系统支持显示视图控件的方案主要为:针对每一种视图控件,操作系统的开发框架可以提供一个与该视图控件对应的定制化控件,操作系统可以通过与该视图控件对应的定制化控件显示该视图控件。其中,不同的视图控件对应不同的定制化控件。
[0004]但是,上述方案中,视图控件的接口众多,导致在操作系统的开发框架中实现与视图控件对应的定制化控件是非常复杂的,开发工作量极大。另外,一旦操作系统有支持新的视图控件的需求,则操作系统的开发框架需要重新定制开发,这将严重影响开发效率,不利于OS生态的发展。

技术实现思路

[0005]本申请实施例提供一种显示视图控件的方法及装置,可以使得终端设备能够显示各种视图控件,对不同的视图控件具有通用性。
[0006]第一方面,本申请实施例提供一种显示视图控件的方法,该方法可以应用于终端设备。终端设备包括第一引擎、第一组件、以及第二引擎。
[0007]该方法包括:第一引擎确定第一应用对应的视图控件的插件属性、以及视图控件对应的前端文档对象模型节点。第一组件根据视图控件对应的前端文档对象模型节点,确定视图控件对应的布局信息。第一组件根据视图控件的插件属性,创建视图控件对应的第三方插件和纹理数据,并将视图控件对应的纹理数据注册到GPU中。第一组件向第二引擎发送视图控件对应的布局信息。第一组件根据视图控件对应的第三方插件,显示视图控件对应的纹理数据。第二引擎从GPU获取视图控件对应的纹理数据,并根据视图控件对应的布局信息对视图控件对应的纹理数据进行渲染。
[0008]其中,第一应用可以为开发人员基于视图控件开发的应用。
[0009]可选地,视图控件可以包括网页视图控件、地图视图控件、相机视图控件、视频视图控件、文本视图控件、直播视图控件、广告视图控件、投屏视图控件等中的任意一种。
[0010]一些实施例中,视图控件可以是安卓视图控件、或者鸿蒙视图控件、又或者其他java语言开发的视图控件,在此不作限制。
[0011]第一应用的第一打包文件包括第一应用对应的视图控件的插件属性,视图控件的插件属性是预配置的。例如,第一应用的开发人员可以在第一应用的第一打包文件中设置
视图控件的插件属性为网页视图控件或地图视图控件,对视图控件的插件属性进行预配置。
[0012]该方法中,第一应用的开发人员只需要在第一应用的代码中设置视图控件的插件(plugin)属性,即可使得终端设备可以实现支持显示不同的视图控件。终端设备按照该方法来显示不同视图控件时,不需要考虑不同视图控件的适配对接问题,整个实现流程可以由终端设备的操作系统的开发框架自动完成,第一应用的开发人员可以不感知,大大降低了适配终端设备的操作系统的第一应用的开发难度,有利于终端设备的操作系统生态的构建。
[0013]另外,终端设备的操作系统的开发框架可以实现一次开发,可部署各种复杂的视图控件的目标,大大降低开发成本。第一应用的开发人员在第一应用的代码中设置视图控件的插件(plugin)属性,操作系统的开发框架自动根据开发人员设置的视图控件的插件(plugin)属性匹配对应的第三方插件,还可以避免开发人员针对不同的视图控件进行二次开发,能够有效提高开发效率。
[0014]进一步地,该方法通过将视图控件对应的纹理数据直接注册到GPU中,还可以避免在中央处理器(central processing unit,CPU)中创建纹理缓存。第二引擎可以直接从GPU中获取视图控件对应的纹理数据进行渲染,不需要CPU和GPU之间进行纹理数据的传递,可以节省CPU在不同纹理缓存之间的拷贝时间以及纹理上传到GPU的时间,大大提高渲染性能。同时,还节省了纹理数据占用的内存和GPU显存。
[0015]可选地,所述第一组件将视图控件对应的纹理数据注册到GPU中的步骤,可以包括:
[0016]第一组件生成视图控件对应的纹理数据的纹理标识,并根据视图控件对应的纹理数据的纹理标识,将视图控件对应的纹理数据注册到GPU中。
[0017]该方法还包括:第一组件向第二引擎发送视图控件对应的纹理数据的纹理标识。
[0018]所述第二引擎从GPU获取视图控件对应的纹理数据的步骤,可以包括:
[0019]第二引擎根据视图控件对应的纹理数据的纹理标识,从GPU获取视图控件对应的纹理数据。
[0020]其中,纹理数据的纹理标识可以是纹理ID,纹理ID与纹理数据之间为一一绑定的关系。第二引擎从GPU获取纹理数据时,可以基于纹理ID从GPU中索引纹理ID对应的纹理数据。
[0021]可选地,所述第一组件根据视图控件对应的第三方插件,显示视图控件对应的纹理数据的步骤,可以包括:
[0022]第一组件获取画布纹理对象。第一组件在视图控件对应的第三方插件中创建虚显控制器,并根据画布纹理对象中的画布、以及视图控件对应的布局信息创建对应的虚显控件。第一组件通过虚显控制器将视图控件对应的第三方插件与虚显控件进行合成,并创建对应的显示控件。第一组件通过显示控件将视图控件对应的第三方插件添加到显示控件中的视图对应的容器上,并将视图控件对应的纹理数据送至画布纹理对象中合成到画布上。
[0023]可选地,所述第二引擎从GPU获取视图控件对应的纹理数据,并根据视图控件对应的布局信息对视图控件对应的纹理数据进行渲染,包括:
[0024]第二引擎从画布纹理对象中获取画布,并从GPU获取视图控件对应的纹理数据。第
二引擎根据视图控件对应的布局信息对视图控件对应的纹理数据进行渲染。
[0025]可选地,所述第一引擎确定第一应用对应的视图控件的插件属性、以及视图控件对应的前端文档对象模型节点,包括:
[0026]第一引擎对第一应用中的第一打包文件进行解析,得到第一应用对应的视图控件的插件属性、以及视图控件对应的第一对象及第一对象的样式和属性;第一引擎根据视图控件对应的第一对象及第一对象的样式和属性,生成视图控件对应的前端文档对象模型节点。
[0027]示例性地,第一应用可以为JS应用,第一打包文件可以为JS包。第一对象可以是JS对象。
[0028]可选地,所述第一组件根据视图控件对应的前端文档对象模型节点,确定视图控件对应的布局信息,包括:
[0029]第本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种显示视图控件的方法,其特征在于,所述方法应用于终端设备,所述终端设备包括:第一引擎、第一组件、以及第二引擎;所述方法包括:所述第一引擎确定第一应用对应的视图控件的插件属性、以及所述视图控件对应的前端文档对象模型节点;所述第一组件根据所述视图控件对应的前端文档对象模型节点,确定所述视图控件对应的布局信息;所述第一组件根据所述视图控件的插件属性,创建所述视图控件对应的第三方插件和纹理数据,并将所述视图控件对应的纹理数据注册到图形处理器GPU中;所述第一组件向所述第二引擎发送所述视图控件对应的布局信息;所述第一组件根据所述视图控件对应的第三方插件,显示所述视图控件对应的纹理数据;所述第二引擎从GPU获取所述视图控件对应的纹理数据,并根据所述视图控件对应的布局信息对所述视图控件对应的纹理数据进行渲染。2.根据权利要求1所述的方法,其特征在于,所述第一组件将所述视图控件对应的纹理数据注册到GPU中,包括:所述第一组件生成所述视图控件对应的纹理数据的纹理标识,并根据所述视图控件对应的纹理数据的纹理标识,将所述视图控件对应的纹理数据注册到GPU中;所述方法还包括:所述第一组件向所述第二引擎发送所述视图控件对应的纹理数据的纹理标识;所述第二引擎从GPU获取所述视图控件对应的纹理数据,包括:所述第二引擎根据所述视图控件对应的纹理数据的纹理标识,从GPU获取所述视图控件对应的纹理数据。3.根据权利要求1或2所述的方法,其特征在于,所述第一组件根据所述视图控件对应的第三方插件,显示所述视图控件对应的纹理数据,包括:所述第一组件获取画布纹理对象;所述第一组件在所述视图控件对应的第三方插件中创建虚显控制器,并根据所述画布纹理对象中的画布、以及所述视图控件对应的布局信息创建对应的虚显控件;所述第一组件通过所述虚显控制器将所述视图控件对应的第三方插件与所述虚显控件进行合成,并创建对应的显示控件;所述第一组件通过所述显示控件将所述视图控件对应的第三方插件添加到所述显示控件中的视图对应的容器上,并将所述视图控件对应的纹理数据送至所述画布纹理对象中合成到画布上。4.根据权利要求3所述的方法,其特征在于,所述第二引擎从GPU获取所述视图控件对应的纹理数据,并根据所述视图控件对应的布局信息对所述视图控件对应的纹理数据进行渲染,包括:所述第二引擎从所述画布纹理对象中获取画布,并从GPU获取所述视图控件对应的纹理数据;所述第二引擎根据所述视图控件对应的布局信息对所述视图控件对应的纹理数据进行渲染。
5.根据权利要求1

4任一项所述的方法,其特征在于,所述第一引擎确定第一应用对应的视图控件的插件属性、以及所述视图控件对应的前端文档对象模型节点,包括:所述第一引擎对第一应用中的第一打包文件进行解析,得到所述第一应用对应的视图控件的插件属性、以及所述视图控件对应的...

【专利技术属性】
技术研发人员:陈本智李世浩池浩兰守忍
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1