CN114995929A - 一种弹窗的显示方法及装置 - Google Patents

一种弹窗的显示方法及装置 Download PDF

Info

Publication number
CN114995929A
CN114995929A CN202111365121.2A CN202111365121A CN114995929A CN 114995929 A CN114995929 A CN 114995929A CN 202111365121 A CN202111365121 A CN 202111365121A CN 114995929 A CN114995929 A CN 114995929A
Authority
CN
China
Prior art keywords
window
animation
parameters
parameter
height
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.)
Granted
Application number
CN202111365121.2A
Other languages
English (en)
Other versions
CN114995929B (zh
Inventor
何旭
刘晶
胡建沛
汤阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202111365121.2A priority Critical patent/CN114995929B/zh
Publication of CN114995929A publication Critical patent/CN114995929A/zh
Application granted granted Critical
Publication of CN114995929B publication Critical patent/CN114995929B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本申请提供了一种弹窗的显示方法、装置、计算机可读存储介质和计算机程序产品,能够使得弹窗在弹出时更加流畅自然,提升用户体验。该方法包括:接收用户的操作;响应于所述操作,生成待显示窗口;确定所述窗口的动效参数,所述动效参数包括缩放参数,所述缩放参数的取值是基于弹性曲线确定的;利用所述动效参数,确定所述窗口的动画效果,所述窗口的动画效果的运动轨迹是基于所述弹性曲线确定的;显示所述窗口的动画效果。

Description

一种弹窗的显示方法及装置
技术领域
本申请涉及电子设备领域,并且更具体地,涉及一种弹窗的显示方法及装置。
背景技术
弹窗是用于向用户展示信息的一类视图。在终端设备上,经常会弹出各种提示小窗口。这些小窗口可用于向用户提示某些信息,或者向用户提供某些操作选项等。当前这些小窗口弹出时所使用的动画效果,是一种缩放和透明度结合的效果。这种动效的弹出效果在窗口弹出时会比较突兀,不够自然,影响用户体验。
发明内容
有鉴于此,本申请提供了一种弹窗的显示方法、装置、计算机可读存储介质和计算机程序产品,能够使得弹窗在弹出时更加流畅自然,提升用户体验。
第一方面,提供了一种弹窗的显示方法,包括:
接收用户的操作;
响应于所述操作,生成待显示窗口;
确定所述窗口的动效参数,所述动效参数包括缩放参数,所述缩放参数的取值是基于弹性曲线确定的;
利用所述动效参数,确定所述窗口的动画效果,所述窗口的动画效果的运动轨迹是基于所述弹性曲线确定的;
显示所述窗口的动画效果。
本申请实施例提供了一种弹窗的显示方法,通过弹性确定窗口的动效参数,所述动效参数包括缩放参数,并利用动效参数生成窗口的动画效果,使得弹窗的运动轨迹更符合物理学弹性运动规律,从而使得弹窗的动画效果更加流畅自然,提升用户体验。
所述弹性曲线是根据弹性曲线参数生成的。本申请实施例对弹性曲线参数如何确定不作具体限定。一种方式,不考虑窗口的高度,使用预设的一套固定的弹性曲线参数。另一种方式,窗口动画扩展模块基于窗口的高度确定与窗口的高度对应的弹性曲线参数。
在一种可能的实现方式中,所述弹性曲线参数是根据所述窗口的高度确定的。因此,对于不同的窗口高度,可以配置不同的弹性曲线参数,以使得窗口的弹出更符合物理规律,提升用户的真实感受。
这里需要说明,一般而言,窗口的尺寸由高度和宽度组成,本申请实施例确定弹性曲线参数可以考虑窗口的高度。比如,窗口的高度越大,那么弹出时的过冲回弹幅度越小,回弹次数越少,动画时长也越短;窗口的高度越小,那么弹出时的过冲回弹幅度越大,回弹次数也越大,动画时长也越长。
在一种可能的实现方式中,所述弹性曲线参数是根据所述窗口的高度确定的,包括:
所述弹性曲线参数是在参数规则模型库中获取的,所述参数规则模型库中包括与所述窗口的高度对应的弹性曲线参数。
在一种可能的实现方式中,所述参数规则模型库按照以下任一方式确定:
所述参数规则模型库是基于窗口的高度所在的高度区间确定的,所述参数规则模型库包括不同的高度区间以及与每个高度区间对应的弹性曲线参数;
所述参数规则模型库是基于窗口的高度占据终端的显示屏高度的比例确定的,所述参数规则模型库包括不同的比例区间,以及与每个比例区间对应的弹性曲线参数。
在一种可能的实现方式中,所述窗口的动画效果由多个帧组成;其中,所述利用所述动效参数,确定所述窗口的动画效果,包括:
窗口动画模块向显示合成***发送每一帧的动效参数;
所述显示合成***基于每一帧的动效参数对图层进行相应的处理,所述处理包括以下任一操作:缩小,或放大;
所述显示合成***对处理后的每一帧图层执行图层混合操作,得到每一帧的画面内容;
其中,所述显示所述窗口的动画效果,包括:
将所述多个帧中每一帧的画面内容逐帧展示在显示屏上。
在一种可能的实现方式中,所述方法还包括:
判断所述窗口的类型;
在确定所述窗口的类型是小窗口类型时,获取所述窗口的高度。
本申请实施例应用的窗口类型是小窗口类型,比如,对话窗口和弹出式窗口。基于本申请实施例的弹窗的显示方法,可以使得小窗口的弹出时更为流畅自然。
可选地,所述弹性曲线参数包括阻尼系数和刚性系数。基于阻尼系数和刚性系数即可确定弹性曲线。应理解,确定弹性曲线还可以包括其他参数,其他参数可以设置为默认值,对此不作具体限定。
可选地,所述动效参数还包括透明度参数。可以理解,动效参数还可以包括其他动画元素的参数,以为用户提供丰富的体验,对此不作具体限定。
第二方面,提供了一种电子设备,包括用于执行第一方面中任一种方法的单元。该电子设备可以是终端设备,也可以是终端设备内的芯片。该电子设备包括输入单元、显示单元和处理单元。
当该电子设备是终端设备时,该处理单元可以是处理器,该输入单元可以是通信接口,该显示单元可以是图形处理模块和屏幕;该终端设备还可以包括存储器,该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该终端设备执行第一方面中的任一种方法。
当该电子设备是终端设备内的芯片时,该处理单元可以是芯片内部的逻辑处理单元,该输入单元可以是输出接口、管脚或电路等,该显示单元可以是芯片内部的图形处理单元;该芯片还可以包括存储器,该存储器可以是该芯片内的存储器(例如,寄存器、缓存等),也可以是位于该芯片外部的存储器(例如,只读存储器、随机存取存储器等);该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该芯片执行第一方面的任一种方法。
在一种实现方式中,所述输入单元用于接收用户的操作;
所述处理单元用于响应于所述操作,生成待显示窗口;确定所述窗口的动效参数,所述动效参数包括缩放参数,所述缩放参数的取值是基于弹性曲线确定的;利用所述动效参数,确定所述窗口的动画效果,所述窗口的动画效果的运动轨迹是基于所述弹性曲线确定的;
所述显示单元用于显示所述窗口的动画效果。
在一种可能的实现方式中,所述弹性曲线是根据弹性曲线参数生成的,所述弹性曲线参数是根据所述窗口的高度确定的。
在一种可能的实现方式中,所述弹性曲线参数是根据所述窗口的高度确定的,包括:
所述弹性曲线参数是在参数规则模型库中获取的,所述参数规则模型库中包括与所述窗口的高度对应的弹性曲线参数。
在一种可能的实现方式中,所述参数规则模型库按照以下任一方式确定:
所述参数规则模型库是基于窗口的高度所在的高度区间确定的,所述参数规则模型库包括不同的高度区间以及与每个高度区间对应的弹性曲线参数;
所述参数规则模型库是基于窗口的高度占据终端的显示屏高度的比例确定的,所述参数规则模型库包括不同的比例区间,以及与每个比例区间对应的弹性曲线参数。
在一种可能的实现方式中,所述窗口的动画效果由多个帧组成;其中,所述处理单元利用所述动效参数,确定所述窗口的动画效果,具体包括:
调用窗口动画模块向显示合成***发送每一帧的动效参数;
所述显示合成***用于基于每一帧的动效参数对图层进行相应的处理,所述处理包括以下任一操作:缩小,或放大;
所述显示合成***用于对处理后的每一帧图层执行图层混合操作,得到每一帧的画面内容;
其中,所述显示单元用于显示所述窗口的动画效果,具体包括:
将所述多个帧中每一帧的画面内容逐帧展示在显示屏上。
在一种可能的实现方式中,所述处理单元还用于:
判断所述窗口的类型;
在确定所述窗口的类型是小窗口类型时,获取所述窗口的高度。
可选地,所述弹性曲线参数包括阻尼系数和刚性系数。基于阻尼系数和刚性系数即可确定弹性曲线。应理解,确定弹性曲线还可以包括其他参数,其他参数可以设置为默认值,对此不作具体限定。
可选地,所述动效参数还包括透明度参数。可以理解,动效参数还可以包括其他动画元素的参数,以为用户提供丰富的体验,对此不作具体限定。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被电子设备运行时,使得该电子设备执行第一方面中的任一种方法。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被电子设备运行时,使得该电子设备执行第一方面中的任一种方法。
附图说明
图1是本申请实施例应用的窗口类型的一个示例图;
图2是欠阻尼状态下的一个曲线示意图;
图3是一种适用于本申请的装置的硬件***的示意图;
图4是一种适用于本申请的装置的软件***的示意图;
图5是本申请实施例的Dialog窗口显示的一个示意***互图;
图6是向用户展示提示信息的一个界面示例图;
图7是本申请实施例的一个窗口动画效果的示例界面图;
图8是一个弹性曲线的示例图;
图9是本申请实施例的弹窗的显示方法的一个示意图;
图10是本申请实施例的弹窗的显示方法的一个示例流程图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
在本申请实施例中,除非另有说明,“多个”的含义可以是两个或两个以上。
本申请实施例提供的弹窗的显示方法可应用于以下弹窗类型:对话窗口(比如Dialog)、弹出式窗口(比如,PopupWindow)以及Dialog窗口和PopupWindow的衍生窗口等。这类窗口也称作小弹窗类型或小窗口类型。
弹窗:可以理解为在特定场景下显示的用于向用户展示信息的视图。比如,当服务器向终端发送通知消息,终端通过弹窗显示该通知消息。又比如,当用户触发某些操作时,终端通过弹窗向用户反馈该操作的相关信息。
参考图1,图1示出了本申请实施例应用的窗口类型的一个示例图。
图1中(1)示出的窗口11是Dialog窗口的一个示例。如图1中(1)所示,用户选中界面中的文本(荣耀)10时,界面中会弹出窗口11。窗口11中显示的内容包含针对文本10的操作选项。针对文本10的操作选项包括但不限于以下选项:全选、剪切、复制、粘贴和分享。窗口11是Dialog窗口的一个示例。
图1中(2)示出的窗口12是PopupWindow窗口的一个示例。如图1中(2)界面所示的窗口12,窗口12中包含终端向用户提供的按钮,比如,强调按钮和其他多个按钮。
应理解,图1中的示例只是便于理解,并不对本申请实施例构成限定。
在用户操作应用程序后,应用程序会向用户展示信息(比如,提示信息或操作选项等)。信息可以窗口为载体呈现给用户。终端可以为窗口添加动画效果,以使得窗口根据动画效果在界面上动态展示。
为了使得窗口在弹出时更为自然,本申请实施例提供了一种弹窗的显示方法,通过弹性曲线确定窗口的动效参数,所述动效参数包括缩放参数,并利用动效参数生成窗口的动画效果,使得弹窗的运动轨迹更符合物理学弹性运动规律,从而使得弹窗的动画效果更加流畅自然,提升用户体验。
本申请实施例涉及弹簧模型算法。此处简单介绍弹簧模型算法的相关知识。
弹性曲线的数学原理为阻尼振动。弹性曲线可以理解为连接弹簧的物体在阻尼振动下产生的曲线。阻尼状态包括临界阻尼、欠阻尼和过阻尼。本申请实施例利用的是弹簧在欠阻尼状态时的弹性曲线。
弹性曲线是基于弹性曲线参数构建的。本申请实施例的弹性曲线参数可以包括弹簧刚性参数(或称作刚性系数,可记作k)和阻尼参数(或称作阻尼系数,可记作γ)。
可选地,弹性曲线参数也可以包括物体质量m,平衡点的初始位移p,以及初速度v。在实际使用中,物体质量m,平衡点的初始位移p,以及初速度v可以认为是初始条件,可以取默认值。基于弹簧刚性参数和阻尼系数即可以确定弹性曲线。
以连接弹簧的物体为例,连接弹簧的物体所受的力包括张力和摩擦力,其中,张力表示为下式:
Ftension=-kx
在上式中,Ftension表示物体所受的张力,x表示物体的弹性位移。
摩擦力表示为下式:
Figure BDA0003360390370000051
在上式中,Ffriction表示物体所受的摩擦力,v为初速度(可以默认为0,或者也可以设置为其他值),
Figure BDA0003360390370000052
表示x的一阶导数,也可表示为
Figure BDA0003360390370000053
t为时间。
同时,根据物体所受的力与加速度的关系可得下式:
Figure BDA0003360390370000054
在上式中,m为物体的质量(一般默认为1),a为物体的加速度,
Figure BDA0003360390370000055
表示x的二阶导数。
因此,物体的位移与时间的关系为如下二阶常微分方程:
Figure BDA0003360390370000056
Figure BDA0003360390370000057
欠阻尼条件为:γ2<4mk,即阻尼比为
Figure BDA0003360390370000058
弹簧在欠阻尼状态下的位移公式如下所示:
x(t)=eβt(c1cosωt+c2sinωt)
其中,x(t)表示物体弹性位移,t为时间,
Figure BDA0003360390370000059
c1=p,
Figure BDA00033603903700000510
Figure BDA00033603903700000511
p为相对于平衡点的初始位移(一般默认为1.0)。
图2中示出了欠阻尼状态下的一个弹性曲线的示例图。如图2所示,横轴表示时间,纵轴表示振幅。从图2中可知,物体在欠阻尼状态下可振动多次。并且,随着时间的推移,物体的振幅逐渐减小,最终达到平衡位置。
过阻尼条件和临界阻尼条件可以参考现有技术的推导,本申请不再赘述。
图3示出了一种适用于本申请的装置的硬件***。
装置100可以是手机、智慧屏、平板电脑、可穿戴电子设备、车载电子设备、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、投影仪等等,本申请实施例对装置100的具体类型不作任何限制。
装置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等。
需要说明的是,图3所示的结构并不构成对装置100的具体限定。在本申请另一些实施例中,装置100可以包括比图3所示的部件更多或更少的部件,或者,装置100可以包括图3所示的部件中某些部件的组合,或者,装置100可以包括图3所示的部件中某些部件的子部件。图3示的部件可以以硬件、软件、或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元。例如,处理器110可以包括以下处理单元中的至少一个:应用处理器(application processor,AP)、调制解调处理器、图形处理器(graphics processing unit,GPU)、图像信号处理器(image signal processor,ISP)、控制器、视频编解码器、数字信号处理器(digital signal processor,DSP)、基带处理器、神经网络处理器(neural-network processing unit,NPU)。其中,不同的处理单元可以是独立的器件,也可以是集成的器件。
在一些可能的实施例中,处理器110用于确定窗口的动效参数,所述动效参数包括缩放参数,所述缩放参数的取值是基于弹性曲线确定的;利用所述动效参数,确定所述窗口的动画效果,所述窗口的动画效果的运动轨迹是基于所述弹性曲线确定的。
示例性地,处理器110用于根据窗口的高度确定弹性曲线参数。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。
图3所示的各模块间的连接关系只是示意性说明,并不构成对装置100的各模块间的连接关系的限定。可选地,装置100的各模块也可以采用上述实施例中多种连接方式的组合。
装置100可以通过GPU、显示屏194以及应用处理器实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194可以用于显示图像或视频。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)、有源矩阵有机发光二极体(active-matrix organic light-emitting diode,AMOLED)、柔性发光二极管(flex light-emitting diode,FLED)、迷你发光二极管(mini light-emitting diode,Mini LED)、微型发光二极管(micro light-emitting diode,Micro LED)、微型OLED(Micro OLED)或量子点发光二极管(quantum dotlight emitting diodes,QLED)。在一些实施例中,装置100可以包括1个或N个显示屏194,N为大于1的正整数。
在一些实施例中,显示屏194可以用于显示窗口的动画效果,窗口的动画效果的运动轨迹是基于弹性曲线确定的。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,例如可以是电阻式压力传感器、电感式压力传感器或电容式压力传感器。电容式压力传感器可以是包括至少两个具有导电材料的平行板,当力作用于压力传感器180A,电极之间的电容改变,装置100根据电容的变化确定压力的强度。当触摸操作作用于显示屏194时,装置100根据压力传感器180A检测所述触摸操作。装置100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令;当触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
触摸传感器180K,也称为触控器件。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,触摸屏也称为触控屏。触摸传感器180K用于检测作用于其上或其附近的触摸操作。触摸传感器180K可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于装置100的表面,并且与显示屏194设置于不同的位置。
上文详细描述了装置100的硬件***,下面介绍装置100的软件***。软件***可以采用分层架构、事件驱动架构、微核架构、微服务架构或云架构,本申请实施例以分层架构为例,示例性地描述装置100的软件***。
如图4所示,采用分层架构的软件***分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,软件***可以分为五层,从上至下分别为应用程序层、应用程序框架层和java***服务层、本地服务层(nativeservice或nativelibraries)、硬件抽象层以及驱动层。
示例性地,应用程序层可以包括相机、图库、日历、通话、地图、导航、WLAN、蓝牙、音乐、视频、短信息等应用程序。
为了向用户展示一些选择信息或提示信息,终端会动态展示一些小窗口。如图4所示,应用程序层可以包括活动(Activity)模块(或者说组件),Dialog模块,PopupWindow模块,视图(View)模块以及视图组(ViewGroup)。
Activity用于展示与用户交互的界面。比如,Activity是一个全屏或分屏的一个界面。Dialog或PopupWindow是用于向用户提示或通知信息的窗口,可展示或附属在Activity中。换种表述,Activity也可以认为是不同于Dialog或PopupWindow类型的窗口。
Dialog或PopupWindow窗口中可以包括View和ViewGroup。其中,View是构成界面的基本元素。View包含丰富的控件,可响应用户的操作事件。比如,当***与用户交互时,***会将事件传递至View模块,然后View模块做出相应的响应操作。换种表述,View是用户接口组件的基本构建块,负责图像界面渲染以及事件处理。示例性地,View在屏幕中占用一个矩形区域,比如,一个按钮或文本框。用户可以通过View模块操作界面。比如,图1中(1)所示的窗口11是Dialog窗口,窗口11中包含的选项(比如,全选、剪切、复制、粘贴和分享)可认为是多个View。
ViewGroup包括多个View(子控件)。ViewGroup可认为是一个特殊的View,能够容纳其他的View。
可以理解,Activity中也可包括View和ViewGroup(为了简洁,图4中未示出)。
应用程序框架层为应用程序层的应用程序提供应用程序编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层可以包括一些预定义的函数。
如图4所示,应用程序框架层和java***服务层中包括活动管理器、窗口管理服务(windowmanagerservice,WMS),窗口动画(Window Animation)模块,资源模块,包管理器服务(packagemanagerservice,PMS),输入管理器。
活动管理器可以提供活动管理服务(activitymanagerservice,AMS),AMS可以用于***组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。
WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入***的中转站。WMS可以创建和管理窗口。WMS是窗口管理器提供的服务。窗口管理器还可以获取显示屏大小,判断是否有状态栏、锁定屏幕和截取屏幕。
窗口动画模块用于在窗口创建完成后,为窗口的展示、消失、隐藏等添加对应的动画,并在屏幕上展示整个动画过程。
资源模块用于加载动画资源,比如,针对Scale动画,可加载Scale动画的变化速率曲线。
在本申请实施例中,应用程序框架层和java***服务层还提供窗口动画扩展(Window Animation Extension)模块。窗口动画扩展模块用于根据窗口的高度确定弹性曲线参数,并利用所述弹性曲线参数配置弹性曲线(或者说弹性插值器)。本申请实施例将所述弹性插值器应用于前文所述的小窗口类型(Dialog、PopupWindow)的弹窗展示。可以理解,本申请对窗口动画扩展模块的形式不作限定,比如,窗口动画扩展模块可以独立于已有的窗口动画模块设置,或者,也可以是在已有的窗口动画模块上的扩展上述窗口动画扩展模块的功能。
输入管理器可以提供输入管理服务(inputmanagerservice,IMS)。IMS可以用于管理***的输入,例如触屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
可选地,应用程序框架层还包括内容提供器、视图***、电话管理器、资源管理器和通知管理器等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频、图像、音频、拨打和接听的电话、浏览历史和书签、以及电话簿。
视图***包括可视控件,例如显示文字的控件和显示图片的控件。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成,例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供装置100的通信功能,例如通话状态(接通或挂断)的管理。
资源管理器为应用程序提供各种资源,比如本地化字符串、图标、图片、布局文件和视频文件。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于下载完成告知和消息提醒。通知管理器还可以管理以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知。通知管理器还可以管理以对话窗口形式出现在屏幕上的通知,例如在状态栏提示文本信息、发出提示音、电子设备振动以及指示灯闪烁。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理、堆栈管理、线程管理、安全和异常的管理、以及垃圾回收等功能。
本地服务层可以包括多个功能模块,例如:三维图形处理库(例如:针对嵌入式***的开放图形库(open graphics library for embedded systems,OpenGL ES)、2D图形引擎(例如:skia图形库(skia graphics library,SGL))、显示合成***(surface flinger)模块、媒体库(Media Libraries)、浏览器内核(Webkit)、安卓运行时(Android Runtime)和核心库。
安卓运行时(Android Runtime)包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
三维图形处理库可以用于实现三维图形绘图、图像渲染、合成和图层处理。
二维图形引擎是2D绘图的绘图引擎。
surface flinger也可称作图层混合模块。surface flinger模块用于图层的混合,并将混合后的图层进行送显,使得窗口中的内容展示在显示屏上。Dialog和Popupwindow在surface flinger模块中都会对应一个图层(layer)实例。
媒体库支持多种音频格式的回放和录制、多种视频格式回放和录制以及静态图像文件。媒体库可以支持多种音视频编码格式,例如:MPEG4、H.264、动态图像专家组音频层面3(moving picture experts group audio layer III,MP3)、高级音频编码(advancedaudio coding,AAC)、自适应多码率(adaptive multi-rate,AMR)、联合图像专家组(jointphotographic experts group,JPG)和便携式网络图形(portable network graphics,PNG)。
浏览器内核用于调用***浏览器。
硬件抽象层是对硬件驱动的封装,为上层提供一个统一的通用接口。如图4所示,硬件抽象层包括摄像头HAL、显示HAL、音频HAL和传感器HAL等。
驱动层是软件栈的最底层。驱动层用于对硬件设备进行管理和控制。驱动层可以包括摄像头驱动、显示驱动、Binder驱动、音频驱动和传感器驱动等驱动模块。
图4中所示的软件架构中,应用程序层和***服务层可以跨进程通信。通信方式可采用进程间通信机制(Binder),也可依赖Binder驱动实现通信。
图4中所示的虚线连接的模块是本申请实施例主要涉及的模块。以下结合图5描述图4中本申请实施例涉及的模块的交互图。
参考图5,图5示出了本申请实施例的Dialog窗口显示的一个示意***互图。如图5所示,包括:
步骤0,应用程序接收用户的操作。
例如,用户的操作是指:用户点击某个按钮,或者说用户触发了某些场景。
例如,以应用程序是短信息为例,如果用户可点击短信中的某段文字,应用程序可以创建窗口,向用户提示可以针对文字的一些操作(包括但不限于全选、剪切、复制、粘贴和分享等,如图1中所示的窗口11)。
一种示例,当用户操作应用程序时,应用程序在某个场景下会进行一些信息提示。这些信息提示通过弹窗(比如,Dialog窗口)展示给用户。
此处结合图6简单描述终端向用户提示信息的示例。图6是一种向用户提示信息的界面示意图。
以终端中的应用程序包括备忘录为例,如图6中(1)所示,针对界面中显示的备忘录中的某个文本,用户可点击分享按钮,将备忘文本进行分享。在用户点击图6中(1)所示的分享按钮后,界面显示如图6中(2)所示的界面。在应用程序接收到用户的分享操作后,会向用户展示与分享相关的信息。比如,如图6中(2)所示,终端通过窗口301向用户提示关于选择分享方式的信息。其中,选择分享方式的信息包括分享为图片、分享为文本、导出为文档以及分享至其他设备等。
在本申请实施例中,终端在可以确定窗口301的动效参数,动效参数中的缩放参数的取值是基于弹性曲线确定的,然后基于该动效参数生成窗口的动画效果,并将动画效果展示在界面上。窗口301在弹出的运动轨迹是基于弹性曲线确定的。这样,窗口301的运动轨迹会更符合物理学弹性运动规律,从视觉可以感受到窗口301的效果更加流畅自然,从而提升了用户体验感。
步骤1,应用程序向WMS发送第一通知。第一通知用于通知WMS新建窗口实例,比如,Dialog窗口。
其中,应用程序和WMS通过跨进程通信机制进行跨进程进行通信(比如Binder)。
步骤2,WMS向应用程序返回响应。所述响应用于响应步骤1中的第一通知,告知应用程序WMS创建Dialog窗口实例成功。
步骤3,应用程序进行界面的测量。
步骤4,在界面测量结束后,应用程序向WMS申请重置Dialog窗口大小。
步骤5,WMS会向显示合成***(比如,SurfaceFlinger)申请创建图层。图层可以理解为缓存区buffer,或者说内存。
步骤6,显示合成***告知WMS图层创建成功。
步骤7,WMS将图层(或者说内存)发送给应用程序。
步骤8,应用程序在获得图层后,进行界面的布局和绘制。
以上步骤1至步骤8是应用程序绘制Dialog窗口的具体步骤。
步骤9,应用程序在绘制完毕后,向WMS发送第二通知。第二通知用于向WMS通知Dialog窗口已经绘制完毕。
步骤10,WMS收到绘制完毕的通知后,向窗口动画模块发起窗口动画,或者说触发窗口动画。
步骤11,窗口动画模块调用资源模块进行动画资源加载。
动画资源加载是指构建动画中的基本元素。比如,动画中的基本元素包括alpha和Scale动画的组合体。
步骤12,资源模块告知窗口动画模块动画资源已经加载成功。
步骤13,窗口动画模块从窗口动画扩展模块获取弹性曲线参数。
弹性曲线参数是窗口动画扩展模块确定的。弹性曲线参数用于构建弹性曲线。本申请对弹性曲线参数如何确定不作具体限定。一种方式,不考虑窗口的高度,使用预设的一套固定的弹性曲线参数。另一种方式,窗口动画扩展模块基于窗口的高度确定与窗口的高度对应的弹性曲线参数,具体确定方法在后文会详细描述。
一个可能的示例,利用弹性曲线作为Scale动画中每一帧的变化速率曲线。
可以理解,这里为了便于理解,引入了窗口动画扩展模块,事实上也可将窗口动画扩展模块的功能新增在窗口动画模块中,即窗口动画模块执行窗口动画扩展模块的功能,对此不作具体限定。
步骤14,在弹性曲线配置完成后,窗口动画模块开始执行动画效果。
步骤15,窗口动画模块向显示合成***发送动效参数(或者说动画效果的参数值)。
其中,窗口动画模块和显示合成***可通过跨进程通信机制进行跨进程进行通信(比如Binder)。窗口动画模块将每一帧的动效参数值发送给显示合成***。
比如,动效参数包括透明度(alpha)参数值和缩放(Scale)参数值。在本申请实施例中,Scale参数值是基于弹性曲线确定的,或者说Scale参数值的变化是按照弹性曲线变化的。弹性曲线是基于弹性曲线参数(即步骤13中获得的弹性曲线参数)构建的。
应理解,在后续的每一帧,窗口动画模块都会通过binder通信将动效参数值下发给显示合成***。
步骤16,显示合成***进行图层混合。
具体地,显示合成***在上接收到窗口动画模块发送的动效参数后,对图层进行相应的处理(比如,缩放),并进行混合送显。混合送显是指将处理后的图层与其他图层进行混合,然后调用显示HAL送显。其中,图层混合是说将前述的每一帧的图层与其他图层进行混合,以获得最终呈现给用户的完整界面图。举例来说,可以将某一帧的图层,与状态栏的图层,Activity图层进行混合。
步骤17,在进行图层混合后,显示合成***调用显示HAL送显。
步骤18,显示HAL通过显示驱动模块显示界面,即播放动画效果。
基于上述步骤17和步骤18,显示合成***通过显示HAL和显示驱动模块,将Dialog窗口的动画效果逐渐(具体即一帧一帧的)展现在终端屏幕上。
应理解,以上交互流程只是示例性地描述,并不对本申请实施例限定。事实上,本领域技术人员基于以上流程也可以获知其他窗口的动画效果显示过程,包括但不限于PopupWindow。示例性地,PopupWindow显示的交互流程与图5中的交互流程基本相同。
图7示出了本申请实施例的一个窗口的动画效果的示例界面图。从图7中(1)的窗口401、图7中(2)所示的窗口402以及图7中(3)所示的窗口403可知,窗口依次按照从小到大的趋势展示或播放。从图7中(3)所示的窗口403、图7中(4)所示的窗口404以及图7中(5)可以看到,窗口以及按照从大到小的趋势展示或播放。最终,在动画播放完成后,呈现给用户的界面是图7中(5)所示的窗口405。
其中,图7中(5)所示的窗口405可认为是原始窗口(或者说窗口的实际大小)。图7中(2)所示的窗口402和图7中(5)所示的窗口405大小(大小是指窗口的面积)相同。所谓窗口大小相同包括窗口的高度相同。相比于原始窗口,图7中所示的窗口401、窗口403、窗口404可以认为是以原始窗口为参考来回振荡,来实现弹性动画的效果。在图7中(1)至图7中(5)所示的界面中,窗口振荡的趋势或者说运动轨迹是弹性曲线。即,利用物理弹簧的变化原理,实现过冲回弹的效果。举例来说,弹性曲线参数可由窗口405(或窗口402)的高度决定。
应理解,图7中仅示出了窗口405基于弹性曲线播放动画效果时的部分窗口变化趋势,本申请并不限于此。
可以理解,图7中所示的窗口只是示例性描述,并不对本申请实施例构成限定,比如,图1中所涉及的窗口11或窗口12也可以利用弹簧的变化原理实现相应的动画效果,获得更为自然的用户体验。
还应理解,本申请实施例对动画效果的时长不作限定。比如,动画效果的总体时长可以在280ms至330ms之间。这里将动画效果的总体时长简称动画时长。动画时长是指窗口从弹出到最后静止在屏幕上的持续时长。动画时长来自于物理弹簧模型。下文会结合图8中的示例进行描述。
参考图8,图8中示出的是一个弹性曲线的示例图。图7中所示的窗口的运动轨迹可以由图8中所示的弹性曲线决定。应理解,图7中示出的只是部分窗口的变化趋势,并非与图8中所示的弹性曲线对应的窗口的全部变化趋势,本申请并不限于此。
如图8中所示,动画时长即为弹簧在偏移平衡点一定距离后,再次到达平衡点位置并且最终静止时的时间跨度。在图8中,弹性曲线存在多个波峰,每个波峰相对于平衡点位置称作过冲回弹幅度。平衡点位置是指连接弹簧的物体静止时的位置。图8中示出的平衡点位置即物体在振动后静止的位置。对于图7中所示的窗口而言,平衡点位置即窗口原本的大小,即图7中(2)所示的窗口402和图7中(5)所示的窗口405。
图9是本申请实施例的弹窗的显示方法的一个示意图。如图9所示,所述方法包括:
S601,接收用户的操作。
所述操作可以是用户在使用应用程序时的某个操作。本申请实施例对操作的具体内容不作限定。示例性地,该操作包括:用户的手动操作,或用户通过语音发出的操作指令等。示例性地,用户的手动操作包括:点击按键或屏幕、滑动屏幕、触摸屏幕、长按屏幕等等。
在用户执行操作后或者说用户触发了某些场景下,应用程序会向用户展示一些信息。在一个示例中,如图6中(2)所示,终端通过窗口301向用户提示信息。
作为一个可能的示例,S601可参考前文图5中步骤0的描述,这里不再赘述。
在一个示例中,用户的操作可以是图6中(1)所示的点击分享按钮操作。
S602,响应于所述操作,生成(或者说绘制)待显示窗口。
在接收到用户的操作后,可以执行生成窗口的操作,然后通过窗口向用户展示一些提示信息。
本申请实施例应用于小窗口类型,这里生成的待显示窗口即为前文所提及的弹窗类型(或者说小弹窗)。这里不再赘述具体描述。
生成窗口主要包括以下步骤:测量、布局、绘制等。本申请对生成窗口的方式不作具体限定。
在一种可能的实现方式中,生成待显示窗口可具体包括以下步骤:创建窗口实例;测量界面;重置窗口实例的大小;获取窗口的图层;在获得窗口的图层后,进行界面的布局,并绘制窗口。
在一些实施例中,生成Dialog窗口可以参考前文图5中步骤1至步骤8的描述,这里不作赘述。
S603,确定所述窗口的动效参数,所述动效参数包括缩放参数,所述缩放参数的取值是根据弹性曲线确定的。
动效参数用于生成所述窗口的动画效果。动效参数可以理解为动画效果的参数。基于动效参数可以为窗口添加动画效果。
在本申请实施例中,动效参数中可以包括缩放参数,缩放参数的取值是基于弹性曲线确定的,或者说,缩放参数的取值是按照弹性曲线变化的。
作为一种可能的实现方式,缩放参数可以是Scale参数。Scale参数的取值的变化是按照弹性曲线变化的。
可以理解,所述动效参数还可以包括其他动画原始的参数,对此不作具体限定。
一种可能的实现方式,可选地,所述动效参数还可以包括透明度参数。
如前文所述,弹性曲线是基于弹性曲线参数构建的。可选地,所述弹性曲线参数可以包括刚性参数和阻尼参数。刚性参数和阻尼参数可以用于构建弹性曲线,或者说构建弹性插值器。当然,所述弹性曲线参数还可以包括其他参数,比如,物体质量m,平衡点的初始位移p,以及初速度v等。如前文所述,在具体应用中,这些参数可以作为初始条件取默认值。
在本申请实施例中,在确定弹性曲线参数时可以将窗口高度作为考虑因素,也可以不考虑窗口高度,对此不作具体限定。
作为一种可能的实现方式,对于不同高度的窗口,可以使用固定弹性曲线参数,或者说利用同一弹性曲线展示窗口的动画效果。即上述弹性曲线参数不跟随窗口的高度变化。
作为一种可能的实现方式,弹性曲线参数可以根据窗口的高度动态调整,或者说,不同高度的窗口利用不同的弹性曲线进行展示。
示例性地,根据所述窗口的高度确定弹性曲线参数,包括:根据所述窗口的高度,在参数规则模型库中获取与所述窗口的高度对应的弹性曲线参数。
所述参数规则模型库是基于窗口的高度构建的。通过窗口的高度,可在参数规则模型库中获得对应的弹性曲线参数。本申请实施例对如何基于窗口的高度确定所述参数规则模型库的形式不作限定。
举例来说,可以针对不同的高度,确定(或者说定制)对应的弹性曲线(或者说弹性曲线参数),与高度对应的弹性曲线是体验最佳的动效曲线。弹性曲线的确定可依据以下原则:高度较大的窗口,过冲回弹幅度越小,过冲回弹越过平衡点位置的次数越少;高度较小的窗口,过冲回弹幅度越大,过冲回弹越过平衡点位置的次数也越多。本申请实施例可以此为原则,确定不同高度对应的弹性曲线参数。或者说,本申请实施例可以基于人的感受或者先验值,调试与不同的高度对应的弹性曲线参数,以达到预先建立参数规则模型库的目的。所述参数规则模型库中包括不同的高度,以及针对每个高度定制的弹性曲线参数。
其中,过冲回弹幅度是指物体偏移平衡点位置的最大幅度,结合前文图8中的曲线为例,过冲回弹幅度是指弹性曲线的某个波峰与平衡点的距离;对于窗口而言,过冲回弹幅度指的是弹窗的最大缩放比例。以图8中的为例,每个波峰相比于平衡点的位置即为过冲回弹幅度。平衡点位置是指连接弹簧的物体在静止时的位置(此时摩擦力和弹簧的弹力一致);在弹窗场景中,平衡点位置可以理解为窗口的实际大小。
一种可能的实现方式,可以将窗口的高度按照不同的高度区间划分。所述参数规则模型库是基于窗口的高度所在的高度区间创建的。所述参数规则模型库中包括多个高度区间,以及,与每个高度区间对应的一套弹性曲线参数。
示例性地,可以针对不同的高度区间,确定(或者说定制)对应的弹性曲线(或者说弹性曲线参数)。确定弹性曲线的原则可参考上文描述,这里不再赘述。
另一种可能的实现方式,所述参数规则模型库是基于窗口的高度占据终端的显示屏高度的比例(简称窗口的高度比例)创建的。所述参数规则模型库包括多个高度比例区间,以及,与每个高度比例区间对应的一套弹性曲线参数。
示例性地,也可以针对不同的高度比例区间,确定对应的弹性曲线(或者说弹性曲线参数)。确定弹性曲线的原则可参考上文描述,这里不再赘述。
举例来说,可以根据窗口的高度比例,将弹簧的过冲幅度以及时间(即动画持续时长)进行分层,获得每个高度比例区间对应的弹性曲线参数。
比如,以下表1给出了窗口的高度比例区间与弹性曲线参数的示例。
表1
Figure BDA0003360390370000131
以表1中的第一套弹性曲线参数为例说明,对于窗口的高度低于窗口
Figure BDA0003360390370000132
屏幕高度而言(即窗口的高度比例位于
Figure BDA0003360390370000141
区间中),第一套弹性曲线参数可以达到以下效果:窗口放大的最大比例要大一些,回弹次数(即窗口放大至超过窗口大小本身的次数)较多,动画时长也会较长一些。
以表1中的第三套弹性曲线参数为例说明,对于窗口的高度高于窗口
Figure BDA0003360390370000142
屏幕高度而言(即窗口的高度比例位于
Figure BDA0003360390370000143
区间中),第三套弹性曲线参数可以达到以下效果:窗口放大的最大比例要小一些,回弹次数(即窗口放大至超过窗口大小本身的次数)较小,动画时长也会较短一些。
应理解,表1中的示例只是示例,并不对本申请实施例构成限定。
可以理解,上述关于参数规则模型库的描述只是举例描述,本申请并不限于此。
在得到与窗口的高度对应的弹性曲线参数后,可以利用弹性曲线参数构建弹性曲线,以便基于弹性曲线覆盖原有的动效曲线(比如,覆盖已经加载的动画效果中Scale动画的变化速率曲线)。
S604,利用所述动效参数,确定所述窗口的动画效果,所述窗口的动画效果的运动轨迹是基于所述弹性曲线参数确定的。或者说,所述窗口的动画效果的运动轨迹就是S603中的所述弹性曲线,所述弹性曲线是基于所述弹性曲线参数构建的。
具体而言,利用所述动效参数确定所述窗口的动画效果,包括:先利用弹性曲线参数构建弹性曲线,然后利用构建的弹性曲线覆盖或替换已经加载的动画效果中的变化曲线。
举例来说,S604包括:窗口动画模块向显示合成***发送每一帧的动效参数;
所述显示合成***基于每一帧的动效参数对图层进行相应的处理,获得每一帧对应的窗口内容,所述处理包括以下任一操作:缩小,或放大;
所述显示合成***对处理后的每一帧图层执行图层混合操作,得到每一帧的画面内容。
需要说明的是,窗口动画模块可以将每一帧的动效参数值下发给显示合成***模块(即图4中所示的SurfaceFlinger)。SurfaceFlinger收到窗口动画模块下发的每一帧的动效参数值后,可对每一帧的图层进行相应处理。举例来说,窗口动画模块将所述缩放参数发送给SurfaceFlinger;比如,假设图层的绘图数据为1,如果SurfaceFlinger接收到缩放参数是0.5,那么将当前图层的绘图数据缩放到0.5,即将图层的显示面积缩小到原始图层的0.5倍。其中,缩放参数的取值是基于弹性曲线确定的。进一步地,SurfaceFlinger对处理后的图层进行图层混合,以便后续送显。图层混合的描述可以参考前文,这里不再赘述。
S605,显示所述窗口的动画效果。
具体地,所述窗口的动画效果由多个帧组成。显示窗口的动画效果是指:将所述多个帧中每一帧的画面内容逐渐(或者说逐帧)展现或者播放在终端的显示屏上。所述窗口的动画效果在播放时的运动轨迹是按照所述弹性曲线参数确定的。
可选地,显示所述窗口的动画结果,包括:调用显示HAL和显示驱动播放所述动画效果。显示HAL和显示驱动如图4中所示。
作为一个可能的示例,显示所述窗口的动画效果可以参考前文图5中步骤17和步骤18的描述。
在本申请实施例中,可通过确定弹性曲线参数,并利用弹性曲线替换已经加载的动画效果的变化曲线,以使得弹窗的运动轨迹更符合物理规律,这样弹窗的动画效果在播放时会更加流畅自然,提升用户体验。进一步地,本申请实施例可以根据窗口的高度动态调整弹性曲线参数,这样使得不同的窗口的高度的动画效果更符合真实感受,极大提升用户体验。
示例性地,采用本申请实施例的技术方案确定图6中的窗口301的动画效果,图6中的窗口301在弹出时的运动轨迹更符合物理规律。窗口301的动画效果在播放时会更加自然,从而提升用户使用感受。
本申请实施例适用于小窗口类型。在具体实现时,可先判断窗口的类型,或者说判断窗口是哪种类型的窗口。
可选地,在S603之前,所述方法还包括:判断所述窗口的类型;在确定所述窗口的类型是小窗口类型时,执行S603。
也就是说,可先判断应用程序绘制的窗口是哪种类型的窗口,如果是小窗口类型(比如,前文提到的Dialog窗口,PopupWindow窗口,以及,Dialog窗口和PopupWindow的衍生窗口),那么可以应用本申请实施例的技术方案;如果不是小窗口,那么无需对窗口的动画资源进行修改。
作为一种实现方式,在确定所述窗口的类型是小窗口类型时,获取所述窗口的高度。换种表述,在判断当前窗口是小窗口类型时,才获取窗口的高度,以便基于窗口的高度确定弹性曲线参数。
需要说明的是,这里在判断窗口是小窗口类型时,获取窗口的高度是针对基于窗口的高度确定弹性曲线参数的实现方式而言的。而对于在确定弹性曲线参数时不考虑窗口高度的实现方式,在判断窗口是小窗口类型时,可以不获取窗口的高度。
为了便于理解,以下结合图10中的流程图进行描述。如图10所示,该流程包括步骤801-步骤808。示例性地,图10中涉及的步骤802至步骤806可通过前文图4或图5中所示的窗口动画扩展模块执行;步骤801通过前文图4或图5中所示的资源模块执行;步骤808可通过前文图4或图5中所示的显示合成***执行。
步骤801,加载动画资源。
加载动画资源可以理解为加载构建动画效果的基本元素或属性。可选地,所述动画资源中包括Scale动画。
可以理解,这里对动画资源的内容不作具体限定,动画资源还可以包含其他动画效果的资源。比如,动画效果还可以包括淡入淡出(即透明度改变)的动画等。
作为一种可能的示例,步骤801可参考前文图5中步骤11的描述。
步骤802,判断窗口是否为小窗口。
本申请实施例应用于小窗口类型。这里设置步骤802的目的在于:识别窗口的类型。如果窗口的类型是小窗口类型,才需要获取窗口的高度,后续才能基于窗口的高度确定弹性曲线参数,以便后续修改动画资源;如果不是小窗口类型,则不需要修改动画资源。
示例性地,对于根据窗口的高度确定弹性曲线参数的实现方式,如果步骤802判断出窗口是小窗口,则执行步骤803。如果不是小窗口,则执行步骤807。
步骤803,获取窗口的高度。
窗口的大小(或者说尺寸)可包括高度和宽度。
在一种实现方式中,本申请实施例获取窗口的高度,然后通过窗口的高度确定弹性曲线参数。
步骤804,根据窗口的高度,确定弹性曲线参数。
作为一种可能的实现方式,根据窗口的高度,确定弹性曲线参数,包括:在参数规则模型库中获取与所述窗口的高度对应的弹性曲线参数。关于参数规则模型库的相关描述可以参考前文S603处的描述,这里不再赘述。
当然,对于在确定弹性曲线参数时不考虑窗口高度的实现方式,上述步骤803可以省略,步骤804可以替换为获取预设的弹性曲线参数。也就是说,在步骤802后,不需要获取窗口的高度,使用一套固定的弹性曲线参数即可。
步骤805,根据弹性曲线参数构建弹性曲线(即弹性插值器)。
示例性地,若步骤804中确定的弹性曲线参数包括刚性系数和阻尼系数,则基于刚性系数和阻尼系数,可以构建出弹性曲线。
步骤806,利用弹性曲线覆盖已经加载的动画资源中的动画曲线。
举例来说,假设步骤801中加载的动画资源包括Scale动画,那么在步骤806处可以利用弹性曲线覆盖已经加载的Scale动画的变化速率曲线,或者说,利用弹性插值器覆盖Scale插值器。
步骤807,不修改已经加载的动画资源。
步骤808,执行动画效果。
针对步骤806,步骤808按照步骤806中的动画资源(即利用弹性曲线覆盖已经加载的动画曲线后的动画资源),执行窗口的动画效果。
针对步骤807,即如果不是小窗口类型,那么无需修改步骤801中加载的动画资源,步骤808按照步骤801中加载的动画资源执行动画效果即可。
应理解,上述图10所示的流程是本申请实施例的一个考虑窗口的高度确定弹性曲线参数的具体示例流程,但是并不对本申请实施例构成限定。事实上,在确定弹性曲线参数时也可以不考虑窗口的高度,即不论哪种高度的窗口,均使用预设的弹性曲线参数。
由上可知,本申请提供的弹窗的显示方法,能够使得弹窗在弹出时更加流畅自然,提升用户体验。
本申请还提供了一种计算机程序产品,该计算机程序产品被处理器执行时实现本申请中任一方法实施例所述的方法。
该计算机程序产品可以存储在存储器中,经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器执行的可执行目标文件。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本申请中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
该计算机可读存储介质可以是易失性存储器或非易失性存储器,或者,可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。
本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个***。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
另外,本文中术语“***”和“网络”在本文中常被可互换使用。本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
总之,以上所述仅为本申请技术方案的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种弹窗的显示方法,其特征在于,包括:
接收用户的操作;
响应于所述操作,生成待显示窗口;
确定所述窗口的动效参数,所述动效参数包括缩放参数,所述缩放参数的取值是基于弹性曲线确定的;
利用所述动效参数,确定所述窗口的动画效果,所述窗口的动画效果的运动轨迹是基于所述弹性曲线确定的;
显示所述窗口的动画效果。
2.根据权利要求1所述的方法,其特征在于,所述弹性曲线是根据弹性曲线参数生成的,所述弹性曲线参数是根据所述窗口的高度确定的。
3.根据权利要求2所述的方法,其特征在于,所述弹性曲线参数是根据所述窗口的高度确定的,包括:
所述弹性曲线参数是在参数规则模型库中获取的,所述参数规则模型库中包括与所述窗口的高度对应的弹性曲线参数。
4.根据权利要求3所述的方法,其特征在于,所述参数规则模型库按照以下任一方式确定:
所述参数规则模型库是基于窗口的高度所在的高度区间确定的,所述参数规则模型库包括不同的高度区间以及与每个高度区间对应的弹性曲线参数;
所述参数规则模型库是基于窗口的高度占据终端的显示屏高度的比例确定的,所述参数规则模型库包括不同的比例区间,以及与每个比例区间对应的弹性曲线参数。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述窗口的动画效果由多个帧组成;其中,所述利用所述动效参数,确定所述窗口的动画效果,包括:
窗口动画模块向显示合成***发送每一帧的动效参数;
所述显示合成***基于每一帧的动效参数对图层进行相应的处理,所述处理包括以下任一操作:缩小,或放大;
所述显示合成***对处理后的每一帧图层执行图层混合操作,得到每一帧的画面内容;
其中,所述显示所述窗口的动画效果,包括:
将所述多个帧中每一帧的画面内容逐帧展示在显示屏上。
6.根据权利要求1至5中任一项所述的方法,其特征在于,在确定所述窗口的动效参数前,所述方法还包括:
判断所述窗口的类型;
其中,所述确定所述窗口的动效参数,包括:
在确定所述窗口的类型是小窗口类型时,确定所述窗口的动效参数。
7.根据权利要求2至6中任一项所述的方法,其特征在于,所述弹性曲线参数包括阻尼系数和刚性系数。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述动效参数还包括透明度参数。
9.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和所述存储器耦合,所述存储器用于存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行权利要求1至8中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至8中任一项所述的方法。
11.一种芯片,其特征在于,包括处理器,当所述处理器执行指令时,所述处理器执行如权利要求1至8中任一项所述的方法。
12.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被运行时,使得计算机执行如权利要求1至8中任一项所述的方法。
CN202111365121.2A 2021-11-17 2021-11-17 一种弹窗的显示方法及装置 Active CN114995929B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111365121.2A CN114995929B (zh) 2021-11-17 2021-11-17 一种弹窗的显示方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111365121.2A CN114995929B (zh) 2021-11-17 2021-11-17 一种弹窗的显示方法及装置

Publications (2)

Publication Number Publication Date
CN114995929A true CN114995929A (zh) 2022-09-02
CN114995929B CN114995929B (zh) 2023-04-21

Family

ID=83017921

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111365121.2A Active CN114995929B (zh) 2021-11-17 2021-11-17 一种弹窗的显示方法及装置

Country Status (1)

Country Link
CN (1) CN114995929B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117271042A (zh) * 2023-11-08 2023-12-22 荣耀终端有限公司 切换应用的方法和电子设备
WO2024098713A1 (zh) * 2022-11-11 2024-05-16 中兴通讯股份有限公司 终端桌面的显示方法、终端、计算机可读介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130086516A1 (en) * 2011-10-01 2013-04-04 Oracle International Corporation Moving an object about a display frame by combining classical mechanics of motion
CN107317853A (zh) * 2017-06-20 2017-11-03 北京金山安全软件有限公司 消息弹窗动效展示方法、装置及***
CA3054877A1 (en) * 2018-09-13 2020-03-13 10353744 Canada Ltd. Method, apparatus and computer device for implementing pop-up window in hybrid interface application
CN111552425A (zh) * 2020-04-24 2020-08-18 北京小米移动软件有限公司 一种控制小窗显示的方法、装置及存储介质
CN112051952A (zh) * 2020-09-27 2020-12-08 平安普惠企业管理有限公司 图片动态浏览方法、装置、电子设备及可读存储介质
CN113298916A (zh) * 2020-07-14 2021-08-24 阿里巴巴集团控股有限公司 用于调整曲线的交互方法、装置和电子设备
CN113552987A (zh) * 2021-04-20 2021-10-26 华为技术有限公司 图形界面显示方法、电子设备、介质以及程序产品
CN113568549A (zh) * 2021-04-20 2021-10-29 华为技术有限公司 图形界面显示方法、电子设备、介质以及程序产品

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130086516A1 (en) * 2011-10-01 2013-04-04 Oracle International Corporation Moving an object about a display frame by combining classical mechanics of motion
CN103842952A (zh) * 2011-10-01 2014-06-04 甲骨文国际公司 结合经典运动力学关于显示框移动对象
CN107317853A (zh) * 2017-06-20 2017-11-03 北京金山安全软件有限公司 消息弹窗动效展示方法、装置及***
CA3054877A1 (en) * 2018-09-13 2020-03-13 10353744 Canada Ltd. Method, apparatus and computer device for implementing pop-up window in hybrid interface application
CN111552425A (zh) * 2020-04-24 2020-08-18 北京小米移动软件有限公司 一种控制小窗显示的方法、装置及存储介质
CN113298916A (zh) * 2020-07-14 2021-08-24 阿里巴巴集团控股有限公司 用于调整曲线的交互方法、装置和电子设备
CN112051952A (zh) * 2020-09-27 2020-12-08 平安普惠企业管理有限公司 图片动态浏览方法、装置、电子设备及可读存储介质
CN113552987A (zh) * 2021-04-20 2021-10-26 华为技术有限公司 图形界面显示方法、电子设备、介质以及程序产品
CN113568549A (zh) * 2021-04-20 2021-10-29 华为技术有限公司 图形界面显示方法、电子设备、介质以及程序产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
夏德冰等: "Android应用中一种Activity窗口管理***", 《计算机***应用》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024098713A1 (zh) * 2022-11-11 2024-05-16 中兴通讯股份有限公司 终端桌面的显示方法、终端、计算机可读介质
CN117271042A (zh) * 2023-11-08 2023-12-22 荣耀终端有限公司 切换应用的方法和电子设备
CN117271042B (zh) * 2023-11-08 2024-04-19 荣耀终端有限公司 切换应用的方法和电子设备

Also Published As

Publication number Publication date
CN114995929B (zh) 2023-04-21

Similar Documents

Publication Publication Date Title
JP6516790B2 (ja) コントロールの外観を調整するためのデバイス、方法及びグラフィカルユーザインタフェース
US20220191653A1 (en) Layers in messaging applications
US9418171B2 (en) Acceleration of rendering of web-based content
US7536645B2 (en) System and method for customizing layer based themes
KR101025949B1 (ko) Xml 표현에서 z-order 엘리먼트들의 정밀립 제어
KR100992022B1 (ko) 실행 시간에 이동 장치에 추상적 사용자 인터페이스의 동적매핑 시스템 및 방법
US20190324777A1 (en) System and methods for a run time configurable user interface controller
CN114995929B (zh) 一种弹窗的显示方法及装置
WO2021008334A1 (zh) 小程序的数据绑定方法、装置、设备及存储介质
CN108984707B (zh) 分享个人信息的方法、装置、终端设备及存储介质
WO2021008295A1 (zh) 小程序的制作方法、装置、终端及存储介质
CN109445891B (zh) 画面组态及展示方法、装置、计算机可读存储介质
WO2022247541A1 (zh) 一种应用程序动效衔接的方法及装置
CN114115870A (zh) 用户接口界面实现方法及装置
CN115640083A (zh) 一种可提升动效性能的屏幕刷新方法及设备
CN113676677B (zh) 动态图片合成方法、装置、电子设备及可读存储介质
CN115220621A (zh) 图形界面显示方法、电子设备、介质以及程序产品
CN116974446B (zh) 一种动画效果的显示方法及装置
CN108509331A (zh) 测试方法和装置
CN117806744A (zh) 控件显示方法及电子设备
CN115617427A (zh) 应用的跨平台显示方法、可读介质和电子设备
CN116450066A (zh) 分屏显示方法、电子设备及可读存储介质
Rischpater et al. Doing More with Qt
CN116048373A (zh) 悬浮球控件的显示方法、电子设备以及存储介质
JP2009020517A (ja) 表示データ作成装置、表示データ作成方法、表示データ作成プログラム、および表示データ作成プログラムを記録したコンピュータ読取り可能な記録媒体

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
GR01 Patent grant
GR01 Patent grant