安卓兼容环境中多窗口模式下Toast的优化显示方法与流程

文档序号:29309150发布日期:2022-03-19 19:33阅读:220来源:国知局
安卓兼容环境中多窗口模式下Toast的优化显示方法与流程
安卓兼容环境中多窗口模式下toast的优化显示方法
技术领域
1.本发明属于在桌面操作系统上安装移动应用的开发技术领域,具体涉及安卓兼容环境中多窗口模式下toast的优化显示方法。


背景技术:

2.linux操作系统安卓兼容环境(下文简称安卓兼容环境)是一种在linux操作系统上运行安卓应用(app)的技术,对丰富linux操作系统应用生态有着重要的意义。xdroid就是典型的linux操作系统安卓兼容环境,通过xdroid与xdroidui的配合实现了安卓应用与linux操作系统的兼容。为了便于用户同时操作多个应用程序,安卓系统从7.0版开始引入了多窗口模式,即允许用户在同一屏幕中同时打开多个应用程序。toast是安卓系统提供的轻量级信息提醒机制,用于向用户提示即时消息,它显示在应用程序界面的最上层,显示一段时间后自动消失且不会打断当前操作,也不获得焦点,无法被点击。现有安卓系统中toast的布局设计非常简单,通常是在垂直布局的线性布局(linearlayout)里插入视图(view),例如文本视图(textview)、图片视图(imageview)以改变toast的内容。
3.然而,当在安卓兼容环境中使用安卓系统的多窗口模式时,采用现有的toast显示方式虽然能够解决toast显示位置出错、toast的显示无法与安卓应用相对应等问题,但是,实现方式过于复杂,且会一定程度上增加linux系统的系统开销,toast显示延时增大,同步性较差,进而降低用户体验。


技术实现要素:

