CN117724781A - 一种应用程序启动动画的播放方法和电子设备 - Google Patents
一种应用程序启动动画的播放方法和电子设备 Download PDFInfo
- Publication number
- CN117724781A CN117724781A CN202310815995.6A CN202310815995A CN117724781A CN 117724781 A CN117724781 A CN 117724781A CN 202310815995 A CN202310815995 A CN 202310815995A CN 117724781 A CN117724781 A CN 117724781A
- Authority
- CN
- China
- Prior art keywords
- window
- frame
- animation
- starting
- picture
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 140
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 118
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 118
- 239000000203 mixture Substances 0.000 claims abstract description 33
- 230000004044 response Effects 0.000 claims abstract description 27
- 238000001514 detection method Methods 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims description 63
- 230000002194 synthesizing effect Effects 0.000 claims description 55
- 230000015654 memory Effects 0.000 claims description 33
- 239000007858 starting material Substances 0.000 claims description 7
- 239000003999 initiator Substances 0.000 claims description 2
- 230000001976 improved effect Effects 0.000 abstract description 13
- 238000007726 management method Methods 0.000 description 30
- 230000006870 function Effects 0.000 description 25
- 230000000694 effects Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 20
- 239000010410 layer Substances 0.000 description 20
- 238000012545 processing Methods 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000009877 rendering Methods 0.000 description 8
- 230000000977 initiatory effect Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 239000011230 binding agent Substances 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 6
- 230000008447 perception Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000010295 mobile communication Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种应用程序启动动画的播放方法和电子设备,涉及终端设备技术领域。该应用程序启动动画的播放方法包括:电子设备响应于应用程序的启动操作,获取N组窗口绘制合成参数;其中,启动动画包括N帧窗口画面;N组窗口绘制合成参数与启动动画中的N帧窗口画面一一对应;然后,电子设备基于已获取的N组窗口绘制合成参数,响应于检测到垂直同步Vsync信号,绘制合成并播放启动动画中的N帧窗口画面;其中,Vsync信号、窗口绘制合成参数和窗口画面一一对应。这样,可以降低窗口的丢失率,提升了播放启动动画的流程度,提升了用户体验。
Description
技术领域
本申请实施例涉及终端技术领域,尤其涉及一种应用程序启动动画的播放方法和电子设备。
背景技术
电子设备可以在应用程序的启动过程中,播放应用程序启动动画,以降低电子设备从桌面到显示被启动应用程序的首帧画面时的突兀感;其中,首帧画面为被启动应用程序所显示的第一个画面。
一般情况下,电子设备会通过逐帧播放窗口画面的方式播放启动动画;其中,窗口画面可以在电子设备显示屏上全屏显示,也可以在全屏中的子显示区域上显示。每帧窗口画面是由垂直同步(Vetical synchronization,Vsync)信号触发显示的,即电子设备检测到一个Vsync信号后,会触发电子设备先进行一帧窗口画面的窗口绘制合成参数计算,在基于该参数进行窗口画面绘制,以及窗口画面显示。
在一些场景中,电子设备检测到信号后,进行某帧窗口画面的窗口绘制合成参数的计算的过程中,可能会因为电子设备负载高、业务叠加和调度线程较多,处理其他业务而导致该帧窗口画面的窗口绘制合成参数的计算被耽搁,进而造成该帧窗口画面的窗口绘制合成参数计算时间较长。且在该段时长中,即使有Vsync信号的触发,也无法绘制合成该些Vsync信号对应的窗口画面,该些窗口画面丢失。如此,电子设备播放应用程序启动动画过程中较长时间停留在该帧窗口画面的前一帧窗口画面,会使人感到应用程序启动动画卡顿。
发明内容
本申请提供一种应用程序启动动画的播放方法和电子设备,可以降低窗口的丢失率,提升了播放启动动画的流程度,提升了用户体验。
为达到上述目的,本申请的实施例采用如下技术方案:第一方面,提供了一种应用程序启动动画的播放方法,该方法应用于电子设备,该方法包括:响应于应用程序的启动操作,获取N组窗口绘制合成参数;其中,启动动画包括N帧窗口画面;N组窗口绘制合成参数与启动动画中的N帧窗口画面一一对应;基于已获取的N组窗口绘制合成参数,响应于检测到垂直同步Vsync信号,绘制合成并播放启动动画中的N帧窗口画面;其中,Vsync信号、窗口绘制合成参数和窗口画面一一对应。
本方案中,在电子设备播放应用程序启动动画的过程中,电子设备可以不需要依次接收到Vsync信号后,依次计算窗口绘制合成参数,再依次基于计算好的窗口绘制合成参数合成对应帧窗口画面。本申请实施例中,电子设备可以提前计算好播放应用程序启动动画中的多帧窗口画面内容对应的多组窗口绘制合成参数,这样,电子设备在检测到Vsync信号后,可以直接基于计算好的窗口绘制合成参数合成对应帧窗口画面。即使电子设备负载高、业务叠加和调度线程较多,也避免了电子设备接受Vsync信号的时间与计算窗口绘制合成参数时长不协调所导致有些帧窗口画面无法显示的问题,降低了窗口丢失率,提升了播放启动动画的流程度,提升了用户体验。
在第一方面的另一种可能的实现方式中,该方法还包括:响应于检测到中断启动操作,停止播放启动动画;其中,中断启动操作用于触发电子设备退出播放启动动画;
若检测到中断启动操作时,启动动画已从第一帧窗口画面播放到了第M帧窗口画面,M为小于N的正整数,则基于第一至第M帧窗口画面对应的M组窗口绘制合成参数,响应于检测到Vsync信号,从启动动画中的第M帧窗口画面播放至第一帧窗口画面。
本方案中,电子设备检测到中断启动操作时,响应于检测到Vsync信号,从启动动画中的第M帧窗口画面逐帧播放至第一帧窗口画面,反向播放第一帧窗口画面至第M帧窗口画面,这样可以提高启动动画退出的流畅度,提升用户感知体验。
在第一方面的另一种可能的实现方式中,该方法还包括:检测到中断启动操作时,根据启动动画的播放时长,以及电子设备播放启动动画的窗口帧率,确定启动动画已经播放到了第M帧窗口画面。
本方案中,电子设备中可能执行不同窗口对应的计算窗口绘制合成参数和绘制合成步骤,而中断的动画以当前显示的窗口为准,根据启动动画执行时长和窗口帧率来计算当前显示在哪一帧确定中断启动操作对应的窗口,这样可以较准确地确认当前窗口为哪一帧窗口画面。
在第一方面的另一种可能的实现方式中,该方法还包括:
响应于预设滑动操作,按照预设滑动操作对应的滑动轨迹,移动启动动画的窗口画面。
本方案中,电子设备按照预设滑动操作对应的滑动轨迹,移动启动动画的窗口画面,这样可以提高用户的观感体验。
在第一方面的另一种可能的实现方式中,响应于应用程序的启动操作,获取N组窗口绘制合成参数,包括:响应于应用程序的启动操作,若检测到应用程序包括预设配置信息,获取N组窗口绘制合成参数。
在第一方面的另一种可能的实现方式中,电子设备包括桌面启动器、显示合成模块和显示屏;响应于应用程序的启动操作,获取N组窗口绘制合成参数,包括:桌面启动器响应于应用程序的启动操作,获取N组窗口绘制合成参数,向显示合成模块发送N组窗口绘制合成参数;显示合成模块接收到N组窗口绘制合成参数;基于已获取的N组窗口绘制合成参数,响应于检测到垂直同步Vsync信号,绘制合成并播放启动动画中的N帧窗口画面,包括:显示合成模块响应于每检测到一个垂直同步Vsync信号,基于N组窗口绘制合成参数中的一组窗口绘制合成参数绘制合成一帧窗口画面,向显示屏发送已绘制合成的一帧窗口画面;显示屏每接收到已绘制合成的一帧窗口画面,播放已绘制合成的一帧窗口画面,直至播放至启动动画中的第N帧窗口画面。
在第一方面的另一种可能的实现方式中,该方法还包括:桌面启动器响应于检测到中断启动操作,向显示合成模块发送中断指令;显示合成模块接收到中断指令,停止播放启动动画;若检测到中断启动操作时,启动动画已从第一帧窗口画面播放到了第M帧窗口画面,M为小于N的正整数,则基于第一至第M帧窗口画面对应的M组窗口绘制合成参数,响应于每检测到一个Vsync信号,基于M组窗口绘制合成参数中的一组绘制合成参数绘制合成一帧窗口画面,向显示屏发送已绘制合成的一帧窗口画面;显示屏每接收到已绘制合成的一帧窗口画面,播放已绘制合成的一帧窗口画面,以从启动动画中的第M帧窗口画面播放至第一帧窗口画面。
在第一方面的另一种可能的实现方式中,该方法还包括:桌面启动器响应于预设滑动操作,向显示合成模块发送窗口画面移动指令;显示合成模块接收到窗口移动指令,按照中断启动操作执行过程中所对应的滑动轨迹,移动启动动画的窗口画面。
在第一方面的另一种可能的实现方式中,基于已获取的N组窗口绘制合成参数,响应于检测到垂直同步Vsync信号,绘制合成并播放启动动画中的N帧窗口画面,包括:响应于检测到第一垂直同步Vsync信号,绘制合成并播放启动动画中的第一帧窗口画面;响应于检测到第二垂直同步Vsync信号,绘制合成并播放启动动画中的第二帧窗口画面。
在第一方面的另一种可能的实现方式中,响应于应用程序的启动操作,获取N组窗口绘制合成参数,包括:响应于应用程序的启动操作,确定应用程序的启动动画包括N帧窗口画面,获取N帧窗口画面对应的N组窗口绘制合成参数。
第二方面,提供了一种电子设备,该电子设备包括处理器和存储器;存储器用于存储代码指令;处理器用于运行代码指令,以执行如第一方面中任一种可能的设计方式中的应用程序启动动画的播放方法。
第三方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行如第一方面中任一种可能的设计方式中的应用程序启动动画的播放方法。
第四方面,提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现第一方面中任一种可能的设计方式中的方法。
其中,第二方面、第三方面和第四方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1示出了一种启动电话应用程序的场景示意图;
图2示出了一种播放电话应用程序启动动画的示意图;
图3示出了一种具有一定透明度的电话应用程序的图标和具有一定透明度的电话应用程序的首帧画面叠加组成的窗口画面的示意图;
图4示出了一种播放电话应用程序对应的启动动画过程中丢帧的示意图;
图5示出了一种播放电话应用程序对应的启动动画过程中丢帧造成的卡顿示意图;
图6示出了一种手机100的结构示意图;
图7示出了一种播放应用程序的启动动画方法的流程示意图;
图8示出了一种动画播放触发信号与播放窗口的关系示意图;
图9示出了一种打断启动动画的场景示意图;
图10示出了一种中断启动操作后的启动动画的播放示意图;
图11示出了一种播放应用程序的启动动画方法的流程示意图;
图12示出了一种中断启动操作后,本申请实施例提供的启动动画播放方法对应的启动动画变化示意图;
图13示出了一种窗口画面随移动轨迹移动的示意图;
图14示出了一种本申请实施例的电子设备的软件结构示意图;
图15基于图14的软件架构,示出了一种现有技术中启动动画的播放过程,以及遇到的技术问题示意图;
图16基于图14的软件结构,示出了一种应用程序启动动画的播放方法的流程示意图;
图17基于图14的软件结构,示出了一种应用程序启动动画的播放方法的流程示意图;
图18基于图14的软件结构,示出了一种应用程序启动动画的播放方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。以下术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。
在本申请实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请实施例中,“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
为了便于更好的说明本申请的技术方案,下面对本申请涉及到的术语做简要概述。
(1)窗口,窗口泛指以“非全屏或全屏”样式打开的所有界面。窗口可以包括以下一种或多种类型的窗口元素:展示类元素、操控类元素。展示类元素可以包括以下一种或多种:图片、视频、文本、图标、横幅(banner)。操控类元素可以包括以下一种或多种:按钮、进度滑块、工具栏。也就是说,动态小窗可以包括以下一种或多种元素:图片、视频、文本、图标、banner、按钮、进度滑块、工具栏等。
(2)帧,帧是指界面显示中最小单位的单幅画面。一帧可以理解为一副静止的画面,快速连续地显示多个连续的帧可以形成物体运动的效果。
(3)窗口帧率,窗口帧率是指在1秒钟时间里刷新窗口的帧数,也可以理解为电子设备中图形处理器每秒钟刷新窗口画面的次数。高的窗口帧率可以得到更流畅和更逼真的动画。每秒钟帧数越多,所显示的动作就会越流畅。
(4)窗口绘制,窗口绘制是指显示界面的窗口绘制。窗口绘制可以由一个或多个视图组成,各个视图可以由视图系统的可视控件绘制,各个视图由子视图组成,一个子视图对应视图中的一个小部件,例如,其中的一个子视图对应图片视图中的一个应用程序的图标。
(5)窗口合成,窗口合成是将多个绘制后的视图合成为窗口的过程。需要说明的是,一般情况下,窗口显示前通常需要经过绘制、合成等过程。
(6)应用程序的首帧画面,在电子设备接收到用户用于启动应用的操作后,该应用可创建并以全屏大窗口的形式显示一个窗口画面,即应用程序的首帧画面,该窗口可称为应用窗口。当用户操作应用窗口中界面的控件时,应用可作出相应的响应。
如前文背景技术中所述,在一些场景中,电子设备检测到信号后,进行某帧窗口画面的窗口绘制合成参数的计算的过程中,可能会因为电子设备负载高、业务叠加和调度线程较多,处理其他业务而导致该帧窗口画面的窗口绘制合成参数的计算被耽搁,进而造成该帧窗口画面的窗口绘制合成参数计算时间较长。且在该段时长中,即使有Vsync信号的触发,也无法绘制合成该些Vsync信号对应的窗口画面,该些窗口画面丢失。如此,电子设备播放应用程序启动动画过程中较长时间停留在该帧窗口画面的前一帧窗口画面,会使人感到应用程序启动动画卡顿。
目前,用户可以通过点击电子设备中应用程序的图标以启动该应用程序。应用程序的启动过程包括电子设备接收用户针对应用程序的图标的点击操作,并响应该点击操作播放应用程序启动动画,直至电子设备全屏显示应用程序的首帧画面。其中,应用程序的首帧画面为应用程序所显示的第一个页面。应用程序对应的动画效果又可以称为应用程序的启动动效。应用程序可以是系统应用程序,也可以是第三方应用程序,第三方应用程序可以是社交应用程序、旅游应用程序、购物应用程序、通信应用程序等。下面以应用程序为电话应用程序为例介绍本方案内容。
例如,图1示出了一种启动电话应用程序的场景示意图。如图1所示,电子设备接收用户针对电话应用程序的图标的点击操作,可以响应该点击操作播放电话应用程序启动动画。
图2示出了一种播放电话应用程序启动动画的示意图。如图2所示,电话应用程序对应的启动动画所包括的四帧窗口画面的变化示意图,该四帧窗口画面分别为A~D所示的窗口。
图1中A帧窗口画面中电话应用程序的图标大小不变,颜色变暗,可以理解,图中不允许用灰度表示,本申请实施例中,将电话应用程序的图标变黑表示变暗,B帧窗口画面中电话应用程序的图标相较于A帧窗口画面中电话应用程序的图标变大;图1中C帧窗口画面中电话应用程序的图标相较于B帧窗口画面中电话应用程序的图标进一步变大;D帧窗口画面中电话应用程序的图标相较于C帧窗口画面中电话应用程序的图标进一步变大。而且从A至D帧,电话应用程序的图标的透明度逐渐变大。
图1中A帧窗口画面中电话应用程序的首帧画面与该帧中的电话应用程序的图标一样大;B帧窗口画面中电话应用程序的首帧画面与该帧中的电话应用程序的图标一样大;图1中C帧窗口画面中电话应用程序的首帧画面与该帧中的电话应用程序的图标一样大;D帧窗口画面中电话应用程序的首帧画面与该帧中的电话应用程序的图标一样大。而且从A至D帧,电话应用程序的首帧画面的透明度逐渐变小。
图3示出了一种具有一定透明度的电话应用程序的图标和具有一定透明度的电话应用程序的首帧画面叠加组成的窗口画面的示意图。
这样,电话应用程序对应的启动动画效果为:整个图1中A帧窗口画面中电话应用程序的图标大小不变,颜色变暗,B帧窗口画面中电话应用程序的图标相较于A帧窗口画面中电话应用程序的图标变大;图1中C帧窗口画面中电话应用程序的图标相较于B帧窗口画面中电话应用程序的图标进一步变大,D帧窗口画面中完全显示电话应用程序的首帧画面。
图4示出了一种播放电话应用程序对应的启动动画过程中丢帧的示意图。如图4所示,电子设备检测到信号后,进行B帧窗口画面的窗口绘制合成参数的计算的过程中,可能会因为电子设备负载高、业务叠加和调度线程较多,处理其他业务而导致B帧窗口画面的窗口绘制合成参数的计算被耽搁,进而造成B帧窗口画面的窗口绘制合成参数计算时间较长。且在该段时长中,即使有Vsync信号的触发,也无法绘制合成该些Vsync信号对应的窗口画面,该些窗口画面丢失,例如C帧窗口画面丢失。如此,电子设备播放应用程序启动动画过程中较长时间停留在B帧窗口画面的前一帧A帧窗口画面,例如,如图5所示,图5所示为播放电话应用程序对应的启动动画过程中丢帧造成的卡顿示意图,会使人感到应用程序启动动画卡顿。需要说明的是,图4和图5中画出两个一样的A帧窗口画面的显示界面,用于说明电子设备播放应用程序启动动画过程中较长时间停留在A帧窗口画面。
为了解决前述技术问题,本申请实施例提出一种应用程序启动动画的播放方法,该方法包括:电子设备响应于应用程序的启动操作,可以获取启动动画所包含的N帧窗口画面对应的N组窗口绘制合成参数。然后,电子设备每接收一个Vsync信号,便可以调用对应帧的窗口绘制合成参数,基于该帧窗口画面窗口绘制合成参数合成对应帧窗口画面,以播放应用程序启动动画中的N帧窗口画面。
在电子设备播放应用程序启动动画的过程中,电子设备可以不需要依次接收到Vsync信号后,依次计算窗口绘制合成参数,再依次基于计算好的窗口绘制合成参数合成对应帧窗口画面。本申请实施例中,电子设备可以提前计算好播放应用程序启动动画中的多帧窗口画面内容对应的多组窗口绘制合成参数,这样,电子设备在检测到Vsync信号后,可以直接基于计算好的窗口绘制合成参数合成对应帧窗口画面。即使电子设备负载高、业务叠加和调度线程较多,也避免了电子设备接受Vsync信号的时间与计算窗口绘制合成参数时长不协调所导致有些帧窗口画面无法显示的问题,降低了窗口丢失率,提升了播放启动动画的流程度,提升了用户体验。
本申请实施例提供的一种应用程序启动动画的播放方法,可以应用在具备显示功能的电子设备中。电子设备可以是手机(mobile phone)、智能电视、穿戴式设备、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请的实施例对电子设备所采用的具体技术和具体设备形态不做限定。
为了能够更好地理解本申请实施例,下面以电子设备为手机为例,对本申请实施例的电子设备的结构进行介绍:
图6示出了一种手机100的结构示意图。如图6所示,手机100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对手机100的具体限定。在本申请另一些实施例中,手机100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。本申请实施例中,处理器110响应于应用程序的启动操作,可以获取启动动画所包含的N帧窗口画面对应的N组窗口绘制合成参数。然后,处理器110每接收一个Vsync信号,便可以调用对应帧的窗口绘制合成参数,基于该帧窗口画面窗口绘制合成参数合成对应帧窗口画面,以播放应用程序启动动画中的N帧窗口画面。
在处理器110播放应用程序启动动画的过程中,处理器110可以不需要依次检测到Vsync信号后,依次计算窗口绘制合成参数,再依次基于计算好的窗口绘制合成参数合成对应帧窗口画面。本申请实施例中,处理器110可以提前计算好播放应用程序启动动画中的多帧窗口画面内容对应的多组窗口绘制合成参数,这样,处理器110在检测到Vsync信号后,可以直接基于计算好的窗口绘制合成参数合成对应帧窗口画面。即使处理器110负载高、业务叠加和调度线程较多,也避免了处理器110接受Vsync信号的时间与计算窗口绘制合成参数时长不协调所导致有些帧窗口画面无法显示的问题,降低了窗口丢失率,提升了播放启动动画的流程度,提升了用户体验。
其中,控制器可以是手机100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对手机100的结构限定。在本申请另一些实施例中,手机100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过手机100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
手机100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。手机100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
在一些实施例中,手机100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得手机100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
手机100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,手机100可以包括1个或N个显示屏194,N为大于1的正整数。
手机100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,手机100可以包括1个或N个摄像头193,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行手机100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储手机100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
手机100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。手机100可以接收按键输入,产生与手机100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和手机100的接触和分离。
图7示出了一种播放应用程序的启动动画方法的流程示意图。如图7所示,该流程包括如下步骤:
步骤701:手机100响应于应用程序的启动操作,确定应用程序在启动过程中所要播放的应用程序启动动画的窗口帧数,窗口帧数为N。
手机100开启应用程序的过程中,会引入一个过渡动画,即应用程序的启动动画,让用户感觉这个过程是流畅的。
手机100响应于应用程序的启动操作,会先确定应用程序在启动过程中所要播放的应用程序启动动画的窗口帧数,以便于后续进一步计算各帧的窗口绘制合成参数。
启动操作用于触发手机100开启应用程序。启动操作可以是用户点击应用程序图标的操作。例如,如图1所示,启动操作可以是用户点击电话应用的图标。
在一些实施例中,手机100可以获取窗口帧率和动画时长,根据窗口帧率和动画时长计算出窗口帧数。具体的,在一些实施例中,手机100可以对窗口帧率和动画时长进行乘积计算,得出窗口帧数。例如,若应用程序的启动动画的动画时长为500ms,窗口帧率为0.1帧每ms,对500和0.1进行乘积计算,得到窗口帧数为50。
可以理解的是,在一些实施例中,有些应用启动动画可以被配置为执行本申请提供的方法,有些应用启动动画可以被配置为不执行本申请提供的方法,是否执行本申请提供的方法的配置信息可以根据实际情况设置。在一些实施例中,手机100响应于应用程序的启动操作后,可以根据是否执行本申请提供的方法的配置信息确定该应用程序是否需要执行本申请提供的方法,若需要,则会确定应用程序在启动过程中所要播放的应用程序启动动画的窗口帧数。若不需要,则执行其他播放应用程序启动动画的方法。
可以理解的是,在一些实施例中,配置信息可以直接用于表明播放该应用程序的启动动画的时候,要执行本申请提供的方法。这样,手机100检测到该配置信息,便会执行本申请实施例提供的方法,首先获取N组窗口绘制合成参数。
可以理解的是,在一些实施例中,手机100可以根据用户的授权,在播放启动动画的时候,执行本申请实施例的方法。例如,手机100在系统设置中,或者应用程序的权限设置中,将该应用需在播放启动动画的时候,执行本申请实施例的方法的权限开启,以使手机100在播放启动动画的时候,执行本申请实施例提供的方法。本申请实施例根据用户意愿设置相应功能,提升了用户体验。
步骤702:手机100获取N组窗口绘制合成参数。
手机100获取N帧窗口画面的N组窗口绘制合成参数,以便手机100基于N组窗口绘制合成参数绘制合成N帧窗口画面。而且,手机100获取N帧窗口画面的N组窗口绘制合成参数,可以在一定程度上避免手机100播放应用程序启动动画的时候,因为手机100负载过高得不到相应的窗口绘制合成参数,使手机100可以及时得到相应的窗口绘制合成参数。
窗口绘制合成参数用于绘制合成图像的表现形式,窗口绘制合成参数包括窗口的平移、缩放、圆角、透明度等信息。
在一些实施例中,手机100可以通过窗口绘制合成参数拟合算法计算出窗口绘制合成参数,以确定N帧窗口画面的N组窗口绘制合成参数。窗口绘制合成参数拟合算法为现有技术,在此不在赘述。
步骤703:手机100接收垂直同步Vsync信号,基于已获取的N组窗口绘制合成参数,播放启动动画中的N帧窗口画面。
手机100基于N组窗口绘制合成参数,绘制合成N帧窗口画面,播放N帧窗口画面,以播放应用程序启动动画。具体的,手机100基于N组窗口绘制合成参数中的第K个窗口绘制合成参数绘制合成第k帧窗口画面,播放第K帧窗口画面,其中,K为整数,K依次在1至N中取值。K依次在1至N中取值表示:手机100基于第1个窗口绘制合成参数绘制合成第1帧窗口画面,播放第1帧窗口画面,直至基于第N组窗口绘制合成参数绘制合成第N帧窗口画面,播放第N帧窗口画面。
可以理解,应用程序对应的启动动画中各帧基于垂直同步(Veticalsynchronization,Vsync)信号显示。具体的,Vsync信号、窗口绘制合成参数和窗口画面一一对应,手机100每接收到一个Vsync信号,便会播放绘制合成一帧窗口画面,并播放一帧窗口画面。
例如,图8示出了一种动画播放触发信号与播放窗口的关系示意图。如图8所示,手机100检测到Vsync信号1后,Launcher可以计算第一帧窗口画面对应的第一个窗口绘制合成参数,显示合成模块可以基于第一个窗口绘制合成参数绘制合成第一帧窗口画面,显示屏播放第一帧窗口画面;手机100检测到Vsync信号2后,Launcher可以计算第二帧窗口画面对应的第二个窗口绘制合成参数,显示合成模块可以基于第二个窗口绘制合成参数绘制合成第二帧窗口画面,显示屏播放第二帧窗口画面;手机100检测到Vsync信号3后,Launcher可以计算第三帧窗口画面对应的第三个窗口绘制合成参数,显示合成模块可以基于第三个窗口绘制合成参数绘制合成第三帧窗口画面,显示屏播放第三帧窗口画面;手机100检测到Vsync信号4后,Launcher可以计算第四帧窗口画面对应的第四个窗口绘制合成参数,显示合成模块可以基于第四个窗口绘制合成参数绘制合成第四帧窗口画面,显示屏播放第四帧窗口画面;手机100检测到Vsync信号5后,Launcher可以计算第五帧窗口画面对应的第五个窗口绘制合成参数,显示合成模块可以基于第五个窗口绘制合成参数绘制合成第五帧窗口画面,显示屏播放第五帧窗口画面;手机100检测到Vsync信号N后,Launcher可以计算第N帧窗口画面对应的第N组窗口绘制合成参数,显示合成模块可以基于第N组窗口绘制合成参数绘制合成第N帧窗口画面,显示屏播放第N帧窗口画面。
应用程序的启动动画在遇到打断后,会停止当前播放的动画。在手势上滑打断场景中,如果进行打断就会出现闪屏和过渡不自然。例如,图9示出了一种打断启动动画的场景示意图。如图9所示,电话应用程序对应的启动动画所包括的四帧窗口画面的变化。该四个帧的变化过程与图1所示的过程相同,在此不再赘述。如图9所示,若在播放B帧窗口画面的时候,手机100检测到用户的手指在显示屏上的上滑操作,则接收到中断启动操作。
可以理解,手机100处于开机状态,且手机100显示应用程序的图标的情况下,手机100可以接收用户针对手机100所显示应用程序的启动指令,并响应于该启动指令启动应用程序。
图10示出了一种中断启动操作后的启动动画的播放示意图。如图10所示,手机100响应于该中断启动操作,播放B帧窗口画面后,直接播放D帧窗口画面,再播放A帧窗口画面。这会给用户一种闪屏和过渡不自然的感知效果,用户感知效果较差。
为了解决上述技术问题,本申请实施例提出了一种播放应用程序的启动动画方法。下文将具体介绍。
图11示出了一种播放应用程序的启动动画方法的流程示意图。如图11所示,该流程包括如下步骤:
步骤1101至步骤1102分别与步骤701至步骤702的技术方案相同,在此不再赘述。
步骤1103:手机100在基于已获取的N组窗口绘制合成参数,播放启动动画中的1帧窗口画面至N帧窗口画面的过程中,响应于中断启动操作,停止播放启动动画;其中,中断启动操作用于触发手机100退出播放启动动画。
步骤1104:手机100检测到Vsync信号,基于M个窗口绘制合成参数,依次播放第M帧窗口画面至第1帧窗口画面。
相关技术中,手机100响应于中断启动操作后,播放第M帧窗口画面后,直接播放第N帧窗口画面,再回到显示应用程序的主界面,这种动画播放过程中相邻窗口显示内容差异较大,流畅度较差。而本申请实施例中,手机100基于已获取的N组窗口绘制合成参数,播放启动动画中的1帧窗口画面至N帧窗口画面的过程中,响应于中断启动操作,停止播放启动动画,反向播放第1帧窗口画面至第M帧窗口画面。反向播放第1帧窗口画面至第M帧窗口画面,这种动画播放过程中相邻窗口显示内容差异较小,流畅程度较高,用户感知上效果也更好。
例如,图12示出了一种中断启动操作后,本申请实施例提供的启动动画播放方法对应的启动动画变化示意图。如图12所示,手机100响应于该中断启动操作,播放B帧窗口画面后,再播放A帧窗口画面。这样整个过程就会很流畅,用户感知上效果也更好。
中断启动操作用于触发电子设备退出播放启动动画,以退出应用程序。例如,如图9所示,手机100检测到用户的手指在显示屏上自显示屏底端向上的上滑操作结束后,则接收到中断启动操作。
可以理解,手机100中可能执行不同窗口对应的计算窗口绘制合成参数和绘制合成步骤,而中断的动画以当前显示的窗口为准,为了较准确地确认当前窗口为哪一帧窗口画面,可以根据启动动画执行时长和窗口帧率来计算当前显示在哪一帧确定中断启动操作对应的窗口。具体的,手机100可以根据启动动画从开始播放至当前的播放时长,以及手机100播放启动动画的窗口帧率,确定中断操作对应的当前帧窗口画面为第M帧。
可以理解,中断操作一般是用户在手机100上的滑动操作形成的。用户在手机100上的滑动操作满足预设条件,才会形成中断操作。例如预设条件可以是用户在手机100上的滑动操作时长大于预设阈值,和/或用户在手机100上的滑动操作所对应的轨迹大于预设长度。在未形成中断操作之前,或者说响应于滑动操作的时候,为了提高用户的观感体验,手机100可以响应于预设滑动操作,停止播放启动动画,基于预设滑动操作执行过程中所对应的滑动轨迹,移动第M帧窗口画面。而且,在滑动操作结束后,未形成中断操作的情况下,可以继续播放启动动画。
例如,图13示出了一种窗口画面随移动轨迹移动的示意图。如图13所示,用户的手指在手机100的显示屏上,从位置O移动至位置O’,该滑动操作执行过程中所对应的滑动轨迹的长度为L1,窗口画面随移动轨迹移动的长度为L2。长度L1可以等于长度L2,大于长度L2,小于长度L2,在此不做限制。
手机100检测到用户的手指在显示屏上自显示屏底端向上的上滑操作过程中,可以停止绘制合成并显示N-M帧窗口画面,基于预设滑动操作执行过程中所对应的滑动轨迹,移动第M帧窗口画面。这样整个过程就会很流畅,用户感知上效果也更好。
手机100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构,等。本申请实施例以分层架构的Android系统为例,示例性说明手机100的软件结构。图14示出了一种本申请实施例的电子设备的软件结构示意图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为五层,从上至下分别为应用层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用层可以包括一系列应用程序包。如图14所示,应用程序包可以包括相机、日历、地图、WLAN、设置、短消息、图库、电话、桌面启动器(Launcher)、蓝牙、视频等应用程序。其中,Launcher用于启动安卓桌面。具体的,本申请实施例中,Launcher可以用于计算窗口绘制合成参数。
应用程序框架层为应用层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图14所示,应用程序框架层可以包括窗口管理服务、活动管理服务、包管理服务、资源管理器、视图系统和窗口帧率管理模块等。
窗口管理服务(window manager service,WMS)用于管理窗口程序。窗口管理服务可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
活动管理服务(ActivityManagerService,AMS)用于管理各个应用程序的生命周期以及导航回退功能。负责Android的主线程创建,各个应用程序的生命周期的维护。
包管理服务用于系统内的程序管理,例如:应用程序安装、卸载和升级等。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
窗口帧率管理模块用于管理和确定终端设备的屏幕刷新窗口帧率。手机100可以从窗口帧率管理模块获取窗口帧率。
系统库包括安卓运行时(Android runtime),Android runtime负责安卓系统的调度和管理。Android runtime包括核心库和虚拟机。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用层和应用程序框架层运行在虚拟机中。虚拟机将应用层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
虚拟机中还运行有显示合成模块(例如,surface flinger)。显示合成模块用于控制图像的合成。
系统库可以包括多个功能模块。例如:图像绘制模块、图像渲染模块、图像合成模块、函数库和媒体库等。
图像绘制模块用于二维或三维图像的绘制。图像渲染模块用于二维或三维图像的渲染。图像合成模块用于二维或三维图像的合成。
可能的实现方式中,应用程序通过图像绘制模块对图像进行绘制,应用程序通过图像渲染模块对绘制后的图像进行渲染,应用程序将渲染后的图像存入显示合成模块的缓存队列中。每当垂直同步信号到来时,显示合成模块(例如,surface flinger)从缓存队列中按顺序获取待合成的一帧窗口画面,然后通过图像合成模块进行图像合成。
函数库提供C语言中所使用的宏、类型定义、字符串操作函数、数学计算函数以及输入输出函数等。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
硬件抽象层,可以包含多个库模块,库模块如可以为硬件配置模块(HardwareComposer,HWC)、摄像头库模块等。Android系统可以为设备硬件加载相应的库模块,进而实现应用程序框架层访问设备硬件的目的。设备硬件可以包括如电子设备中的显示屏、摄像头、音频设备、相机设备、传感器设备等。硬件配置模块代表着硬件显示设备,注册了VSYNC信号的回调。VSYNC信号本身是由显示驱动产生的,当显示合成模块通过硬件配置模块接收到显示驱动发送的VSYNC信号,便会进行图像合成,进而通过显示驱动驱动显示屏显示合成的图像。
内核层是硬件和软件之间的层。内核层用于驱动硬件,使得硬件工作。内核层至少包含显示驱动、摄像头驱动、音频驱动和传感器驱动等。
为方便理解,下面结合附图对本申请实施例中电子设备播放应用程序启动动画过程中涉及的各个模块之间的交互过程进行说明。其中,目标应用程序为电子设备已安装应用程序中的任一应用程序。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图15基于图14的软件架构,示出了一种现有技术中启动动画的播放过程,以及遇到的技术问题示意图。如图15所示,启动动画在某个时刻的窗口属性更新则是通过Vsync信号来控制,具体的,每一次Vsync信号到来后,Launcher根据动画进度来计算下一帧窗口画面的属性值,并通过binder将窗口绘制合成参数发送至显示合成模块,显示合成模块基于接收到的窗口绘制合成参数合成窗口,发送至显示屏显示窗口。
上述整个过程是由system_server、Launcher和显示合成模块(例如Surfaceflinger)配合完成的,一旦遇到system_server或者Launcher动效线程卡顿(负载高、其他业务叠加、调度问题)、Binder线程调度卡顿等场景,很容易导致启动动画播放过程中丢帧,播放应用程序启动动画过程中较长时间停留在丢掉的窗口的前一帧窗口画面,会使人感到应用程序启动动画卡顿,影响用户体验。
例如,若Launcher检测到Vsync信号后,显示合成模块因为负载高、业务叠加和调度线程较多,启动动画中的某帧窗口画面的合成被耽搁,窗口合成的时间较长。直至下一个信号到来之前,仍未合成完成,则会进行下一帧窗口画面的合成,而停止该帧窗口画面的继续合成和显示。
若直至下一个信号到来之前,某一帧或多帧窗口画面被停止合成和显示,则丢掉的窗口的前一帧窗口画面显示时间相比较长,播放应用程序启动动画过程中较长时间停留在丢掉的窗口的前一帧窗口画面,会使人感到应用程序启动动画卡顿,影响用户体验。
此外,当前启动动画在播放过程中遇到打断后,会停止正在进行的动画,恢复正常窗口大小,在手势打断等场景下,很容易出现闪屏、过渡不自然的情况。
因此本申请实施例是用来解决应用打开动画过程中因system_server、Launcher卡顿而导致的动画卡顿以及动画被手势打断不流畅的问题。
下面基于图14的软件架构,先介绍解决动画卡顿的技术方案。
图16基于图14的软件结构,示出了一种应用程序启动动画的播放方法的流程示意图。
如图16所示,该方法包括如下步骤:
步骤1601:Launcher响应于应用程序的启动操作,确定应用程序在启动过程中所要播放的应用程序启动动画的窗口帧数,窗口帧数为N。
步骤1602:Launcher获取N组窗口绘制合成参数。
步骤1603:Launcher向显示合成模块发送N组窗口绘制合成参数。
步骤1604:显示合成模块接收N组窗口绘制合成参数。
步骤1605:显示合成模块每接收到的一个Vsync信号,基于N组窗口绘制合成参数中的每一组窗口绘制合成参数,绘制合成一帧窗口画面。
步骤1606:显示合成模块每绘制合成一帧窗口画面,向显示屏发送已绘制合成的一帧窗口画面。
步骤1607:显示屏基于已绘制合成的一帧窗口画面,显示第1帧窗口画面至第N帧窗口画面。
现有技术中,每一次Vsync信号到来后,Launcher根据动画进度来计算下一帧窗口画面的属性值,并通过binder调用传递至显示合成模块(Surfaceflinger),本申请实施例中,播放启动动画的原理是将动画设置过程与执行过程分离,在动画初始阶段将拟合动效曲线的动画帧窗口画面属性打包下发到显示合成模块,无需每一帧下发;由显示合成模块根据Vsync信号逐帧完成动画的渲染合成送显。采用本申请实施例提供的播放启动动画的方法,所需binder调用次数降低,这样就可以大幅度降低动画过程中的binder调用,减少重载场景下由于binder线程调度不及时导致的动画丢帧/帧间距过大。
系统服务(System Server)随后启动远程动画,桌面会创建应用启动动画,在初始化的时候会读取配置信息来判断是否采用动效下沉方案,当使用动效下沉来做应用启动动画,会对应用启动场景进行筛选,满足后向窗口帧率管理模块获取窗口帧率,根据动画时长计算出窗口帧数;在完成窗口绘制合成参数计算后,通过动效下沉接口将参数模型传递至Surfaceflinger进行合成,这样一来,后续原Launcher、System Server、显示合成模块三方交互来执行动画的过程将由显示合成模块独立完成,明显降低卡顿的风险。
下面基于图14的软件架构,再介绍解决手势打断等场景下,很容易出现闪屏、过渡不自然的技术方案。
图17基于图14的软件结构,示出了一种应用程序启动动画的播放方法的流程示意图。
如图17所示,该方法包括如下步骤:
步骤1701至步骤1704的技术方案与步骤1401至步骤1404的技术方案相同,在此不再赘述。
步骤1705:Launcher在基于已获取的N组窗口绘制合成参数,播放启动动画中的第1帧窗口画面至第N帧窗口画面的过程中,响应于中断启动操作,确定中断指令。
步骤1706:Launcher向显示合成模块发送中断指令。
步骤1707:显示合成模块接收到中断指令,停止播放启动动画。
步骤1708:显示合成模块每接收到的一个Vsync信号,基于M组窗口绘制合成参数中的每一组窗口绘制合成参数,绘制合成一帧窗口画面。
步骤1709:显示合成模块每绘制合成一帧窗口画面,向显示屏发送已绘制合成的一帧窗口画面。
步骤1710:显示屏基于已绘制合成的一帧窗口画面,依次播放第M帧窗口画面至第1帧窗口画面。
图18基于图14的软件结构,示出了一种应用程序启动动画的播放方法的流程示意图。
如图18所示,该方法包括如下步骤:
步骤1704之后,步骤1705之前,所述方法还包括步骤1711至步骤1715:
步骤1711:Launcher响应于预设滑动操作,确定窗口画面移动指令。
步骤1712:Launcher向显示合成模块发送窗口画面移动指令。
步骤1713:显示合成模块接收到窗口画面移动指令,停止绘制合成启动动画中的窗口画面。
步骤1714:显示合成模块向显示屏发送窗口移动指令。
步骤1715:Launcher接收窗口移动指令,停止播放启动动画,基于窗口移动指令中携带的预设滑动操作执行过程中所对应的滑动轨迹,移动第M帧窗口画面。
窗口动画在遇到打断后,会停止当前的动画,在手势上滑打断场景中,如果进行打断就会出现闪屏和过渡不自然。为了解决该技术问题,首先首次检测到手指上滑事件时,会将正在执行的应用启动动画停止,根据执行时长和窗口帧率来计算当前显示在哪一帧,并对当前窗口绘制合成参数进行更新保存,使应用启动动画能够在当前大小停住,随后接入打断逻辑,监听手势滑动位置不断更新窗口绘制合成参数,在松手后能够在当前窗口大小执行返回动画,这样整个过程就会很流畅,用户感知上效果也更好。
本申请实施例可以降低了在应用启动动画执行过程中卡顿的风险,且在执行过程中如果进行了打断操作,衔接过程也很流畅自然,避免了闪屏,提升用户感知。
本申请实施例还提供一种计算机可读存储介质,该计算机存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中手机100执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述计算机执行上述方法实施例中手机100执行的各个功能或者步骤。该计算机可以是上述电子设备(如手机100)。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(Application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读存储介质分发。因此,机器可读存储介质可以包括用于以机器(例如,计算机)可读的形式存储或传播信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于基于因特网以电、光、声或其他形式的传播信号来传播信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读存储介质包括适合于以机器(例如计算机)可读的形式存储或传播电子指令或信息的任何类型的机器可读存储介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (10)
1.一种应用程序启动动画的播放方法,其特征在于,应用于电子设备,所述方法包括:
响应于应用程序的启动操作,获取N组窗口绘制合成参数;其中,所述启动动画包括N帧窗口画面;所述N组窗口绘制合成参数与所述启动动画中的N帧窗口画面一一对应;
基于已获取的所述N组窗口绘制合成参数,响应于检测到垂直同步Vsync信号,绘制合成并播放所述启动动画中的所述N帧窗口画面;其中,所述Vsync信号、所述窗口绘制合成参数和所述窗口画面一一对应。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于检测到中断启动操作,停止播放所述启动动画;其中,所述中断启动操作用于触发所述电子设备退出播放所述启动动画;
若检测到所述中断启动操作时,所述启动动画已从第一帧窗口画面播放到了第M帧窗口画面,M为小于N的正整数,则基于第一至第M帧窗口画面对应的M组窗口绘制合成参数,响应于检测到Vsync信号,从所述启动动画中的第M帧窗口画面播放至第一帧窗口画面。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
检测到所述中断启动操作时,根据所述启动动画的播放时长,以及所述电子设备播放所述启动动画的窗口帧率,确定所述启动动画已经播放到了所述第M帧窗口画面。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
响应于预设滑动操作,按照所述预设滑动操作对应的滑动轨迹,移动所述启动动画的窗口画面。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述响应于应用程序的启动操作,获取N组窗口绘制合成参数,包括:
响应于应用程序的启动操作,若检测到所述应用程序包括预设配置信息,获取所述N组窗口绘制合成参数。
6.根据权利要求1所述的方法,其特征在于,所述电子设备包括桌面启动器、显示合成模块和显示屏;
所述响应于应用程序的启动操作,获取N组窗口绘制合成参数,包括:
所述桌面启动器响应于应用程序的启动操作,获取N组窗口绘制合成参数,向所述显示合成模块发送所述N组窗口绘制合成参数;
所述显示合成模块接收到所述N组窗口绘制合成参数;
所述基于已获取的所述N组窗口绘制合成参数,响应于检测到垂直同步Vsync信号,绘制合成并播放所述启动动画中的所述N帧窗口画面,包括:
所述显示合成模块响应于每检测到一个垂直同步Vsync信号,基于所述N组窗口绘制合成参数中的一组窗口绘制合成参数绘制合成一帧窗口画面,向所述显示屏发送已绘制合成的一帧窗口画面;
所述显示屏每接收到已绘制合成的一帧窗口画面,播放所述已绘制合成的一帧窗口画面,直至播放至所述启动动画中的所述第N帧窗口画面。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述桌面启动器响应于检测到中断启动操作,向所述显示合成模块发送中断指令;
所述显示合成模块接收到所述中断指令,停止播放所述启动动画;
若检测到所述中断启动操作时,所述启动动画已从第一帧窗口画面播放到了第M帧窗口画面,M为小于N的正整数,则基于第一至第M帧窗口画面对应的M组窗口绘制合成参数,响应于每检测到一个Vsync信号,基于所述M组窗口绘制合成参数中的一组绘制合成参数绘制合成一帧窗口画面,向所述显示屏发送已绘制合成的一帧窗口画面;
所述显示屏每接收到已绘制合成的一帧窗口画面,播放所述已绘制合成的一帧窗口画面,以从所述启动动画中的第M帧窗口画面播放至第一帧窗口画面。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述桌面启动器响应于预设滑动操作,向所述显示合成模块发送窗口画面移动指令;
所述显示合成模块接收到所述窗口移动指令,按照所述中断启动操作执行过程中所对应的滑动轨迹,移动所述启动动画的窗口画面。
9.一种电子设备,其特征在于,包括处理器和存储器;所述存储器用于存储代码指令;所述处理器用于运行所述代码指令,使得所述电子设备执行如权利要求1-8中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310815995.6A CN117724781A (zh) | 2023-07-04 | 2023-07-04 | 一种应用程序启动动画的播放方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310815995.6A CN117724781A (zh) | 2023-07-04 | 2023-07-04 | 一种应用程序启动动画的播放方法和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117724781A true CN117724781A (zh) | 2024-03-19 |
Family
ID=90209391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310815995.6A Pending CN117724781A (zh) | 2023-07-04 | 2023-07-04 | 一种应用程序启动动画的播放方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117724781A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118377404A (zh) * | 2024-03-21 | 2024-07-23 | 华为技术有限公司 | 显示方法、图形界面及相关装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060146055A1 (en) * | 2005-01-06 | 2006-07-06 | Raymond Chow | Graphics controller providing for animated windows |
CN114092595A (zh) * | 2020-07-31 | 2022-02-25 | 荣耀终端有限公司 | 一种图像处理方法及电子设备 |
US20220254085A1 (en) * | 2021-02-08 | 2022-08-11 | Beijing Xiaomi Mobile Software Co., Ltd. | Method for playing an animation, device and storage medium |
CN115390957A (zh) * | 2021-05-25 | 2022-11-25 | 华为技术有限公司 | 一种应用程序动效衔接的方法及装置 |
CN115480834A (zh) * | 2021-05-29 | 2022-12-16 | 华为技术有限公司 | 显示方法及电子设备 |
CN115904563A (zh) * | 2021-09-30 | 2023-04-04 | 荣耀终端有限公司 | 应用程序启动中的数据处理方法、装置和存储介质 |
CN115994007A (zh) * | 2021-10-18 | 2023-04-21 | 华为技术有限公司 | 动画效果显示方法及电子设备 |
-
2023
- 2023-07-04 CN CN202310815995.6A patent/CN117724781A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060146055A1 (en) * | 2005-01-06 | 2006-07-06 | Raymond Chow | Graphics controller providing for animated windows |
CN114092595A (zh) * | 2020-07-31 | 2022-02-25 | 荣耀终端有限公司 | 一种图像处理方法及电子设备 |
US20220254085A1 (en) * | 2021-02-08 | 2022-08-11 | Beijing Xiaomi Mobile Software Co., Ltd. | Method for playing an animation, device and storage medium |
CN115390957A (zh) * | 2021-05-25 | 2022-11-25 | 华为技术有限公司 | 一种应用程序动效衔接的方法及装置 |
CN115480834A (zh) * | 2021-05-29 | 2022-12-16 | 华为技术有限公司 | 显示方法及电子设备 |
CN115904563A (zh) * | 2021-09-30 | 2023-04-04 | 荣耀终端有限公司 | 应用程序启动中的数据处理方法、装置和存储介质 |
CN115994007A (zh) * | 2021-10-18 | 2023-04-21 | 华为技术有限公司 | 动画效果显示方法及电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118377404A (zh) * | 2024-03-21 | 2024-07-23 | 华为技术有限公司 | 显示方法、图形界面及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113810587B (zh) | 一种图像处理方法及装置 | |
CN116501210B (zh) | 一种显示方法、电子设备及存储介质 | |
CN114579075B (zh) | 数据处理方法和相关装置 | |
CN113254120B (zh) | 数据处理方法和相关装置 | |
CN114661263B (zh) | 一种显示方法、电子设备及存储介质 | |
CN113132526B (zh) | 一种页面绘制方法及相关装置 | |
CN114461051B (zh) | 帧率切换方法、装置及存储介质 | |
CN116991354A (zh) | 数据处理方法和相关装置 | |
CN114648951A (zh) | 控制屏幕刷新率动态变化的方法及电子设备 | |
CN116052618B (zh) | 一种屏幕刷新率切换方法及电子设备 | |
US20240348869A1 (en) | Refresh rate setting method and related device | |
WO2023001163A1 (zh) | 一种可提升动效性能的屏幕刷新方法及设备 | |
CN117724781A (zh) | 一种应用程序启动动画的播放方法和电子设备 | |
CN115714908B (zh) | 工作模式的切换控制方法、电子设备及可读存储介质 | |
CN114513574B (zh) | 界面显示方法、电子设备及存储介质 | |
CN115686700A (zh) | 渲染方法及电子设备 | |
CN116719587B (zh) | 屏幕显示方法、电子设备及计算机可读存储介质 | |
CN116414337A (zh) | 帧率切换方法及装置 | |
CN115686403A (zh) | 显示参数的调整方法、电子设备、芯片及可读存储介质 | |
CN115904184A (zh) | 数据处理方法和相关装置 | |
WO2024212549A1 (zh) | 一种窗口动画处理方法及电子设备 | |
WO2023124227A9 (zh) | 帧率切换方法及装置 | |
CN117894256B (zh) | 显示处理方法、装置及电子设备 | |
CN117389745B (zh) | 一种数据处理方法、电子设备及存储介质 | |
CN116700578B (zh) | 图层合成方法、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |