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

文档序号:29309156发布日期:2022-03-19 19:33阅读:477来源:国知局
一种安卓兼容环境中多窗口模式下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的显示无法与安卓应用相对应等问题。


技术实现要素:

4.有鉴于此,本发明提供了一种安卓兼容环境中多窗口模式下toast的显示方法,能够在安卓系统多窗口模式下根据toast的创建方式实现toast的灵活显示。
5.本发明提供的一种安卓兼容环境中多窗口模式下toast的显示方法,包括以下步骤:步骤1、当安卓兼容环境监测到待显示的toast时,确定toast对应的taskid,将taskid添加到toast对应的图层名称中;当toast由安卓系统创建时,taskid的取值为设定标识值;步骤2、安卓系统构建包含图层名称、toast显示尺寸、toast中心点坐标及toast显示内容的toast显示消息,并将toast显示消息发送至linux系统上的安卓应用显示程序;步骤3、当所述安卓应用显示程序接收到toast显示消息后,根据图层名称判断toast显示消息是否与toast相关,如果相关且taskid的取值为设定标识值,则执行步骤4,如果相关且taskid的取值为非设定标识值则执行步骤5;如果不相关则执行步骤4;步骤4、所述安卓应用显示程序采用linux系统方法将toast显示消息中的toast显示内容显示在任务栏的窗口中;步骤5、所述安卓应用显示程序根据toast显示消息重构toast图层并显示在对应安卓应用窗口中。
6.进一步地,所述步骤3中的如果相关且taskid的取值为设定标识值时,还可以执行如下步骤:
步骤3.1、所述安卓应用显示程序将当前linux系统中位于最顶层的安卓应用窗口作为目标显示窗口;步骤3.2、根据所述目标显示窗口的显示尺寸及左上角坐标,重新计算toast在所述目标显示窗口中的新中心点坐标,根据新中心点坐标及toast显示尺寸计算得到toast的左上角坐标;步骤3.3、将toast加入所述目标显示窗口的图层列表的最前端,按照图层列表分别绘制各图层。
7.进一步地,所述步骤5中所述安卓应用显示程序根据toast显示消息重构toast图层并显示在对应安卓应用窗口中的方式包括:步骤5.1、所述安卓应用显示程序将当前linux系统中具有相同taskid的安卓应用窗口作为目标显示窗口;步骤5.2、根据所述目标显示窗口的显示尺寸及左上角坐标,重新计算toast在所述目标显示窗口中的新中心点坐标,根据新中心点坐标及toast显示尺寸计算得到toast的左上角坐标;步骤5.3、将toast加入所述目标显示窗口的图层列表的最前端,按照图层列表分别绘制各图层。
8.进一步地,所述toast显示消息中还包括显示时间戳,所述显示时间戳安卓系统中toast的产生时间。
9.进一步地,所述安卓应用显示程序在执行所述步骤3.2时,按照所述显示时间戳从先到后的顺序形成toast序列;在所述步骤3.3中将所述toast序列加入所述目标显示窗口的图层列表的最前端。
10.进一步地,所述安卓应用显示程序在执行所述步骤5.2时,按照所述显示时间戳从先到后的顺序形成toast序列;在所述步骤5.3中将所述toast序列加入所述目标显示窗口的图层列表的最前端。
11.进一步地,所述步骤5.2中根据所述目标显示窗口的显示尺寸及左上角坐标,重新计算toast在所述目标显示窗口中的新中心点坐标的方式为:获取所述目标显示窗口的显示尺寸和左上角坐标,及物理屏幕的实际尺寸,将目标显示窗口尺寸与物理屏幕尺寸的比值作为显示比例k;其中,所述目标显示窗口的左上角坐标记为(xm, ym), toast中心点坐标记为(xc, yc),toast新中心点坐标记为(xc′
, yc′
);根据xc′
= kxc,yc′
= kyc计算得到toast新中心点坐标;根据x
t = xc′-w/2,y
t = yc′-h/2计算得到toast的左上角坐标(x
t
, y
t
)。
12.进一步地,所述步骤3.2中根据所述目标显示窗口的显示尺寸及左上角坐标,重新计算toast在所述目标显示窗口中的新中心点坐标的方式为:获取所述目标显示窗口的显示尺寸和左上角坐标,及物理屏幕的实际尺寸,将目标显示窗口尺寸与物理屏幕尺寸的比值作为显示比例k;其中,所述目标显示窗口的左上角坐标记为(xm, ym), toast中心点坐标记为(xc, yc),toast新中心点坐标记为(xc′
, yc′
);根据xc′
= kxc,yc′
= kyc计算得到toast新中心点坐标;根据x
t = xc′-w/2,y
t = yc′-h/2计算得到toast的左上角坐标(x
t
, y
t
)。
13.进一步地,所述步骤5中所述安卓应用显示程序根据toast显示消息重构toast图
层并显示在对应安卓应用窗口中时,所述toast的显示尺寸根据对应安卓应用窗口与物理屏幕尺寸的比值等比例缩放。
14.有益效果:1、本发明通过对toast图层进行分类标记,根据分类标记为toast确定不同的显示方式,保证了多窗口模式下安卓兼容环境中安卓系统toast显示的准确性及有效性,从而提升用户在桌面系统中使用安卓应用的体验。
15.2、本发明通过对toast图层增加显示时间戳,安卓应用显示程序根据显示时间戳的时序依次显示toast图层,在保证多窗口模式下安卓兼容环境中安卓系统toast显示的准确性及有效性的基础上,提高了toast图层显示的有序性。
附图说明
16.图1为本发明提供的一种安卓兼容环境中多窗口模式下toast的显示方法的流程图。
具体实施方式
17.下面结合附图并举实施例,对本发明进行详细描述。
18.在安卓系统中toast可由应用程序中的活动实例(activity)创建,也可由安卓系统创建,由活动实例(activity)创建时活动实例具有唯一的taskid,通过该taskid能够获取toast与应用程序间的对应关系,具体来说通过taskid能够得到程序包名,根据包名即可判断出具体安卓应用程序;由安卓系统创建时,taskid即与某个安卓系统的线程相对应。
19.本发明提供了一种安卓兼容环境中多窗口模式下toast的显示方法,流程如图1所示,具体包括以下步骤:步骤1、当安卓兼容环境监测到需要显示的toast时,确定toast对应的taskid,并将taskid添加到toast对应的图层(layer)名称中。
20.安卓兼容环境监测需要显示的toast的方式,可采用修改安卓系统中toast类的显示函数(show函数)来实现。
21.安卓系统根据创建toast的主体确定taskid的取值,具体来说,若该toast是由应用程序创建的,则在安卓兼容环境内获取该应用程序中创建该toast的活动实例(activity)的taskid;若该toast是由安卓系统创建的,则令taskid取值为设定标识值。然后,将taskid增加到toast对应的图层(layer)名称中,例如,将toast所在图层命名为“toast taskid”,以标识出toast与应用程序或安卓系统的对应关系。
22.通常情况下,安卓系统中的taskid的取值为非负整数,因此对于由安卓系统创建的toast可将taskid的取值设置为0。
23.进一步地,为了确保安卓系统中所有toast都能够按照时间顺序完整显示,在安卓兼容环境监测到需要显示的toast时,安卓系统将建立当前的显示时间戳,以标识每个toast的产生时间。其中,显示时间戳为安卓系统中toast的产生时间。
24.步骤2、安卓系统构建包含图层名称、toast显示尺寸、toast中心点坐标及toast显示内容等信息的toast显示消息,并将toast显示消息发送至运行在linux系统上的安卓应用显示程序。
25.其中,toast显示内容,即为toast中每个子view的可显示内容及布局,可显示内容包括文本内容、图像内容等所有显示内容。
26.实现过程中,通过调用安卓系统中的toast对象的getview()方法即可获取toast对应的view,再通过循环调用linearlayout类getchildat (i)方法即可获得toast中的所有view。可采用代码如下实现:linearlayout toastview = (linearlayout) toast.getview();for (int i = 0; i 《 toastview.getchildcount (); ++ i){ view child = toastview.getchildat (i);}其中,针对child的类型,即textview、imageview、viewgroup等类型,获取child的不同信息。
27.本发明可采用异步rpc调用的方式将toast显示消息发送至安卓应用显示程序。根据安卓系统的toast实现机制,如果linux系统处理时间稍长,向安卓系统返回结果超时,将会导致toast处理过程抛出异常,因此本发明采用异步rpc调用的方式实现消息的发送。对于安卓兼容环境xdroid来说,安卓应用显示程序即为xdroidui。
28.进一步地,为了确保安卓系统中所有toast都能够按照时间顺序完整显示,需要将显示时间戳增加到toast显示消息中,此时,toast显示消息包含图层名称、toast显示尺寸、toast中心点坐标、toast显示内容及显示时间戳等信息。
29.步骤3、当安卓应用显示程序接收到toast显示消息时,根据toast显示消息中图层名称判断当前消息是否为与toast显示相关的消息,如果是则提取图层名称中的taskid,若taskid的取值为设定标识值,则执行步骤4或执行步骤5,若taskid的取值为非设定标识值,则执行步骤6;如果不是,则将该toast显示消息作为系统消息,执行步骤5。
30.步骤4、安卓应用显示程序将toast显示消息所表示的toast显示在当前linux系统中处于最顶层的顶部安卓应用窗口中。
31.当taskid取值为设定标识值时,说明该toast是由安卓系统创建的,而不与具体的安卓应用相对应,因此,为了便于用户观察,最佳的方式是将该toast显示在当前linux系统所显示的安卓应用窗口的最顶层,具体过程包括以下步骤:步骤4.1、安卓应用显示程序获取当前linux系统中所显示的多个安卓应用窗口中处于最顶层的顶部安卓应用窗口,将顶部安卓应用窗口作为目标显示窗口。
32.步骤4.2、根据目标显示窗口的显示尺寸及左上角坐标,重新计算toast显示在目标显示窗口中应有的新中心点坐标,再根据新中心点坐标及toast显示尺寸计算得到toast图层的左上角坐标。
33.步骤4.3、将toast图层加入目标显示窗口的图层列表的最前端或第一位,以确保toast图层显示在最顶层,按照图层列表、显示尺寸及左上角坐标分别绘制各图层。安卓应用显示程序采用opengl或opengl es完成图层的绘制。
34.进一步地,对于增加显示时间戳的toast显示消息,安卓应用显示程序在执行步骤4.1后,从接收到的toast显示消息中提取显示时间戳,并根据显示时间戳的先后顺序针对不同toast执行步骤4.2,从而得到各toast的显示尺寸和左上角坐标,按照显示时间戳从先
到后的顺序形成待显示的toast序列;在步骤4.3中将toast序列加入顶部安卓应用窗口的图层列表的最前端或第一位。
35.步骤5、安卓应用显示程序从接收到的toast显示消息中提取toast显示消息中的toast显示内容,采用linux系统方法将toast显示内容显示在任务栏的窗口中。
36.例如,在xdroidui中设置接收toast显示消息的线程,当该线程接收到taskid为0的消息时,则根据toast显示消息中的时间戳先后顺序依次提取toast显示消息中的toast显示内容,再调用linux相关接口显示任务栏提示信息。linux系统显示toast显示内容的方式为:toast显示内容中所有view构成view集合,根据view集合重构linux提示窗口widget,view集合中的每个view与提示窗口widget的一个子widget相对应,各子widget采用view的布局构建。如果view采用布局为绝对布局(absolutelayout),则需要对布局内的每个元素的大小和坐标都进行相同比例的缩放,缩放比例为toast显示消息中toast显示尺寸与linux提示窗口尺寸的比值。
37.进一步地,对于增加显示时间戳的toast显示消息,安卓应用显示程序从接收到的toast显示消息中提取显示时间戳,并根据显示时间戳的先后顺序依次提取toast显示消息中的toast显示内容,采用linux系统方法将toast显示内容显示在任务栏的窗口中。
38.步骤6、安卓应用显示程序根据toast显示消息重构toast图层,并将得到的图层显示在与其对应的安卓应用窗口中。
39.步骤6.1、安卓应用显示程序遍历当前linux系统中显示的所有安卓应用窗口,根据toast显示消息中的taskid找到与toast显示消息相对应的安卓应用窗口作为目标显示窗口。
40.步骤6.2、根据目标显示窗口的显示尺寸及左上角坐标,重新计算toast显示在该目标显示窗口中应有的新中心点坐标,再根据新中心点坐标及toast显示尺寸计算得到toast图层的左上角坐标。
41.步骤6.3、将toast图层加入目标显示窗口的图层列表的最前端或第一位,以确保toast图层显示在最顶层,按照图层列表分别绘制各图层。安卓应用显示程序采用opengl或opengl es完成图层的绘制。
42.进一步地,对于增加显示时间戳的toast显示消息,安卓应用显示程序在执行步骤6.1后,从接收到的toast显示消息中提取显示时间戳,并根据显示时间戳的先后顺序针对不同toast执行步骤6.2,从而得到各toast的新显示尺寸和左上角坐标,按照显示时间戳从先到后的顺序形成待显示的toast序列;在步骤6.3中将toast序列加入目标显示窗口的图层列表的最前端或第一位。
43.在现有安卓系统中,toast的实现机制决定toast的中心点坐标是相对于物理主机相连显示器的屏幕而言的,在安卓兼容环境中toast的中心点坐标依然是相对于linux系统所在主机相连显示器的屏幕来确定的。因此,本发明中,步骤4.2及步骤6.2中的根据目标显示窗口的显示尺寸及左上角坐标,重新计算toast显示在目标显示窗口中应有的新中心点坐标,toast新中心点坐标的计算过程如下:s1、获取目标显示窗口的显示尺寸及物理屏幕的实际尺寸,得到目标显示窗口尺寸与物理屏幕尺寸的比值作为显示比例k。其中,toast显示尺寸记为(w, h),w, toast中心点坐标记为(xc, yc),toast新中心点坐标记为(xc′
, yc′
)。
44.s2、根据显示比例k和toast中心点坐标计算得到toast新中心点坐标,计算方式如下:xc′
= kxc,yc′
= ky
c。
45.s3、根据toast新中心点坐标和toast显示尺寸即可得到toast的左上角坐标(x
t
, y
t
),计算方式如下:x
t = xc′-w/2,y
t = yc′-h/2。
46.进一步地,为了达到更佳的显示效果,步骤4.2和步骤6.2中toast的显示尺寸将根据目标显示窗口的尺寸重新计算,计算方式为根据目标显示窗口与物理屏幕尺寸的比值等比例缩放得到toast新显示尺寸,具体表示如下:toast显示尺寸记为(w, h),toast新显示尺寸记为(w

, h

),则w

= kw,h

= kh;此时,toast的左上角坐标(x
t
, y
t
)的计算方式如下:x
t = xc′
‑ꢀw′
/2,y
t = yc′
‑ꢀh′
/2。
47.此外,由于toast的实现机制中确定了toast的可显示时间,因此,为了达到最佳的显示效果,即在当前toast消失后下个toast才显示,当获取的toast显示消息中具有显示时间戳时,本发明在绘制各图层toast图层时增加了时间间隔控制机制。
48.综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1