UI控件水幕显示方法及装置与流程

文档序号:12362758阅读:223来源:国知局
UI控件水幕显示方法及装置与流程

本发明涉及智能终端领域,更为具体地,涉及用于对UI控件水幕显示方法及装置。



背景技术:

水幕电影是通过高压水泵和特制水幕发生器,将水自下而上高速喷出,水雾化后形成“银幕”,由专用放映机将特制的录影带投射在“银幕”上,形成水幕电影。观众在观摩电影时,水幕和自然夜空融为一体,画面的立体感和空间感都给观众带来非凡的视觉体验。用户在使用终端时,开始追求在终端上也能够享受到这种水幕效果,为了满足用户对终端的需求,技术人员开始研究如何将水幕效果带到终端的UI控件入场中。

在Android平台上要实现水幕效果,首先想到使用Android自带的动画接口,但Android自带的动画接口是无法支持水幕效果的,因此,技术人员想到借助OpenGL-ES(嵌入式图形开发库)在底层来实现水幕效果,但由于OpenGL-ES的语言、构架的复杂度较高,学习门槛较高,再者,OpenGL-ES语言与Android语言不同,在使用时其需要复杂的跨语言编译和调用,致使其很难与AndroidUI控件相兼容,上述原因致使水幕效果目前还没有在终端上得以实现。



技术实现要素:

鉴于上述问题,本发明提出了一种UI控件水幕入场显示方法及装置,以在终端上实现UI控件的水幕显示效果,提高用户的视觉体验。

一方面,本发明提供了一种UI控件水幕显示方法,该方法包括:

控制UI控件视图失效;

按照刷新帧率更新绘制矩阵;以及按照刷新帧率更新画笔透明度值;

通过绘制函数循环调用所述绘制矩阵和画笔透明度值的方式实现对UI控件的移动绘制。

又一方面,本发明提供了一种UI控件水幕显示装置,该装置包括:

失效控制单元,用于控制UI控件视图失效;

绘制矩阵更新单元,用于按照刷新帧率更新绘制矩阵;

透明度值更新单元,用于按照刷新帧率更新画笔透明度值;

绘制单元,用于通过绘制函数循环调用所述绘制矩阵和画笔透明度值的方式实现对UI控件的移动绘制。

与现有技术相比本发明具有如下有益效果:

本发明在UI控件入场时,首先控制UI控件视图失效;这样使得UI控件一开始处于不可见状态,然后按照刷新帧率更新绘制矩阵以及更新画笔透明度值;这样基于系统的刷新帧率来更新绘制函数所需要的参数,为绘制函数移动绘制UI控件打好基础;最后,通过绘制函数循环调用所述绘制矩阵和画笔透明度值的方式实现对UI控件的移动绘制。本发明通过循环更新绘制矩阵和画笔透明度值的方式,通过周期性调用绘制函数的方式对UI控件进行移动绘制,这样能够在终端上实现UI控件入场的水幕效果,以满足用户视觉体验。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明UI控件水幕显示方法的流程图;

图2是本发明UI控件水幕显示过程的示意图;

图3是本发明UI控件水幕显示效果的示意图;

图4是本发明UI控件水幕显示装置的结构图。

具体实施方式

下面描述本发明的各个方面。应该明白的是,本文的教导可以以多种多样形式具体体现,并且在本文中公开的任何具体结构、功能或两者仅仅是代 表性的。基于本文的教导,本领域技术人员应该明白的是,本文所公开的一个方面可以独立于任何其它方面实现,并且这些方面中的两个或多个方面可以按照各种方式组合。例如,可以使用本文所阐述的任何数目的方面,实现装置或实践方法。另外,可以使用其它结构、功能、或除了本文所阐述的一个或多个方面之外或不是本文所阐述的一个或多个方面的结构和功能,实现这种装置或实践这种方法。此外,本文所描述的任何方面可以包括权利要求的至少一个元素。

在描述本发明的各个实施例之前,要声明的是,本发明适用于智能终端。这里所说的智能终端是指具有无线通信能力和计算处理能力的终端设备(在下文中统称为终端设备),包括但不限于笔记本电脑、平板电脑、智能手机、个人数据助理(PDA)等等。

下面将参照附图描述本发明的各个实施例。

参见图1,图1是本发明UI控件水幕显示方法的流程图,如图1所示,该方法包括:

S101,控制UI控件视图失效。

用户使用智能终端时,通过按压开机键或home键的方式来触发智能终端显示UI控件。智能终端响应于用户触发的UI控件显示操作,先控制UI控制视图失效,也就是强制UI控件一开始处于不可见状态。在智能终端上UI控件的类型多种多样,如文本控件、按钮控件、状态开关控件、图片控件、时钟控件、日期与时间选择控件等。

步骤S101可以通过调用绘制函数的方式获取UI控件的画布,在画布区域上绘制黑色蒙板,使UI控件处于不可见状态。这样先强制UI控件处于不可见状态,然后再通过下面的步骤循环调用绘制函数来实现水幕效果。