4.有鉴于此,本发明提供了安卓兼容环境中多窗口模式下toast的优化显示方法,能够实现安卓兼容环境中安卓系统多窗口模式下toast的快速高效显示。
5.本发明提供的一种安卓兼容环境中多窗口模式下toast的优化显示方法,包括以下步骤:步骤1、当安卓兼容环境监测到由安卓系统生成的toast时,标记toast对应的图层形成toast图层;步骤2、在图层渲染过程中,安卓兼容环境将具有相同标记的toast图层渲染到安卓缓冲区中形成缓存数据;当toast图层发生内容更新时,安卓兼容环境将更新后的具有相同标记的toast图层渲染到安卓缓冲区中形成缓存数据;步骤3、将步骤2生成的缓存数据发送至运行在linux系统上的安卓应用显示程序,所述安卓应用显示程序创建linux窗口,将所述缓存数据转换后绘制在所述linux窗口中。
6.进一步地,所述优化显示方法还包括将所述步骤2生成的缓存数据编码为toast图像,所述步骤3将toast图像发送至运行在linux系统上的安卓应用显示程序,所述安卓应用显示程序创建linux窗口,将toast图像绘制在所述linux窗口中。
7.进一步地,所述步骤3中的将所述缓存数据转换后绘制在linux窗口中的方式为:修改所述缓存数据的头部数据结构使所述缓存数据适配linux缓冲区,再绘制在所述linux
窗口中。
8.进一步地,所述步骤3中的将所述缓存数据转换后绘制在linux窗口中的方式为:在linux系统中建立安卓缓冲区到linux缓冲区的转换方法,采用所述转换方法将所述缓存数据绘制在创建的linux窗口内。
9.进一步地,所述步骤2中的当toast图层发生内容更新时为,所述toast图层的顶点或图元发生变化时。
10.本发明提供的一种安卓兼容环境中多窗口模式下toast的优化显示系统,包括toast显示监测模块、安卓图层渲染模块、数据传输模块、数据转换模块及安卓应用显示模块;所述toast显示监测模块运行在安卓兼容环境中,用于监测由安卓系统生成的toast,当存在待显示的toast时,标记toast的图层为toast图层;当toast图层更新了内容时,确定更新后的toast图层;所述安卓图层渲染模块运行在安卓兼容环境中,用于将所述toast显示监测模块输出的具有相同标记的toast图层渲染到安卓缓冲区中形成缓存数据;所述数据传输模块运行在安卓兼容环境中,用于将接收到的数据或缓存数据发送至所述数据转换模块;所述数据转换模块运行在linux系统中,用于对接收到的缓存数据进行转换以适配linux系统的缓冲区,再将转换后的数据发送至所述安卓应用显示模块;同时,对于接收到的非缓存数据则转发至所述安卓应用显示模块;所述安卓应用显示模块运行在linux系统中,用于创建linux窗口,并将从所述数据转换模块接收到的数据绘制到所述linux窗口中。
11.进一步地,所述优化显示系统还包括图像生成模块,所述图像生成模块运行在安卓兼容环境中,用于对所述安卓图层渲染模块生成的缓存数据编码形成toast图像,并将所述toast图像发送至所述数据传输模块。
12.进一步地,所述数据转换模块对接收到的缓存数据进行转换以适配linux系统的缓冲区的方式为:通过修改接收到的所述缓存数据的格式实现。
13.进一步地,所述数据转换模块对接收到的缓存数据进行转换以适配linux系统的缓冲区的方式为:在linux系统中将安卓缓冲区转换为linux缓冲区实现。
14.有益效果:1、本发明通过在安卓兼容环境的安卓系统内将同一toast对应的图层渲染到缓冲区中,将缓冲区数据直接发送至linux系统,由运行在linux系统中的安卓应用显示程序进行绘制,从而有效节约了toast在linux系统中显示的系统开销,进而缩小了toast显示的延时,增强了安卓系统与linux系统之间的同步性,有效改善了用户体验。
15.2、本发明通过在安卓兼容环境的安卓系统内将同一toast对应的图层渲染到缓冲区中后,再按照图层之间的前后顺序将缓冲区中所有图层渲染成图像,再将图像发送至linux系统中以图像的方式实现toast的显示,进一步节约了toast在linux系统中显示的系统开销,提高了toast的显示效率。
附图说明
16.图1为本发明提供的安卓兼容环境中多窗口模式下toast的优化显示方法的流程图。
17.图2为本发明提供的安卓兼容环境中多窗口模式下toast的优化显示系统的结构图。
18.图3为本发明提供的安卓兼容环境中多窗口模式下toast的优化显示系统的结构图。
具体实施方式
19.下面结合附图并举实施例,对本发明进行详细描述。
20.本发明提供了安卓兼容环境中多窗口模式下toast的优化显示方法,其核心思想是:在安卓兼容环境的安卓系统内将同一toast对应的所有图层渲染到缓冲区,然后将缓冲区发送至linux系统,由运行在linux系统中的安卓应用显示程序将缓冲区中的数据进行渲染显示。
21.本发明提供了安卓兼容环境中多窗口模式下toast的优化显示方法,流程如图1所示,具体包括以下步骤:步骤1、当安卓兼容环境监测到由安卓系统生成的待显示toast时,则确定toast对应的图层(layer),并将图层标记为toastlayer_n,其中,n为toast的编号,且在安卓兼容环境的一次运行过程中toast的编号是唯一的。
22.具体来说,安卓兼容环境监测待显示toast的方式可为修改安卓系统中toast类的显示函数(show函数)来实现。例如,在toast对应的view集合加入到window后,将该window标记为toast window,再通过拦截为window创建layer的操作过程,当window为toast window时,则将该图层标记为toast layer。
23.步骤2、安卓兼容环境在图层渲染过程中,将所有具有相同的toastlayer_n标记的图层渲染到安卓缓冲区中形成缓存数据;同时,安卓兼容环境监测toast图层的更新情况,当toast图层仅发生了尺寸变化时,安卓兼容环境忽略此次更新,当toast图层发生了内容更新时,例如,顶点更新、图元更新等,安卓兼容环境将更新后的所有具有相同的toastlayer_n标记的图层渲染到安卓缓冲区中形成缓存数据。
24.具体来说,在安卓兼容环境的surfaceflinger中拦截图层渲染的操作,当图层具有toast图层标记时,则创建一个opengl es缓冲区,再采用图层渲染方法将图层的内容渲染进缓冲区中。
25.步骤3、将步骤2生成的缓存数据发送至运行在linux系统上的安卓应用显示程序,安卓应用显示程序创建linux窗口及与linux窗口相关的linux缓冲区,修改缓存数据的头部数据结构使缓存数据适配linux缓冲区,将缓存数据写入linux缓冲区,采用linux系统的渲染方法将linux缓冲区的数据绘制在linux窗口中。
26.具体来说,安卓应用显示程序在接收到缓存数据后,创建linux窗口,并获取该linux窗口的句柄后创建opengl缓冲区,修改缓存数据的头部数据结构,将缓存数据转换为opengl缓冲区适配的新缓存数据,再调用opengl函数将新缓存数据绘制在linux窗口内。
27.此外,为了进一步提高linux窗口的绘制效率,在linux系统中建立安卓缓冲区到
linux缓冲区的转换方法,安卓应用显示程序采用转换方法将缓存数据绘制在创建的linux窗口内,通过这种方式即可实现在不修改缓存数据的数据结构的情况下采用linux系统的渲染方法将缓存数据直接绘制在linux窗口中。例如,采用opengl着色语言(opengl shading language,glsl)创建opengl es缓冲到opengl缓冲的转换方法,在linux系统初始化opengl上下文时即完成了转换方法的编译,采用转换方法利用gpu即可直接将opengl es缓冲绘制在opengl窗口内。
28.进一步地,为了保证toast的显示效果,安卓应用显示程序创建的linux窗口的大小为安卓缓冲区数据所表示的toast尺寸的等比例缩放。
29.本发明可采用异步rpc调用的方式将toast显示消息发送至安卓应用显示程序。根据安卓系统的toast实现机制,如果linux系统处理时间稍长,向安卓系统返回结果超时,将会导致toast处理过程抛出异常,因此本发明采用异步rpc调用的方式实现消息的发送。对于安卓兼容环境xdroid来说,安卓应用显示程序即为xdroidui。
30.进一步地,为了便于用户操作,安卓应用显示程序创建的linux窗口显示在处于最顶层的顶部安卓应用窗口中,或是显示在linux系统的任务栏的窗口中。
31.此外,为了进一步提高安卓兼容环境中安卓系统多窗口模式下toast显示的时效性,步骤2和步骤3还可采用以下方式实现:安卓兼容环境在图层渲染过程中,将所有具有相同的toastlayer_n标记的图层渲染到安卓缓冲区中形成缓存数据,按照图像格式对缓存数据编码,将缓存数据转换为toast图像;然后,将toast图像发送至运行在linux系统上的安卓应用显示程序,安卓应用显示程序根据toast图像的尺寸创建linux窗口,再将toast图像绘制在linux窗口中。
32.其中,安卓应用显示程序根据toast图像的尺寸创建linux窗口,再将toast图像绘制在linux窗口中的过程,为安卓应用显示程序利用qt(应用程序开发框架)库等ui库来实现。图像格式包括bitmap、png等格式。此外,安卓应用显示程序还可采用转换方法将图像绘制在linux窗口中。
33.本发明提供了安卓兼容环境中多窗口模式下toast的优化显示系统,系统结构如图2所示,包括toast显示监测模块、安卓图层渲染模块、数据传输模块、数据转换模块及安卓应用显示模块。
34.其中,toast显示监测模块运行在安卓兼容环境中,用于监测由安卓系统生成的待显示toast,当监测到存在待显示toast时,确定toast对应的图层,并标记该toast的所有图层;当监测到toast图层仅发生了尺寸变化时,安卓兼容环境忽略此次更新;当监测到toast图层发生了内容更新时,确定更新后的toast对应的具有相同标记的所有图层。其中,内容更新包括顶点更新、图元更新等情况。
35.安卓图层渲染模块运行在安卓兼容环境中,用于将toast显示监测模块输出的具有相同标记的所有图层渲染到安卓缓冲区中形成缓存数据。
36.数据传输模块运行在安卓兼容环境中,用于将接收到的数据或缓存数据发送至数据转换模块。
37.数据转换模块运行在linux系统中,用于对接收到的缓存数据进行转换使之能够与linux系统的缓冲区适配,再将转换后的数据发送至安卓应用显示模块;用于将接收到的非缓存数据转发至安卓应用显示模块。
38.安卓应用显示模块运行在linux系统中,用于创建linux窗口及与linux窗口相关的linux缓冲区,并将从数据转换模块接收到的数据绘制到linux窗口中。
39.进一步地,本发明提供了安卓兼容环境中多窗口模式下toast的优化显示系统中的数据转换模块对接收到的数据进行转换使之能够与linux系统的缓冲区适配的方式为,通过修改接收到的数据的格式或将安卓缓冲区转换为linux缓冲区等途径实现。
40.此外,本发明提供了安卓兼容环境中多窗口模式下toast的优化显示系统还包括图像生成模块,系统结构如图3所示。其中,图像生成模块运行在安卓兼容环境中,用于采用图像格式对安卓图层渲染模块生成的缓存数据进行编码形成图像,再将图像发送至数据传输模块。
41.安卓应用显示模块将从数据转换模块接收到的数据绘制到linux窗口中的方式为:利用qt(应用程序开发框架)库等ui库来实现。
42.综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1