基于控件的加载显示方法及相关设备与流程

文档序号:26544249发布日期:2021-09-07 22:58阅读:63来源:国知局
基于控件的加载显示方法及相关设备与流程

1.本发明涉及开发技术领域,尤其涉及一种基于控件的加载显示方法及相关设备。


背景技术:

2.加载页面(loading)可以在任何应用中使用,其主要是为了处理应用在请求网络接口获取数据时出现的等待场景,loading的显示,让应用在处理耗时操作的时候更加优美,从而提升了用户体验感。
3.在现有技术中,loading的显示方式是遮挡整个页面进行显示,即在loading显示时整个页面无法点击操作,只有等待耗时操作(比如网络请求结束后)结束后关闭loading,才能操作页面,不能满足用户在loading显示时出现的其他业务需求。因此容易出现loading显示方式单一、灵活性较差的技术问题。


技术实现要素:

4.本发明的主要目的在于解决现有技术中loading显示方式单一、灵活性较差的技术问题。
5.本发明第一方面提供了一种基于控件的加载显示方法,所述基于控件的加载显示方法包括:基于服务器发送的加载显示请求,创建加载类及其构造方法,并在所述加载类中添加控件;根据所述构造方法提取所述加载类中带有所述控件的第一父布局;提取所述第一父布局的布局参数,并根据所述布局参数,创建第二父布局;从所述第一父布局中提取出所述控件,并删除所述第一父布局;将所述控件置于所述第二父布局中,并在所述第二父布局中添加加载页面。
6.可选的,在本发明的第一方面的第一种实现方式中,所述提取所述第一父布局的布局参数,并基于所述该布局参数,创建第二父布局包括:根据所述构造方法提取所述加载类中第一父布局的布局参数;创建帧布局,并提取所述帧布局中的控件布局参数;根据所述第一父布局的布局参数,变更所述控件布局参数中的具体参数数据,并根据变更后的控件布局参数生成第二父布局。
7.可选的,在本发明的第一方面的第二种实现方式中,在所述根据所述第一父布局的布局参数,变更所述控件布局参数中的具体参数数据,并根据变更后的控件布局参数生成第二父布局之后,还包括:基于预设的布局服务,创建加载布局;调用所述构造方法,在所述第二父布局中添加所述加载布局。
8.可选的,在本发明的第一方面的第三种实现方式中,在所述基于服务器发送的加载显示请求,创建加载类及其构造方法,并在所述加载类中添加控件之后,还包括:根据所述构造方法,创建加载插件及加载数组,并将所述加载数组存储至所述加载插件中;提取所述加载类中控件的第一哈希码,并将所述第一哈希码和所述加载类存储至加载数组中。
9.可选的,在本发明第一方面的第四种实现方式中,在所述将所述控件置于所述第二父布局中,并在所述第二父布局中添加加载页面之后,还包括:查找所述加载类中的第二
父布局,并在所述加载类中构造显示加载方法;调用所述显示加载方法,显示所述第二父布局中的加载页面;在所述加载类中构造关闭加载方法;调用所述关闭加载方法,关闭所述第二父布局中的加载页面。
10.可选的,在本发明第一方面的第五种实现方式中,所述调用所述显示加载方法,显示所述第二父布局中的加载页面包括:当检测到显示加载请求时,从所述显示加载请求中提取第二哈希码;基于所述第二哈希码,检测所述加载数组内是否存在加载类;若是,则调用所述显示加载方法,变更所述第二父布局中的属性设置,并根据变更后的所述属性设置,显示所述第二父布局中的加载页面。
11.可选的,在本发明第一方面的第六种实现方式中,所述调用所述关闭加载方法,关闭所述第二父布局中的加载页面包括:当检测到关闭加载请求时,从所述关闭加载请求中提取第三哈希码;基于所述第三哈希码,检测所述加载数组内是否存在加载类;若是,则调用所述关闭加载方法,变更所述第二父布局中的属性设置,并根据变更后的所述属性设置,关闭所述第二父布局中的加载页面。
12.本发明第二方面提出一种基于控件的加载显示装置,所述基于控件的加载显示装置包括:创建模块,用于基于服务器发送的加载显示请求,创建加载类及其构造方法,并在所述加载类中添加控件;获取模块,用于根据所述构造方法提取所述加载类中带有所述控件的第一父布局;提取模块,用于提取所述第一父布局的布局参数,并根据所述布局参数,创建第二父布局;删除模块,用于从所述第一父布局中提取出所述控件,并删除所述第一父布局;添加模块,用于将所述控件置于所述第二父布局中,并在所述第二父布局中添加加载页面。
13.可选的,在本发明第二方面的第一种实现方式中,所述提取模块具体用于:根据所述构造方法提取所述加载类中第一父布局的布局参数;创建帧布局,并提取所述帧布局中的控件布局参数;根据所述第一父布局的布局参数,变更所述控件布局参数中的具体参数数据,并根据变更后的控件布局参数生成第二父布局。
14.可选的,在本发明第二方面的第二种实现方式中,所述基于控件的加载显示装置还包括布局添加模块,其具体用于:基于预设的布局服务,创建加载布局;调用所述构造方法,在所述第二父布局中添加所述加载布局。
15.可选的,在本发明第二方面的第三种实现方式中,所述基于控件的加载显示装置还包括存储模块,其具体用于:根据所述构造方法,创建加载插件及加载数组,并将所述加载数组存储至所述加载插件中;提取所述加载类中控件的第一哈希码,并将所述第一哈希码和所述加载类存储至加载数组中。
16.可选的,在本发明第二方面的第四种实现方式中,所述基于控件的加载显示装置还包括构造模块,所述构造模块包括:第一构造单元,用于查找所述加载类中的第二父布局,并在所述加载类中构造显示加载方法;显示单元,用于调用所述显示加载方法,显示所述第二父布局中的加载页面;第二构造单元,用于在所述加载类中构造关闭加载方法;关闭单元,用于调用所述关闭加载方法,关闭所述第二父布局中的加载页面。
17.可选的,在本发明第二方面的第五种实现方式中,所述显示单元具体用于:当检测到显示加载请求时,从所述显示加载请求中提取第二哈希码;基于所述第二哈希码,检测所述加载数组内是否存在加载类;若所述加载数组内存在加载类,则调用所述显示加载方法,
变更所述第二父布局中的属性设置,并根据变更后的所述属性设置,显示所述第二父布局中的加载页面。
18.可选的,在本发明第二方面的第六种实现方式中,所述关闭单元具体用于:当检测到关闭加载请求时,从所述关闭加载请求中提取第三哈希码;基于所述第三哈希码,检测所述加载数组内是否存在加载类;若所述加载数组内存在加载类,则调用所述关闭加载方法,变更所述第二父布局中的属性设置,并根据变更后的所述属性设置,关闭所述第二父布局中的加载页面。
19.本发明第三方面提供了一种基于控件的加载显示设备,所述基于控件的加载显示设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于控件的加载显示设备执行上述的基于控件的加载显示方法的步骤。
20.本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当其在计算机上运行时,使得计算机执行上述的基于控件的加载显示方法的步骤。
21.在本发明提供的技术方案中,通过根据服务器发送的加载显示请求创建加载类及其构造方法,并在加载类中添加控件,根据创建的构造方法,在加载类中提取控件的第一父布局及其布局参数,并根据该布局参数,创建第二父布局;从第一父布局中提取出控件,并删除第一父布局;将控件添加至第二父布局中,并在第二父布局中添加加载页面。本发明的技术方案通过创建新的帧布局替换并删除控件原本的父布局,扩展了控件的展示方式,而通过显示加载页面时,可以根据不同的展示方式呈现不同的加载页面显示效果,从而提高了加载页面显示的灵活性,并提高了用户满意度。
附图说明
22.图1为本发明实施例中基于控件的加载显示方法的第一个实施例示意图;
23.图2为本发明实施例中基于控件的加载显示方法的第二个实施例示意图;
24.图3为本发明实施例中基于控件的加载显示方法的第三个实施例示意图;
25.图4为本发明实施例中基于控件的加载显示方法的第四个实施例示意图;
26.图5为本发明实施例中基于控件的加载显示装置的一个实施例示意图;
27.图6为本发明实施例中基于控件的加载显示装置的另一个实施例示意图;
28.图7为本发明实施例中基于控件的加载显示设备的一个实施例示意图。
具体实施方式
29.本发明实施例提供了一种基于控件的加载显示方法及相关设备,通过根据服务器发送的加载显示请求创建加载类及其构造方法,并在加载类中添加控件,根据创建的构造方法,在加载类中提取控件的第一父布局及其布局参数,并根据该布局参数,创建第二父布局;从第一父布局中提取出控件,并删除第一父布局;将控件添加至第二父布局中,并在第二父布局中添加加载页面。本发明实施例通过创建新的帧布局替换并删除控件原本的父布局,扩展了控件的展示方式,而通过显示加载页面时,可以根据不同的展示方式呈现不同的加载页面显示效果,从而提高了加载页面显示的灵活性,并提高了用户满意度。
30.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
31.为便于理解,下面对本发明实施例的具体内容进行描述,请参阅图1,本发明实施例中基于控件的加载显示方法的第一个实施例包括:
32.101,基于服务器发送的加载显示请求,创建加载类及其构造方法,并在加载类中添加控件;
33.服务器发送一个加载显示请求(loading请求),当检测到服务器内部存在有该loading请求时,服务器在编程软件的文件夹内新建一个后缀名为.java的文件,并在该文件内创建加载类(viewloading类)及其公共方法,具体的,服务器采用java语言进行编码,以viewloading作为源文件名和方法名,创建viewloading.java文件,并在该文件内,根据预设的主方法和java工具,构造公共方法,即构造方法,且构造的方法中有一个参数view,即public void viewloading(view view){}。其中,参数view为创建的控件。
34.102,根据构造方法提取加载类中带有控件的第一父布局;
35.通过调用构造方法中的view.getparent()方法获取到该控件view的父布局。具体的,通过调用该控件view的getparent()方法直接查找到该控件view的父布局,其中,该控件view的父布局为第一父布局,一个控件view对应一个父布局,且当创建控件view时,相应地也创建了改控件view的父布局。
36.103,提取第一父布局的布局参数,并根据布局参数,创建第二父布局;
37.在viewloading类中通过new关键字创建帧布局(framelayout),然后通过调用构造方法view.getlayoutparams获取到第一父布局的布局参数(layoutparmas),并且将该layoutparmas通过setlayoutparams方法设置给创建的framelayout,即将创建的帧布局作为控件view的第二父布局。进一步的,将该控件view的布局约束等特性设置给新创建的布局容器。其中,framelayout是android系统中的一个布局容器,layoutparmas是设置布局容器的一些参数,将第一父布局的参数设置到创建的framelayout中,其目的是为保证创建的布局容器和控件view的第一父布局的容器参数一致,即控件view在我们创建中的容器表现(约束、宽高、边距等)是一样的,不改变view的外观。
38.104,从第一父布局中提取出控件,并删除第一父布局;
39.从第一父布局中提取出控件view,并删除第一父布局,即删除控件view原本的父布局。具体的,从第一父布局中提取出控件view,将第一父布局与控件view进行剥离,即调用构造方法中第一父布局的removeview方法,将该控件view从父布局中移除。然后再将移除了控件view的第一父布局删除。
40.105,将控件置于第二父布局中,并在第二父布局中添加加载页面。
41.根据控件view的第一父布局,创建一个一模一样的第二父布局,并将控件view从第一父布局中取出来,将其放置到创建的第二父布局中,然后同时在第二父布局中添加一
个加载页面(loading)。从而可以实现在任何一个控件view上面显示loading,且实现loading的view即viewloading可以全屏显示,在此过程中,该控件view为一个页面,可以是在一个文字上(这时候的view其实是该文字控件),也可以是一张图片上面显示loading(这时候view是图片控件)等等。因为android的最小单元就是view,所以viewloading是可以在任何一个地方显示的。根据不同的业务需求,可以实现不同的效果。比如需要打断用户的操作,那就全屏显示loading,如果是一个表单提交按钮,那只需在按钮上面展示。如果是下载一张图片,那就把loading展示在图片上即可。
42.在移动端的应用程序app内的loading一般都是全屏的,会打断用户的操作,用户只有等待loading关闭后才能点击其余功能。且在现有技术中loading基本上都是通过dialog来实现,或者说基本的载体是activity,但是目前的移动端上的应用程序app只有一个activity,用户通过点击不通按钮切换不同功能的页面。其技术问题是当继续使用dialog来实现loading时,移动端底部的四个按钮就点击无效了。只有等loading关闭后,才能继续点击其他的按钮来切换用户想要的内容。而本发明实施例基于view实现的loading,在android中,任何控件都是基于view/viewgroup,当基于该最小化组件来实现loading时,无论在activity上去展示一个loading,还是在fragment上展示一个loading,甚至是一个dialog上展示一个loading都可以做到,只需要找到那个需要显示viewloading的组件即可。本实施例将loading架构在控件view中,且控件view的显示方式多样,即loading可以展示在任意一个地方,不会打断用户操作,比如用户在提交一个表单的时候,loading只会显示在按钮上方,用户如果想点击其余地方或者退出页面都不受影响,从而满足了用户在等待耗时操作时,即loading显示时的其他需求,提升了用户的体验感。即本发明实施例是将loading展示在任意一个地方,可以是一张图片上,一个按钮上,一个文字上甚至可以是任何地方,从而提高了loading显示的灵活性,并提升了用户的体验感。
43.在本发明实施例中,通过创建新的帧布局替换并删除控件view原本的父布局,扩展了控件view的展示方式,而通过view显示loading时,可以根据view不同的展示方式呈现不同的loading显示效果,从而提高了loading显示的灵活性,并提高了用户满意度。
44.请参阅图2,本发明实施例中基于控件的加载显示方法的第二个实施例包括:
45.201,基于服务器发送的加载显示请求,创建加载类及其构造方法,并在加载类中添加控件;
46.服务器发送一个加载显示请求(loading请求),当检测到服务器内部存在有该loading请求时,服务器在编程软件的文件夹内新建一个后缀名为.java的文件,并在该文件内创建加载类(viewloading类)及其公共方法,具体的,服务器采用java语言进行编码,以viewloading作为源文件名和方法名,创建viewloading.java文件,并在该文件内,根据预设的主方法和java工具,构造公共方法,即构造方法,且构造的方法中有一个参数view,即public void viewloading(view view){}。其中,参数view为创建的控件。
47.202,根据构造方法提取加载类中带有控件的第一父布局;
48.通过调用构造方法中的view.getparent()方法获取到该控件view的父布局。具体的,通过调用该控件view的getparent()方法直接查找到该控件view的父布局,其中,该控件view的父布局为第一父布局,一个控件view对应一个父布局,且当创建控件view时,相应地也创建了改控件view的父布局。
49.203,根据构造方法提取加载类中第一父布局的布局参数;
50.通过调用构造方法view.getlayoutparams从控件view的第一父布局中提取该第一父布局的布局参数(layoutparmas)。
51.204,创建帧布局,并提取帧布局中的控件布局参数;
52.205,根据第一父布局的布局参数,变更控件布局参数中的具体参数数据,并根据变更后的控件布局参数生成第二父布局;
53.在viewloading类中通过new关键字创建帧布局(framelayout),然后将该布局参数layoutparmas通过setlayoutparams设置给创建的帧布局framelayout。具体的,调用getlayoutparams()方法,获取控件view的第一父布局的布局参数;
54.即layoutparams mparams=(layoutparams()imageview.getlayoutparams();然后通过setlayoutparams()变更该控件view的layoutparams参数,其中,layoutparams参数包括高和宽,当变更完成之后,将该变更的布局参数设置为帧布局的布局参数,并将该设置好布局参数的帧布局作为控件view的第二父布局,然后调用viewloading类中parent的addview方法将第二父布局添加至第一父布局中。
55.206,基于预设的布局服务,创建加载布局;
56.207,调用构造方法,在第二父布局中添加加载布局;
57.获取viewloading类中预设的布局服务(layoutinflater),并调用layoutinflater中的form方法,创建加载布局viewloading布局(loadinglayoutview),然后依次调用addview方法,将view、loadinglayoutview分别添加至帧布局framelayout中。其中,layoutinflater为布局服务,一个有用的加载布局的系统服务,就是实例化与布局xml文件对应的视图对象,不能直接使用,需要通过getlayoutinflater()方法或getsystemservice()方法来获得与当前上下文绑定的layoutinflater实例。
58.208,将控件view置于第二父布局中,并在第二父布局中添加加载页面。
59.根据控件view的第一父布局,创建一个一模一样的第二父布局,并将控件view从第一父布局中取出来,将其放置到创建的第二父布局中,然后同时在第二父布局中添加一个loading。从而可以实现在任何一个控件view上面显示loading,且实现loading的view即viewloading可以全屏显示,在此过程中,该控件view为一个页面,可以是在一个文字上(这时候的view其实是该文字控件),也可以是一张图片上面显示loading(这时候view是图片控件)等等。因为android的最小单元就是view,所以viewloading是可以在任何一个地方显示的。根据不同的业务需求,可以实现不同的效果。比如需要打断用户的操作,那就全屏显示loading,如果是一个表单提交按钮,那只需在按钮上面展示。如果是下载一张图片,那就把loading展示在图片上即可。
60.在移动端的应用程序app内的loading一般都是全屏的,会打断用户的操作,用户只有等待loading关闭后才能点击其余功能。且在现有技术中loading基本上都是通过dialog来实现,或者说基本的载体是activity,但是目前的移动端上的应用程序app只有一个activity,用户通过点击不通按钮切换不同功能的页面。其技术问题是当继续使用dialog来实现loading时,移动端底部的四个按钮就点击无效了。只有等loading关闭后,才能继续点击其他的按钮来切换用户想要的内容。而本发明实施例基于view实现的loading,在android中,任何控件都是基于view/viewgroup,当基于该最小化组件来实现loading时,
无论在activity上去展示一个loading,还是在fragment上展示一个loading,甚至是一个dialog上展示一个loading都可以做到,只需要找到那个需要显示viewloading的组件即可。本实施例将loading架构在控件view中,且控件view的显示方式多样,即loading可以展示在任意一个地方,不会打断用户操作,比如用户在提交一个表单的时候,loading只会显示在按钮上方,用户如果想点击其余地方或者退出页面都不受影响,从而满足了用户在等待耗时操作时,即loading显示时的其他需求,提升了用户的体验感。即本发明实施例是将loading展示在任意一个地方,可以是一张图片上,一个按钮上,一个文字上甚至可以是任何地方,从而提高了loading显示的灵活性,并提升了用户的体验感。
61.在本发明实施例中,创建帧布局,并将该帧布局作为第二父布局替换第一父布局,然后在该第二父布局中添加viewloading布局和loading,从而扩展了基于控件的加载显示方式,提高了loading显示的灵活性。
62.请参阅图3,本发明实施例中基于控件的加载显示方法的第三个实施例包括:
63.301,基于服务器发送的加载显示请求,创建加载类及其构造方法,并在加载类中添加控件;
64.服务器发送一个loading请求,当检测到服务器内部存在有该loading请求时,服务器在编程软件的文件夹内新建一个后缀名为.java的文件,并在该文件内创建viewloading类及其公共方法,具体的,服务器采用java语言进行编码,以viewloading作为源文件名和方法名,创建viewloading.java文件,并在该文件内,根据预设的主方法和java工具,构造公共方法,且构造的方法中有一个参数view,即public void viewloading(view view){}。其中,参数view为创建的控件。
65.302,根据构造方法,创建加载插件及加载数组,并将加载数组存储至加载插件中;
66.303,提取加载类中控件view的第一哈希码,并将第一哈希码和加载类存储至加载数组中;
67.在创建viewloading的同时,根据构造方法,创建加载插件(loadingutils)对viewloading进行管理,且在loadingutils中再创建一个加载数组(loadingmaplist数组),并将该loadingmaplist数组添加至viewloading类中,提取viewloading类中控件view对应的哈希码(hashcode),并将该对应的哈希码作为key,viewloading作为value存储至该loadingmaplist数组中进行管理,其中控件view的哈希码为第一哈希码。在android的应用场景下,当有一个按钮,按钮上方展示一个loading时,通过loadingutils去创建viewloading时,就只会创建一个viewloading。如果需要这个按钮还显示loading,不需要重新创建viewloading,可以调用之前已经创建好的viewloading,直接显示loading即可。因而可以减少内存的消耗,重复利用viewloading资源,避免不必要的内存创建,提升应用程序的性能。
68.304,基于构造方法,在加载类中获取控件的第一父布局;
69.通过调用构造方法中的view.getparent()方法获取到该控件view的父布局。具体的,通过调用该控件view的getparent()方法直接查找到该控件view的父布局,其中,该控件view的父布局为第一父布局,一个控件view对应一个父布局,且当创建控件view时,相应地也创建了改控件view的父布局。
70.305,根据构造方法提取加载类中第一父布局的布局参数;
71.通过调用构造方法view.getlayoutparams从控件view的第一父布局中提取该第一父布局的布局参数(layoutparmas)。
72.306,创建帧布局,并提取帧布局中的控件布局参数;
73.307,根据第一父布局的布局参数,变更控件布局参数中的具体参数数据,并根据变更后的控件布局参数生成第二父布局;
74.在viewloading类中通过new关键字创建帧布局(framelayout),然后将该布局参数layoutparmas通过setlayoutparams设置给创建的帧布局framelayout。具体的,调用getlayoutparams()方法,获取控件view的第一父布局的布局参数;
75.即layoutparams mparams=(layoutparams()imageview.getlayoutparams();然后通过setlayoutparams()变更该控件view的layoutparams参数,其中,layoutparams参数包括高和宽,当变更完成之后,将该变更的布局参数设置为帧布局的布局参数,并将该设置好布局参数的帧布局作为控件view的第二父布局,然后调用viewloading类中parent的addview方法将第二父布局添加至第一父布局中。
76.308,从第一父布局中提取出控件,并删除第一父布局;
77.从第一父布局中提取出控件view,并删除第一父布局,即删除控件view原本的父布局。具体的,从第一父布局中提取出控件view,将第一父布局与控件view进行剥离,即调用构造方法中第一父布局的removeview方法,将该控件view从父布局中移除。然后再将移除了控件view的第一父布局删除。
78.309,将控件置于第二父布局中,并在第二父布局中添加加载页面;
79.根据控件view的第一父布局,创建一个一模一样的第二父布局,并将控件view从第一父布局中取出来,将其放置到创建的第二父布局中,然后同时在第二父布局中添加一个loading。从而可以实现在任何一个控件view上面显示loading,且实现loading的view即viewloading可以全屏显示,在此过程中,该控件view为一个页面,可以是在一个文字上(这时候的view其实是该文字控件),也可以是一张图片上面显示loading(这时候view是图片控件)等等。因为android的最小单元就是view,所以viewloading是可以在任何一个地方显示的。根据不同的业务需求,可以实现不同的效果。比如需要打断用户的操作,那就全屏显示loading,如果是一个表单提交按钮,那只需在按钮上面展示。如果是下载一张图片,那就把loading展示在图片上即可。
80.310,查找加载类中的第二父布局,并在加载类中构造显示加载方法;
81.311,当检测到显示加载请求时,从显示加载请求中提取第二哈希码;
82.查找viewloading类中的第二父布局,并在该viewloading类中构造显示加载方法(showloading方法)。当需要显示loading时,向服务器发送一个显示加载请求,且该显示加载请求包括请求显示的控件view对应的哈希码,且该哈希码为第二哈希码,服务器的系统内部通过预设的监控模块检测是否存在有显示加载请求,当检测到显示加载请求时,从该显示加载请求中提取第二哈希码。
83.312,基于第二哈希码,检测加载数组内是否存在加载类;
84.根据该第二哈希码,检测loadingmaplist数组内是否存在viewloading类。具体的,通过控件view的第二哈希码,在loadingmaplist中查找是否有已经创建的viewloading。如果存在viewloading,则直接调用该viewloading的showloading方法显示
loading。进一步的,在loadingmaplist中如果不存在viewloading,则在loadingmaplist中创建一个全新的viewloading,并新增loading到loadingmaplist数组中。然后调用新增的viewloading中的showloading方法显示loading。
85.313,若加载数组内存在加载类,则调用显示加载方法,变更第二父布局中的属性设置,并根据变更后的属性设置,显示第二父布局中的加载页面。
86.当在loadingmaplist中存在有viewloading时,通过调用showloding方法控制该viewloading的显示。具体的,在viewloading类中获取到loadinglayoutview,并将viewloading类的第二父布局中的visibility属性设置成view.visille,然后应用该变更的属性设置,实现loading的显示。
87.在本发明实施例中,通过构造一个showloading方法,当检测到显示加载请求时,可以根据该显示加载请求获取哈希码,并根据该哈希码查找第二父布局中的loading,并显示该loading。
88.请参阅图4,本发明实施例中基于控件的加载显示方法的第四个实施例包括:
89.401,基于服务器发送的加载显示请求,创建加载类及其构造方法,并在加载类中添加控件;
90.服务器发送一个loading请求,当检测到服务器内部存在有该loading请求时,服务器在编程软件的文件夹内新建一个后缀名为.java的文件,并在该文件内创建viewloading类及其公共方法,具体的,服务器采用java语言进行编码,以viewloading作为源文件名和方法名,创建viewloading.java文件,并在该文件内,根据预设的主方法和java工具,构造公共方法,且构造的方法中有一个参数view,即public void viewloading(view view){}。其中,参数view为创建的控件。
91.402,根据所述构造方法,创建加载插件及加载数组,并将加载数组存储至加载插件中;
92.403,提取加载类中控件的第一哈希码,并将第一哈希码和加载类存储至加载数组中;
93.在创建viewloading的同时,创建loadingutils对viewloading进行管理,且在loadingutils中再创建一个loadingmaplist数组,并将该loadingmaplist数组添加至viewloading类中,提取viewloading类中控件view对应的哈希码(hashcode),并将该对应的哈希码作为key,viewloading作为value存储至该loadingmaplist数组中进行管理,其中控件view的哈希码为第一哈希码。在android的应用场景下,当有一个按钮,按钮上方展示一个loading时,通过loadingutils去创建viewloading时,就只会创建一个viewloading。如果需要这个按钮还显示loading,不需要重新创建viewloading,可以调用之前已经创建好的viewloading,直接显示loading即可。因而可以减少内存的消耗,重复利用viewloading资源,避免不必要的内存创建,提升应用程序的性能。
94.404,基于构造方法,在加载类中获取控件的第一父布局;
95.通过调用构造方法中的view.getparent()方法获取到该控件view的父布局。具体的,通过调用该控件view的getparent()方法直接查找到该控件view的父布局,其中,该控件view的父布局为第一父布局,一个控件view对应一个父布局,且当创建控件view时,相应地也创建了改控件view的父布局。
96.405,根据构造方法提取加载类中第一父布局的布局参数;
97.通过调用构造方法view.getlayoutparams从控件view的第一父布局中提取该第一父布局的布局参数(layoutparmas)。
98.406,创建帧布局,并提取帧布局中的控件布局参数;
99.407,根据第一父布局的布局参数,变更控件布局参数中的具体参数数据,并根据变更后的控件布局参数生成第二父布局;
100.在viewloading类中通过new关键字创建帧布局(framelayout),然后将该布局参数layoutparmas通过setlayoutparams设置给创建的帧布局framelayout。具体的,调用getlayoutparams()方法,获取控件view的第一父布局的布局参数;
101.即layoutparams mparams=(layoutparams()imageview.getlayoutparams();然后通过setlayoutparams()变更该控件view的layoutparams参数,其中,layoutparams参数包括高和宽,当变更完成之后,将该变更的布局参数设置为帧布局的布局参数,并将该设置好布局参数的帧布局作为控件view的第二父布局,然后调用viewloading类中parent的addview方法将第二父布局添加至第一父布局中。
102.408,从第一父布局中提取出控件,并删除第一父布局;
103.从第一父布局中提取出控件view,并删除第一父布局,即删除控件view原本的父布局。具体的,从第一父布局中提取出控件view,将第一父布局与控件view进行剥离,即调用构造方法中第一父布局的removeview方法,将该控件view从父布局中移除。然后再将移除了控件view的第一父布局删除。
104.409,将控件置于第二父布局中,并在第二父布局中添加加载页面;
105.根据控件view的第一父布局,创建一个一模一样的第二父布局,并将控件view从第一父布局中取出来,将其放置到创建的第二父布局中,然后同时在第二父布局中添加一个loading。从而可以实现在任何一个控件view上面显示loading,且实现loading的view即viewloading可以全屏显示,在此过程中,该控件view为一个页面,可以是在一个文字上(这时候的view其实是该文字控件),也可以是一张图片上面显示loading(这时候view是图片控件)等等。因为android的最小单元就是view,所以viewloading是可以在任何一个地方显示的。根据不同的业务需求,可以实现不同的效果。比如需要打断用户的操作,那就全屏显示loading,如果是一个表单提交按钮,那只需在按钮上面展示。如果是下载一张图片,那就把loading展示在图片上即可。
106.410,在加载类中构造关闭加载方法;
107.411,当检测到关闭加载请求时,从关闭加载请求中提取第三哈希码;
108.查找viewloading类中的第二父布局,并在该viewloading类中构造关闭加载方法(hideloading方法)。当需要关闭或隐藏loading时,向服务器发送一个关闭加载请求,且该关闭加载请求包括请求显示的控件view对应的哈希码,且该哈希码为第三哈希码,服务器的系统内部通过预设的监控模块检测是否存在有关闭加载请求,当检测到关闭加载请求时,从该关闭加载请求中提取第三哈希码。
109.412,基于第三哈希码,检测加载数组内是否存在加载类;
110.根据该第三哈希码,检测loadingmaplist数组内是否存在viewloading类。具体的,通过控件view的第三哈希码,在loadingmaplist中查找是否有已经创建的
viewloading。如果存在viewloading,则直接调用该viewloading的hideloading方法关闭该loading。进一步的,在loadingmaplist中如果不存在viewloading,则在loadingmaplist中创建一个全新的viewloading,并新增loading到loadingmaplist数组中。然后调用新增的viewloading中的hideloading方法关闭loading。
111.413,若加载数组内存在加载类,则调用关闭加载方法,变更第二父布局中的属性设置,并根据变更后的属性设置,关闭第二父布局中的加载页面。
112.当在loadingmaplist中存在有viewloading时,通过调用hideloding方法控制该viewloading的关闭。具体的,在viewloading类中获取到loadinglayoutview,并将viewloading类的第二父布局中的visibility属性设置成view.gone,然后应用该变更的属性设置,实现loading的关闭或隐藏。
113.在本发明实施例中,通过构造一个hideloading方法,当检测到关闭加载请求时,可以根据该关闭加载请求获取哈希码,并根据该哈希码查找第二父布局中的loading,并关闭或隐藏该loading。
114.上面对本发明实施例中的基于控件的加载显示方法进行了描述,下面对本发明实施例中的基于控件的加载显示装置进行描述,请参照图5,本发明实施例中的基于控件的加载显示装置的一个实施例包括:
115.创建模块501,用于基于服务器发送的加载显示请求,创建加载类及其构造方法,并在所述加载类中添加控件;
116.获取模块502,用于根据所述构造方法提取所述加载类中带有所述控件的第一父布局;
117.提取模块503,用于提取所述第一父布局的布局参数,并根据所述布局参数,创建第二父布局;
118.删除模块504,用于从所述第一父布局中提取出所述控件,并删除所述第一父布局;
119.添加模块505,用于将所述控件置于所述第二父布局中,并在所述第二父布局中添加加载页面。
120.在本发明实施例中,通过基于控件的加载显示装置执行上述的基于控件的加载显示方法的步骤,通过创建新的帧布局替换并删除控件原本的父布局,扩展了控件的展示方式,而通过显示加载页面时,可以根据不同的展示方式呈现不同的加载页面显示效果,从而提高了加载页面显示的灵活性,并提高了用户满意度。
121.请参阅图6,本发明实施例中的基于控件的加载显示装置的另一个实施例包括:
122.创建模块501,用于基于服务器发送的加载显示请求,创建加载类及其构造方法,并在所述加载类中添加控件;
123.获取模块502,用于根据所述构造方法提取所述加载类中带有所述控件的第一父布局;
124.提取模块503,用于提取所述第一父布局的布局参数,并根据所述布局参数,创建第二父布局;
125.删除模块504,用于从所述第一父布局中提取出所述控件,并删除所述第一父布局;
126.添加模块505,用于将所述控件置于所述第二父布局中,并在所述第二父布局中添加加载页面。
127.可选的,所述提取模块501具体用于:
128.根据所述构造方法提取所述加载类中第一父布局的布局参数;
129.创建帧布局,并提取所述帧布局中的控件布局参数;
130.根据所述第一父布局的布局参数,变更所述控件布局参数中的具体参数数据,并根据变更后的控件布局参数生成第二父布局。
131.可选的,所述基于控件的加载显示装置还包括布局添加模块506,其具体用于:
132.基于预设的布局服务,创建加载布局;
133.调用所述构造方法,在所述第二父布局中添加所述加载布局。
134.可选的,所述基于控件的加载显示装置还包括存储模块507,其具体用于:
135.根据所述构造方法,创建加载插件及加载数组,并将所述加载数组存储至所述加载插件中;
136.提取所述加载类中控件的第一哈希码,并将所述第一哈希码和所述加载类存储至加载数组中。
137.可选的,所述基于控件的加载显示装置还包括构造模块508,所述构造模块508包括:
138.第一构造单元5081,用于查找所述加载类中的第二父布局,并在所述加载类中构造显示加载方法;
139.显示单元5082,用于调用所述显示加载方法,显示所述第二父布局中的加载页面;
140.第二构造单元5083,用于在所述加载类中构造关闭加载方法;
141.关闭单元5084,用于调用所述关闭加载方法,关闭所述第二父布局中的加载页面。
142.可选的,所述显示单元5082具体用于:
143.当检测到显示加载请求时,从所述显示加载请求中提取第二哈希码;
144.基于所述第二哈希码,检测所述加载数组内是否存在加载类;
145.若所述加载数组内存在加载类,则调用所述显示加载方法,变更所述第二父布局中的属性设置,并根据变更后的所述属性设置,显示所述第二父布局中的加载页面。
146.可选的,所述关闭单元5084具体用于:
147.当检测到关闭加载请求时,从所述关闭加载请求中提取第三哈希码;
148.基于所述第三哈希码,检测所述加载数组内是否存在加载类;
149.若所述加载数组内存在加载类,则调用所述关闭加载方法,变更所述第二父布局中的属性设置,并根据变更后的所述属性设置,关闭所述第二父布局中的加载页面。
150.在本发明实施例中,基于控件的加载显示装置调用构造模块构造显示加载方法和关闭加载方法,通过该显示加载方法和关闭加载方法可以控制第二父布局中加载页面的显示和关闭,提高加载页面显示的灵活性,从而提高用户的满意度。
151.请参阅图7,下面从硬件处理的角度对本发明实施例中的基于控件的加载显示设备的一个实施例进行详细描述。
152.图7是本发明实施例提供的一种基于控件的加载显示设备的结构示意图,该基于控件的加载显示设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个
以上处理器(central processing units,cpu)710(例如,一个或一个以上处理器)和存储器720,一个或一个以上存储应用程序733或数据732的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器720和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于控件的加载显示设备700中的一系列指令操作。更进一步地,处理器710可以设置为与存储介质730通信,在基于控件的加载显示设备700上执行存储介质730中的一系列指令操作。
153.基于控件的加载显示设备700还可以包括一个或一个以上电源740,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口760,和或或,一个或一个以上操作系统731,例如windows serve,mac os x,unix,linux,freebsd等等。本领域技术人员可以理解,图7示出的基于控件的加载显示设备结构并不构成对基于控件的加载显示设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
154.本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述基于控件的加载显示方法的步骤。
155.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
156.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
157.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1