为了更形象地描述本发明的实现过程,请参照图2示出的UI控件水幕显示过程的示意图,图2中仅以图片控件为例,图2左边示出的是待显示的图片控件,图2右边示出的是UI控件显示过程结构图,Top是指UI控件的顶部,Bottom是指UI控件的底部,整个UI控件是从顶部到底部逐渐被显示,绘制总时间Duration为1000ms。假设智能终端的UI刷新帧率为60帧每秒,则每1/60秒就通过下面的步骤调用一次绘制函数进行绘制。当然, 上述数值仅为示例性的,在具体实现时,上述刷新帧率、绘制总时间都可根据实际场景来确定。

以图片控件为例,上述步骤S101可以通过先获取图片控件的画布canvas,将图片控件作为画布canvas;然后在画布区域上绘制一个黑色蒙板,这样就使得图片控件一开始处于不可见状态。步骤S101也可以通过调用invalite函数来强制UI控件视图失效。

S102,按照刷新帧率更新绘制矩阵;以及按照刷新帧率更新画笔透明度值。

在强制UI控件一开始处于不可见之后,就需要回调绘制函数Ondraw(Canvas canvas)方法对UI控件进行绘制,而Canvas绘制涉及到两个参数,分别是绘制矩阵参数以及画笔,因此,绘制矩阵参数和画笔属性值是绘制函数最重要的参数,也是随着绘制周期进行变化的参数。

在执行绘制时,先调用StartAnimation函数来记录动画的开始时间TimeStart,并调用OnDraw(Canvas canvas)来进行重绘,OnDraw(Canvas canvas)函数需要循环调用绘制矩阵参数和画笔透明度值,其中,绘制矩阵参数可以按照如下方式进行循环更新:

按照刷新帧率通过调用绘制矩阵更新函数的方式更新绘制矩阵。

更进一步地,该方式可以包括如下步骤:

按照刷新帧率,通过调用UI控件函数的方式获取UI控件的高度和宽度;以及,通过调用矩阵类设置函数的方式更新绘制矩阵,所述绘制矩阵包括左端值、顶端值、右端值以及底端值;其中,左端值等于零,右端值等于所述宽度,底端值等于所述高度,顶端值是按照刷新帧率更新的,当绘制时间比率小于1时,设置顶端值等于绘制时间比率与所述高度的乘积,所述绘制时间比率等于绘制已执行时间与绘制总时间的比值。

这里绘制矩阵更新函数为UpdateRect函数,UpdateRect函数的实现原理如下:

首先,记录当前系统时间TimeNew,绘制已执行时间TimePassed,TimePassed=TimeNew-TimeStart;然后,利用TimePassed除以绘制总时间Duration等于绘制时间比率TimeRate,即,TimeRate=TimePassed/Duration; 最后,通过循环获取TimeRate的方式以循环更新绘制矩阵。在循环更新的过程中,需要先判断TimeRate是否小于1,如果小于1,就利用TimeRate来进行更新,如果不小于1则表明绘制矩阵已经位于画布的不可见区域,此时应该结束绘制,UI控件的水幕入场动画结束。

另外,发明人还考虑了绘制速率逐渐变化时,UI控件的水幕效果会更绚丽,其动态效果更好。基于此,发明人提出了优选方案,即在得到上述TimeRate时,对TimeRate进行插值运算,可通过调用插值函数interpolator.getInterpolation的方式得到插值时间比率interpolatedTimeRate,这里的插值函数可以采用线性插值、二次插值、样条插值等插值算法来实现。后面的处理就以插值时间比率为基础进行处理。

其次,当计算得到绘制时间比率时,通过调用矩阵类设置函数的方式更新绘制矩阵,这里的矩阵类设置函数Rect.set(int left,int top,int right,int bottom)来对绘制矩阵进行更新,更新得到当前的绘制矩阵RectCurrent.set(0,TimeRate*(height),width,height)。如果计算得到插值时间比率时,则更新得到当前的绘制矩阵RectCurrent.set(0,interpolatedTimeRate*(height),width,height),其中,height、width是通过调用图片控件函数的方式获取的图片控件的高度以及宽度。

另外,在每更新一次绘制矩阵的同时还需要更新一次画笔透明度值,画笔透明度值可以通过以下方式循环更新:

通过调用画笔透明度值更新函数的方式实现对画笔透明度值的更新,更新的原理包括:

按照刷新帧率,在预设的透明度取值范围内按照透明度值由最大值开始逐次减小预设步长的方式更新画笔透明度值;或者,

按照刷新帧率,在预设的透明度取值范围内按照透明度值由最小值开始逐次增大预设步长的方式更新画笔透明度值。

上述画笔透明度值函数为paint.setAlpha(alpha),该函数的实现原理如下:预先设定透明度值aplha取值范围(alphaMin,alphaMax)以及步长,其中,alphaMin为透明度值最小值,alphaMax为透明度值最大值,aplha从最大值开始每次递减一个步长,或者,aplha从最小值开始每次递增一个步长,这 样画笔透明度值以固定步长在alphaMax与alphaMin之间变化更新,透明度值的逐渐变化使得绘制出的UI控件呈现出水幕雾化效果,另外,在具体实现时还可以对画笔的其他属性值进行更新,如对画笔的颜色进行更新。

