一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

弹窗定制方法、装置、设备及存储介质与流程

2023-04-05 01:15:14 来源:中国专利 TAG:


1.本技术涉及计算机操作系统领域,特别涉及一种弹窗定制方法、弹窗定制装置、计算机设备以及计算机可读存储介质。


背景技术:

2.安卓系统中的弹窗分很多种,toast是其中比较重要的一种。针对toast在智能设备屏幕上的布局位置,在android r版本之前和android r版本或之后有着不同的方案,但是两种方案都不能实现自定义toast在系统界面上任意位置出现的效果,而且在android r版本或之后toast弹窗只能出现在固定的几个位置,甚至不能像在android r版本之前一样将toast布局在系统界面上部分区域内的任意位置。


技术实现要素:

3.本技术提供了一种弹窗定制方法、弹窗定制装置、计算机设备以及计算机可读存储介质。
4.本技术的弹窗定制方法,包括:
5.响应于显示层级修改操作,将所述弹窗的显示层级确定为预设层;
6.响应于显示位置修改操作,修改所述弹窗的显示位置,以使所述弹窗显示于所述预设层的任意位置。
7.如此,本技术通过设定弹窗的显示层级与显示位置,使弹窗不会被系统中其他的任何窗口覆盖,并解除操作系统对弹窗出现位置的限制,从而实现弹窗在系统界面上任意位置都能够不受影响地正常出现,从而实现自定义弹窗在系统界面上出现的位置并保证显示效果,使弹窗的定义突破了系统正常使用时的限制。
8.在某些实施方式中,所述响应于显示层级修改操作,将所述弹窗的显示层级确定为预设层,包括:
9.获取显示层级设置函数;
10.响应于显示层级修改操作,修改所述显示层级设置函数,以使所述弹窗的显示层级为预设层的显示层级,所述预设层的显示层级高于系统界面中任意其他元素的显示层级。
11.如此,本技术可以通过修改操作系统底层函数的方法修改弹窗的显示层级,使得弹窗的显示层级高于系统界面中任意其他元素的显示层级,从而实现弹窗不被其他界面元素覆盖的效果。
12.在某些实施方式中,所述响应于显示位置修改操作,修改所述弹窗的显示位置,包括:
13.获取系统版本信息;
14.根据所述系统版本信息,执行与所述系统版本信息对应的修改策略。
15.如此,本技术可以根据系统版本适应性调整弹窗位置修改的策略,以实现对不同
版本的系统的普适性调整。
16.在某些实施方式中,所述根据所述系统版本信息,执行与所述系统版本信息对应的修改策略,包括:
17.当系统版本低于预设版本时:
18.获取显示位置设置函数与弹窗属性设置函数;
19.响应于第一显示位置修改操作,修改所述显示位置设置函数,以使所述弹窗可显示于预设层的任意位置;
20.响应于第二显示位置修改操作,修改所述弹窗属性设置函数,以使所述弹窗不被系统窗口覆盖。
21.如此,本技术可以实现在系统版本低于预设版本时通过该系统版本下的系统架构实现弹窗的不可覆盖化以及布局位置的任意化。
22.在某些实施方式中,所述根据所述系统版本信息,执行与所述系统版本信息对应的修改策略,包括:
23.当系统版本不低于预设版本时:
24.获取弹窗属性设置函数;
25.响应于第三显示位置修改操作,修改所述弹窗属性设置函数,以使所述弹窗可显示于所述预设层的任意位置,且所述弹窗不被系统窗口覆盖。
26.如此,本技术可以在系统版本高于预设版本时通过该系统版本下的系统架构实现弹窗的不可覆盖化以及布局位置的任意化。
27.在某些实施方式中,所述响应于第三显示位置修改操作,修改所述弹窗属性设置函数,包括:
28.向所述弹窗属性设置函数中添加项目与参数,以使所述弹窗的显示位置确定为系统界面的任意位置;
29.向所述弹窗属性设置函数中添加标志,以使所述弹窗不被系统窗口覆盖。
30.如此,本技术具体提供了如何在高于预设版本的系统中实现弹窗的不可覆盖化以及布局位置的任意化。
31.在某些实施方式中,所述响应于显示位置修改操作,将所述弹窗的显示位置的范围确定为系统界面的任意位置,之后还包括
32.响应于风格样式修改操作,修改所述弹窗的风格样式属性。
33.如此,本技术还可以修改弹窗的外观风格样式。
34.在某些实施方式中,所述响应于风格样式设置操作,修改所述弹窗的风格样式属性,包括:
35.获取所述弹窗的显示布局文件以及系统属性配置文件;
36.响应于第一风格样式设置操作,修改所述显示布局文件中所述弹窗的样式属性;
37.响应于第二风格样式设置操作,修改所述系统属性配置文件中所述弹窗的字体属性。
38.如此,本技术提供了具体修改弹窗风格样式的方法。
39.本技术的弹窗定制装置,包括:
40.层级修改模块,用于响应于显示层级修改操作,将所述弹窗的显示层级确定为预
指的是两组以上(包括两组),“多片”指的是两片以上(包括两片)。
58.在本技术实施例的描述中,除非另有明确的规定和限定,技术术语“安装”“相连”“连接”“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;也可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本技术实施例中的具体含义。
59.本技术中的各示例与实施方式是基于android系统架构的,弹窗则以android系统中的toast弹窗为例。但本技术的保护范围并不限于上述应用背景,技术人员可以根据实际需要改变系统架构与弹窗的类型,本技术不做限定。
60.如图1所示,本技术提供一种弹窗定制方法,包括:
61.01:响应于显示层级修改操作,将弹窗的显示层级确定为预设层;
62.02:响应于显示位置修改操作,修改弹窗的显示位置,以使弹窗显示于预设层的任意位置。
63.如图6所示,本技术还提供了一种弹窗定制装置10。本技术的弹窗定制方法可以由本技术的弹窗定制装置10实现。具体地,弹窗定制装置10包括层级修改模块11以及位置修改模块12。其中,层级修改模块11用于响应于显示层级修改操作,将弹窗的显示层级确定为预设层,位置修改模块12用于响应于显示位置修改操作,将弹窗的显示位置确定为预设层的任意位置。
64.本技术还提供了一种计算机设备,计算机设备包括存储器和处理器。本技术的弹窗定制方法可以由本技术的计算机设备实现。具体地,存储器中存储有计算机程序,处理器用于响应于显示层级修改操作,将弹窗的显示层级确定为预设层,以及用于响应于显示位置修改操作,将弹窗的显示位置确定为预设层的任意位置。
65.具体地,对于系统界面上的弹窗而言,为了实现任意位置的显示,需要解决两个重要的问题,其一是不受遮挡,其二显示位置不受限。为了解决这两个问题故提出本技术。在某些示例中,android框架中的toast弹窗不能出现在导航栏与状态栏所在的区域,同时其所在的显示层的层级为8,而在目前的android系统中的要素中拥有的最高显示层级为33。所以,为了实现toast弹窗在系统界面上任意位置的显示,就必须将toast弹窗可以出现的区域以及显示层级都修改,以使toast弹窗可以出现在界面上的所有区域,且显示层级不低于33。
66.综上,本技术通过设定弹窗的显示层级与显示位置,使弹窗不会被系统中其他的任何窗口覆盖,并解除操作系统对弹窗出现位置的限制,从而实现弹窗在系统界面上任意位置都能够不受影响地正常出现。
67.在某些实施方式中,步骤01包括:
68.011:获取显示层级设置函数;
69.012:响应于显示层级修改操作,修改显示层级设置函数,以使弹窗的显示层级为预设层的显示层级。
70.在某些实施方式中,层级修改模块11用于获取显示层级设置函数,以及用于响应于显示层级修改操作,修改显示层级设置函数,以使弹窗的显示层级为预设层的显示层级。
71.在某些实施方式中,处理器用于获取显示层级设置函数,以及用于响应于显示层
级修改操作,修改显示层级设置函数,以使弹窗的显示层级为预设层的显示层级。
72.具体地,在某些示例中,在android系统内部的系统窗口管理策略类(也即windowmanagerpolicy)下获取显示层级设置函数(也即getwindowlayerfromtypelw),该函数时根据不同类型的窗口返回对应的层级,层级的数据类型为整形数,一般数字越大意味着显示层级就越高。当我们需要修改toast弹窗的显示层级时,可以在显示层级设置函数中的type_toast类型下,将层级内容由8修改为34。由于当前android系统中的要素中拥有的最高显示层级为33,因此只需要将该数字更改为大于33的整数即可。也即用于使弹窗高于系统界面中任意其他元素的预设层的层级只需要大于33即可,具体设置为何值可以根据需要以及系统内容的发展更新进行适时调整。
73.如此,本技术可以通过修改操作系统底层函数的方法修改弹窗的显示层级,使得弹窗的显示层级高于系统界面中任意其他元素的显示层级,从而实现弹窗不被其他界面元素覆盖的效果。
74.在某些实施方式中,步骤02包括:
75.021:获取系统版本信息;
76.022:根据系统版本信息,执行与系统版本信息对应的修改策略。
77.在某些实施方式中,位置修改模块12用于获取系统版本信息,以及用于根据系统版本信息,执行与系统版本信息对应的修改策略。
78.在某些实施方式中,处理器用于获取系统版本信息,以及用于根据系统版本信息,执行与系统版本信息对应的修改策略。
79.具体地,在某些示例中,目前android系统已经更新到了android r版本,android r版本中有关于弹窗的设置做出了非常大的改动,导致android r版本之前能够使用的部分自定义方式不能继续使用了。所以为了适应不同的android系统版本,本技术提供了一个以android r版本为分界的两个不同的修改策略,android r版本以前采用一种修改策略,android r版本以及android r版本以后采用另一种修改策略。
80.如此,本技术可以根据系统版本适应性调整弹窗位置修改的策略,以实现对不同版本的系统的普适性调整。
81.在某些实施方式中,如图2所示,步骤022包括:
82.0221:判断当前系统版本是否低于预设版本,若是,进入步骤0222;
83.0222:获取显示位置设置函数与弹窗属性设置函数;
84.0223:响应于第一显示位置修改操作,修改显示位置设置函数,以使弹窗可显示于预设层的任意位置;
85.0224:响应于第二显示位置修改操作,修改弹窗属性设置函数,以使弹窗不被系统窗口覆盖。
86.在某些实施方式中,位置修改模块12用于判断当前系统版本是否低于预设版本,以及用于获取显示位置设置函数与弹窗属性设置函数,以及用于响应于第一显示位置修改操作,修改显示位置设置函数,以使弹窗可显示于预设层的任意位置,以及用于响应于第二显示位置修改操作,修改弹窗属性设置函数,以使弹窗可以覆盖第一系统窗口。
87.具体地,在某些示例中,在android r版本之前,系统内部提供了修改弹窗位置的接口,但可修改的范围依然不是全界面。因此针对这样的情况,可以采用如下的方式:从设
备窗口管理类(phonewiondowmanager)中获取显示位置设置函数(layoutwindowlw),该函数主要用于在android系统刷新屏幕时计算每一个窗口在界面上的布局位置。由于在android r版本之前,toast弹窗被设定为不能出现于状态栏所在区域以及导航栏所在区域,因此可以进行如下的修改:修改显示位置设置函数中与状态栏对应的可显示区域,并将该区域的窗口判断类型从仅支持状态栏窗口修改为支持状态栏窗口或窗口类型为type_toast类型的窗口(也即toast弹窗)。导航栏也同理,修改显示位置设置函数中与状态栏对应的可显示区域所支持的窗口类型,并将该区域的窗口判断类型从仅支持导航栏窗口修改为支持导航栏窗口或窗口类型为type_toast类型的窗口。这样一来,toast弹窗就可以出现在状态栏或导航栏处了。此时虽然已经将弹窗的显示层级调整到系统界面中最高,但是android系统中依然存在一些特殊的情况导致状态栏与导航栏还是能够遮挡住toast弹窗,因此还需要对弹窗属性进行修改以实现避免上述情况的目的。在某些示例中,从系统中的toast弹窗外观类(也即toastpresenter)类中获取弹窗属性设置函数(也即createlayoutparams函数),在该函数中的窗口参数变量处添加flag_layout_in_screen和flag_layout_inset_decor两个变量标志,其中变量标志flag_layout_in_screen是指将窗口放置在整个屏幕中,忽略来自父窗口的任何约束,避免父窗口对当前toast弹窗影响,以使toast弹窗独立显示而无需与其他弹窗一同显示或受制于其他弹窗;变量标志flag_layout_inset_在一般情况下只能与变量标志flag_layout_in_screen一起使用,以确保弹窗的内容不会被界面内的装饰物(比如状态栏或导航栏)覆盖。
88.如此,本技术可以实现在系统版本低于预设版本时通过该系统版本下的系统架构实现弹窗的不可覆盖化以及布局位置的任意化。
89.在某些实施方式中,如图2所示,步骤022包括:
90.0221:判断当前系统版本是否低于预设版本,若否,进入步骤0225;
91.0225:获取弹窗属性设置函数;
92.0226:响应于第三显示位置修改操作,修改弹窗属性设置函数,以使弹窗可显示于预设层的任意位置,且弹窗不被系统窗口覆盖。
93.在某些实施方式中,位置修改模块12用于获取弹窗属性设置函数,以及用于响应于第三显示位置修改操作,修改弹窗属性设置函数。
94.在某些实施方式中,处理器用于获取弹窗属性设置函数,以及用于响应于第三显示位置修改操作,修改弹窗属性设置函数。
95.具体地,在某些示例中,在android r版本以及android r版本之后,先前系统内部提供的修改弹窗位置的接口不复存在,系统自身的设定也不允许在正常使用的情况下改变toast弹窗的出现位置,具体是上文的实施方式中layoutwindowlw函数被新版本的android框架弃用了。因此针对这样的情况,结合android r版本自身的系统架构,采用从系统中的toast弹窗外观类(也即toastpresenter)类中获取弹窗属性设置函数(也即createlayoutparams函数)并直接修改相关参数或代码的方式去实现toast弹窗任意位置的显示。
96.如此,本技术可以在系统版本高于预设版本时通过该系统版本下的系统架构实现弹窗的不可覆盖化以及布局位置的任意化。
97.在某些实施方式中,步骤0226包括:
98.02261:向弹窗属性设置函数中添加项目与参数,以使弹窗的显示位置确定为系统界面的任意位置;
99.02262:向弹窗属性设置函数中添加标志,以使弹窗弹窗不被系统窗口覆盖。
100.在某些实施方式中,位置修改模块12用于向弹窗属性设置函数中添加项目与参数,以使弹窗的显示位置确定为系统界面的任意位置,以及用于向弹窗属性设置函数中添加标志,以使弹窗弹窗不被系统窗口覆盖。
101.在某些实施方式中,处理器用于向弹窗属性设置函数中添加标志,以使弹窗弹窗不被系统窗口覆盖。
102.具体地,在某些示例中,从设备窗口管理类(phonewiondowmanager)中获取显示位置设置函数(layoutwindowlw)后,在该函数中增加如下两行代码:
103.params.setfitinsetstypes(1);
104.params.setfitinsetssides(0);
105.其中第一行代码表示调整的窗口类型中toast类型是有效类型,也即将toast类型的弹窗加入待调整的窗口类型中,第二行代码表示toast的显示位置无边界,也即将toast弹窗的显示位置的区域边界解除了,这样toast弹窗的显示位置不存在边界,也即在系统界面上任意位置都可以显示。同样地,为了避免android系统中依然存在一些能导致状态栏与导航栏能够遮挡住toast弹窗的特殊情况,还需要对弹窗属性进行修改以实现避免上述情况的目的。在某些示例中,从系统中的toast弹窗外观类(也即toastpresenter)类中获取弹窗属性设置函数(也即createlayoutparams函数),在该函数中的窗口参数变量处添加flag_layout_in_screen和flag_layout_inset_decor两个变量标志,其中变量标志flag_layout_in_screen是指将窗口放置在整个屏幕中,忽略来自父窗口的任何约束,避免父窗口对当前toast弹窗影响,以使toast弹窗独立显示而无需与其他弹窗一同显示或受制于其他弹窗;变量标志flag_layout_inset_在一般情况下只能与变量标志flag_layout_in_screen一起使用,以确保弹窗的内容不会被界面内的装饰物(比如状态栏或导航栏)覆盖。
106.如此,本技术具体提供了如何在高于预设版本的系统中实现弹窗的不可覆盖化以及布局位置的任意化。
107.在某些示例中,如图3、图4、图5所示,在修改了相关的参数与函数代码后,toast弹窗的位置不再局限于操作系统默认的位置。一般地,如上文某些示例中所述,在android系统中toast弹窗的默认许可显示范围不包括状态栏与导航栏所在的区域,经过上文某些示例中对android系统底层框架代码的修改,可以根据需要将toast弹窗显示在界面当中的不同的位置的,包括原本不会出现显示的区域。在某些示例中,比如如图3所示的状态栏处或如图4所示的导航栏处toast弹窗可以完全覆盖显示,同时还可以实现全覆盖或半覆盖状态栏或导航栏显示toast等效果,比如如图5所示的半覆盖状态栏的情况。
108.在某些实施方式中,步骤02之后还包括:
109.03:响应于风格样式修改操作,修改弹窗的风格样式属性。
110.在某些实施方式中,处理器还用于响应于风格样式修改操作,修改弹窗的风格样式属性。
111.具体地,风格样式属性一般指toast弹窗的外观样式、字体样式、纹理图片等等偏
向于外观或艺术的属性,在自定义toast弹窗的过程中也具有提升用户使用体验的价值,因此也可以在android系统的框架内对toast弹窗的风格样式属性进行调整。
112.如此,本技术还可以修改弹窗的外观风格样式。
113.在某些实施方式中,步骤03包括:
114.031:获取弹窗的显示布局文件以及系统属性配置文件;
115.032:响应于第一风格样式设置操作,修改显示布局文件中弹窗的样式属性;
116.033:响应于第二风格样式设置操作,修改系统属性配置文件中弹窗的字体属性。
117.在某些实施方式中,处理器用于获取弹窗的显示布局文件以及系统属性配置文件,以及用于响应于第一风格样式设置操作,修改显示布局文件中弹窗的样式属性,以及用于响应于第二风格样式设置操作,修改系统属性配置文件中弹窗的字体属性。
118.具体地,有关于风格样式属性,这是用户交互使用系统时最重要的交互内容之一,能够有效提升用户的使用体验,因此对toast弹窗的风格样式进行调整是非常重要的。在某些示例中,可以获取显示布局文件(即transient_notification.xml文件),并在该文件中直接对toast弹窗类型窗口的背景纹理、宽度、高度进行直接修改,另外在系统属性配置文件中获取与toast弹窗字体相关的文件(即textapperance.text),直接修改toast弹窗中的字体。
119.如此,本技术提供了具体修改弹窗风格样式的方法。
120.本技术还提供了一种计算机可读存储介质,存储有计算机程序,当计算机程序被一个或多个处理器执行时,实现上述的方法。
121.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
122.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围,其均应涵盖在本技术的权利要求和说明书的范围当中。尤其是,只要不存在结构冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。本技术并不局限
于文中公开的特定实施例,而是包括落入权利要求范围内的所有技术方案。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献