最后,通过S103实现对UI控件的移动绘制。

S103,通过绘制函数循环调用所述绘制矩阵和画笔透明度值的方式实现对UI控件的移动绘制。

这里的绘制函数OnDraw(Canvas canvas)采用的是

canvas.drawBitmap(Bitmap bitmap,Rect src,Rect dst,Paint paint)图片绘画函数来实现的,本发明具体调用绘制函数为:

canvas.drawBitmap(bitmap,null,rectCurrent,paint),其中,bitmap表示UI控件,null表示空,rectCurrent表示更新的当前绘制矩阵,paint表示更新的画笔,在本实施例中仅对画笔的透明度值进行更新,通过调用该绘制函数以实现对UI控件的移动绘制,可以参照图2理解为是对黑色蒙板在坐标top与bottom的视图可见区域进行移动绘制。

按照刷新帧率循环调用绘制函数,绘制函数具体调用画布的图片绘制函数来进行实现,而图片绘制函数里的绘制矩阵和画笔透明度值也是随着刷新帧率进行更新,以使得绘制函数按照刷新帧率逐渐地将UI控件绘制出来,使得UI控件入场呈现出水幕效果。具体显示效果可以参见图3示出的示意图。

通过上述实施例可以看出本发明通过在终端上采用绘制机制,按照刷新帧率更新绘制矩阵和画笔透明度值的方式为绘制函数提供所需参数,以从上到下,从无到有,并伴随视图透明度渐变地方式显示UI控件,巧妙地在终端上实现UI控件入场的水幕动画效果,以满足用户在终端上享受水幕动画的需求,提高用户体验。

与上述方法相对应的,本发明提供了一种UI控件水幕显示装置。下面对本发明提供的装置进行解释说明。

参见图4,图4是本发明UI控件水幕显示装置的结构图,如图4所示,该装置包括:

失效控制单元401,用于控制UI控件视图失效;

绘制矩阵更新单元402,用于按照刷新帧率更新绘制矩阵;

透明度值更新单元403,用于按照刷新帧率更新画笔透明度值;

绘制单元404,用于通过绘制函数循环调用所述绘制矩阵和画笔透明度值的方式实现对UI控件的移动绘制。

优选的,所述绘制矩阵更新单元具体用于通过调用绘制矩阵更新函数的方式更新绘制矩阵。

优选的,所述绘制矩阵更新单元包括:

获取子单元,用于按照刷新帧率,通过调用UI控件函数的方式获取UI控件的高度和宽度;

更新子单元,用于通过调用矩阵类设置函数的方式更新绘制矩阵,所述绘制矩阵包括左端值、顶端值、右端值以及底端值;其中,左端值等于零,右端值等于所述宽度,底端值等于所述高度,顶端值是按照刷新帧率更新的,当绘制时间比率小于1时,设置顶端值等于绘制时间比率与所述高度的乘积,所述绘制时间比率等于绘制已执行时间与绘制总时间的比值。

优选的,所述更新子单元还用于:

对所述绘制时间比率进行插值运算得到插值时间比率,则设置顶端值等于插值时间比率与所述高度的乘积。

优选的,所述透明度值更新单元具体用于按照刷新帧率,在预设的透明度取值范围内,按照透明度值由最大值开始逐次减小预设步长的方式更新画笔透明度值;或者,

所述透明度值更新单元具体用于按照刷新帧率,在预设的透明度取值范围内按照透明度值由最小值开始逐次增大预设步长的方式更新画笔透明度值。

优选的,所述失效控制单元具体用于通过调用绘制函数的方式获取UI控件的画布,在画布区域上绘制黑色蒙板,使UI控件处于不可见状态。

本发明的装置可以应用于智能终端中,这样使得智能终端在显示UI控件时,通过函数调用的方式,按照刷新帧率更新绘制矩阵和画笔透明度值的方式实现对UI控件的水幕显示,以满足用户在终端上享受水幕动画的需求,以提高用户体验。

此外,根据本发明的方法还可以被实现为由智能终端中的处理器(比如CPU)执行的计算机程序,并且存储在智能终端的存储器中。在该计算机程序被处理器执行时,处理器执行本发明的方法中限定的上述功能。例如,根据本发明的移动终端可以被实现为一个或多个处理器,以及与该一个或多个处理器相连的存储器,该存储器中存储具有可以使得处理器执行本发明的方法中所限定的各个步骤的指令的计算机程序。

此外,应该明白的是,本文所述的计算机可读存储设备(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)以及直接RambusRAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。

此外,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的方法中限定的上述功能的计算机程序。

此外,上述方法步骤以及单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储设备实现。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明的范围。

尽管前面公开的内容示出了本发明的示例性实施例,但是应当注意,在不背离权利要求限定的本发明的范围的前提下,可以进行多种改变和修改。根据这里描述的发明实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明的元素可以以个体形式描述或要求,但是也可以设想多个,除非明确限制为单数。

虽然如上参照图描述了根据本发明的各个实施例进行了描述,但是本领域技术人员应当理解,对上述本发明所提出的各个实施例,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1