专利名称:界面切换方法及系统的制作方法
界面切换方法及系统
技术领域:
本发明涉及计算机技术领域,特别是涉及一种界面切换方法及系统。
背景技术:
开放是互联网发展的必然趋势,基于即时通讯的开放平台也应用越来越广泛。开放平台可以通过AppStore (应用市场)接入大量的第三方应用,用户可以根据需要安装自己的应用。开放平台中的界面切换,其实就是将界面从屏幕左边往右边或从右边往左边滑动的过程,传统的一些界面切换技术,都是采用定时器来让屏幕滑动。有时会让用户感觉到切换不流畅的现象。主要有以下几点:1、由于是采用定时器来触发屏幕滑动,有可能造成卡的现象。定时器是到了一定时间就发出一个WM_HMER(定时器消息)消息到消息队列,然后等待执行。如果在处理该帧之前,还在做其他复杂的事情,界面切换的时候必定不流畅。2、在切换的时候,会在每一巾贞里调用Update Window(更新窗口)让界面去刷新。Update Window 属于阻塞式 API (Application Programming Interface,应用程序编程接口),如果界面里含有大量元素需要绘制,在界面绘制的过程中必定很耗时,也会给用户带来界面切换不畅的现象。
发明内容基于此,针对界面切换的时候不流畅的问题,有必要提供一种能使界面切换流畅的界面切换方法。—种界面切换方法,具体包括以下步骤:接收界面切换的指令;对切换前的实际界面和切换后的实际界面中的至少一者进行截图;以所述截图作为临时界面执行切换动画;显示切换后的实际界面。此外,针对界面切换的时候不流畅的问题,有必要提供一种能使界面切换流畅的界面切换系统。一种界面切换系统,包括:输入模块,用于接收界面切换的指令;截图模块,对切换前的实际界面和切换后的实际界面中的至少一者进行截图;切换模块,以所述截图作为临时界面执行切换动画;显示模块,显示切换后的实际界面。上述界面切 换方法及系统通过对界面进行截图后,在两个界面之间进行切换的时候,采用截图技术实现伪桌面的切换,切换过程中不需要对切换过程中原界面上的每个元素进行绘制,只需要绘制截图,从而可以减少计算量,提高界面切换的流畅度,给用户提供了较好的操作体验。
图1为界面切换方法流程图;图2为一具体示例的界面切换方法流程图;图3为一实施例中的截图步骤流程图;图4为一实施例中的执行切换动画流程图;图5为另一具体示例中的界面切换方法流程图。
具体实施方式为了使本发明的目的、技术方案及优点更清楚明白,以下结合附图及实施例,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。 如图1所示,一种界面切换方法,包括以下步骤:步骤S110,接收界面切换的指令。例如应用平台接收到用户通过键盘、鼠标或触摸屏输入的界面切换的指令。步骤S120,对切换前的实际界面和切换后的实际界面中的至少一者进行截图。接收界面切换的指令后,在进行切换前显示的当前界面为切换前的实际界面,切换后显示的界面为切换后的实际界面。对上述两者中的至少一者进行截图,即既可以既对切换前的实际界面和切换后的实际界面截图,也可以只对切换前的实际界面截图,还可以只对切换后的实际界面截图。步骤S130,以所述截图作为临时界面执行切换动画。将获得的截图作为临时界面,在运行动画的时候,即在动画的帧与帧之间切换时,用截图作为临时界面代替切换前的实际界面和/或切换后的实际界面。步骤S140,显示切换后的实际界面。动画运行完毕后,显示出切换后的实际界面,完成界面切换过程。上述界面切换方法通过对界面进行截图后,在两个界面之间进行切换的时候,采用截图技术实现伪桌面的切换,切换过程中不需要对切换过程中原界面上的每个元素进行绘制,只需要绘制截图,从而可以减少计算量,提高界面切换的流畅度,给用户提供了较好的操作体验。下面结合更具体的示例对上述界面切换方法进行更详细的说明。在描述具体实施前,先定义一些变量。I)定义动画执行完的总帧数为N,当前帧为curN。2)将每一帧的步长存储在一个数组里,定义为Step [N]。3)定义当前分辨率的宽度为CX像素,高度为CY像素。4)定义应用平台桌面的大小为(cx,cy)。如图2所示,一种界面切换方法,本实施例中,为应用平台桌面切换方案,具体包括以下步骤:步骤S210,接收界面切换的指令。应用平台接收到用户输入的界面切换的指令。
步骤S220,判断所述界面切换是否为在应用平台桌面与系统桌面间切换。本实施例中,判断为否,用户输入的界面切换指令为应用平台自身的界面切换,即应用平台桌面的切换指令。步骤S230,对切换前的实际界面和切换后的实际界面中的至少一者进行截图。在步骤S220判断为否时,即界面切换指令为应用平台自身的界面切换,则对应用平台桌面的切换前的实际界面和切换后的实际界面都进行截图,优选的,即对屏幕当前显示的界面及将要被切换进来的界面都进行截图。在其他实施例中,可以是对应用平台桌面的预设部分非全屏的界面进行截图。其中,在切换前的实际界面和切换后的实际界面进行截图时,在优选的实施例中,所述切换前的实际界面和切换后的实际界面的坐标定位为屏幕范围内的坐标后进行截图,具体为:应用平台桌面的宽度应该等于屏幕分辨率的宽度,应用平台桌面的高度应该等于屏幕分辨率的高度。也即cx = CX, cy = CY。切换前,切换前的实际界面的位置坐标为(0,0,cX,cy),可以截图;而由于切换后的实际界面在应用平台桌面的区域之外,此时对切换后的实际界面是截不到图的,需要将切换后的实际界面的位置设为(0,0,cx, cy),然后再截图,此时并不进行刷新,因此,即使将切换后的实际界面的位置设为(0,0,cx, cy),也不会显示出切换后的实际界面。在优选的实施例中,参考图3,对界面截图具体包括步骤S232和步骤S234:步骤S232,将截图分别存储为相应图像。具体为,将应用平台桌面的切换前的实际界面和切换后的实际界面都进行截图后,分别存储为切换前的实际界面图像和切换后的实际界面图像。步骤S234,隐藏被截图切换前的实际界面和切换后的实际界面。具体为,将切换前的实际界面和切换后的实际界面隐藏,将切换前的实际界面图像和切换后的实际界面图像显不O步骤S240,以截图作为临时界面执行切换动画。创建两个临时界面,将切换前的实际界面图像和切换后的实际界面图像分别作为切换前临时界面和切换后临时界面,并做界面切换,让用户感觉是真的切换前的实际界面和切换后的实际界面在做切换。在优选的是实施例中,采用阻塞式动画技术对切换前临时界面和切换后临时界面进行桌面切换,即应用平台接收到界面切换的切换动画指令后直到切换动画动作完成期间只执行切换动画的命令而不作其他任何操作。在每一帧里根据滑动位置与当前帧数的关系,设置切换前临时界面和切换后临时界面的位置。这里定义切换前临时界面的当前位置为rcCurDesktop_cur ;定义切换后临时界面当前位置为rcNewDesktop_cur。切换前临时界面和切换后临时界面的位置与当前帧数(假设为i)的关系为:rcCurDesktop_cur.left = rcCurDesktop_cur.left+Step[i];rcCurDesktop_cur.top = rcCurDesktop_cur.top ;rcCurDesktop_cur.right = rcCurDesktop_cur.left+cx ;rcCurDesktop_cur.bottom = rcCurDesktop_cur.top+cy ;rcNewDesktop_cur.left = rcNewDesktop_cur.left+Step[i];rcNewDesktop_cur.top = rcNewDesktop_cur.top ;
rcNewDesktop_cur.right = rcNewDesktop_cur.left+cx ;rcNewDesktop_cur.bottom = rcNewDesktop_cur.top+cy。由于是截图,所以用户感觉就是真实的切换前的实际界面、切换后的实际界面在做切换。参考图4,执行切换动画具体包括以下步骤:步骤A,设置当前要切换的当前帧为切换动画的起始帧。步骤B,获取当前时间,执行当前帧动画。切换前临时界面和切换后临时界面开始进行切换。步骤C,获取当前时间,判断是否到达执行完当前帧的时间,若否,则继续执行步骤B;若是,则将下一帧作为当前帧。在优选的实施例中,步骤B和C中通过获得机器内部计时器的时钟频率和计数来确定当前时间。高精度时间计算,是指通过获得机器内部计时器的时钟频率,定义为Animate Freq(动画频率)。以及获取事件发生前的计时PreAnimateCounter和事件发生后的计时AfterAnimateCounter。然后利用两次获得的计数差除时钟频率,也即(AfterAnimateCounter-PreAnimateCounter)/AnimateFreq。就可以计算出事件执行完的所需要的精确时间。获取机器内部计时器的时钟频率,可以通过QueryPerformanceFrequency 来获取,获取当期计数可以通过 QueryPerformanceCounter来获取。定义每一巾贞执行前的计时为PreAnimateCounter,当前的计时为CurrentAnimateCounter,每一巾贞的时间为 time。当(CurrentAnimateCounter-PreAnimateCounter)/AnimateFreq ^ time 的时候,就表示动画要执行一巾贞,则将下一巾贞作为当前巾贞。将PreAnimateCounter赋值为CurrentAnimateCounter。执行curN对应的动画,执行完后,对curN加I。当(CurrentA nimateCounter-PreAnimateCounter)/AnimateFreq < time 的时候,表示还没有到达一帧,此时继续执行步骤B。步骤E,判断被执行动画帧数是否等于切换动画的总帧数N,若否,则转至步骤B ;若是,则切换结束。在优选的实施例中,应用平台桌面切换是从屏幕的左边滑到右边,或者从右边滑到左边,因为只有水平位置在变,而高度都是固定的。在其他实施例中,可以是从上到下或者从下到上。这里假设动画匀速进行,为了达到更好的效果,可以加上加速度,模拟自然运动。动画以何种方式执行不在本方案之内,因此假设动画为匀速进行。那么从I N-1巾贞,每一巾贞要走的长度step = CX/N。第N巾贞需要走的长度step = CX-(N_l) *CX/N。假设:动画的执行帧数为10帧,当前分辨率为1399像素,那么每一帧要走的步长
如下表所示。
~当前中贞~ ~Γ~2~~3~4~5~6~~7~Γ~8~\~9~10
要走的步长139 139 139 139 139 139 139 139 139148~
由于有向左边和向右边滑动,因此Step带有方向性:(I)当向左滑动的时候,Step [curN] = _l*Step [curN];(2)当向右滑动的时候,Step [curN] = l*Step [curN]。步骤250,将临时界面隐藏。在应用平台桌面切换时,以所述截图作为临时界面执行切换动画完成后,需要将切换前临时界面和切换后临时界面隐藏,并显示切换前的实际界面和切换后的实际界面。步骤260,显示切换后的实际界面。在步骤250中已经将临时界面隐藏,此时将切换后的实际界面显示到屏幕预设位置,本实施例中,切换后的实际界面显示在整个屏幕中。步骤S270,将临时界面销毁。在界面切换完毕后,本次切换的临时界面使命已经完成,将临时界面销毁以释放系统缓存。应用界面进行切换的动画技术,可以作为桌面界面的切换的动画技术,也可以作为窗口界面切换的动画技术。采用截屏技术主要是指在界面切换开始的时候,获取切进来和切出去界面内容的截图,这样在每一帧滑动的时候,就只需要把这个截图绘制一遍。而不是去把界面里的每一个元素绘制一遍。该技术大大提高了切换的性能,提高动画的流畅度。以下结合图5描述应用平台桌面与系统桌面间切换的界面切换方法。应用平台桌面与系统桌面间切换有两种情况,其一为应用平台桌面切进屏幕,覆盖系统桌面;其二为应用平台桌面离开屏幕,显示系统桌面。为描述简便,将上述两种情况一并描述,具体包括以下步骤:步骤S510,接收界面切换的指令。应用平台接收到用户输入的界面切换的指令。步骤S520,判断所述界面切换是否为在应用平台桌面与系统桌面间切换。本实施例中,判断为是,即应用平台桌面与系统桌面的界面切换指令。步骤S530,对切换前的实际界面和切换后的实际界面中的至少一者进行截图。在步骤S520判断为是时,则只对切换前的实际界面和切换后的实际界面中的系统桌面截图。对于应用平台桌面切进屏幕,覆盖系统桌面的情况,切换前,系统桌面已经显示,所以是对切换前的实际界面进行截图;对于应用平台桌面离开屏幕,显示系统桌面的情况,切换前,系统桌面尚未显示,所以是对切换后的实际界面进行截图。在优选的实施例中,参考图3,对界面截图具体包括步骤S232和步骤S234:步骤S232,将截图分别存储为相应图像。具体为,将切换前的实际界面即系统桌面进行截图后,存储为切换前的实际界面图像。将切换后的实际界面即系统桌面进行截图后,存储为切换后的实际界面图像。步骤S234,隐藏被截图对应的切换前的实际界面或切换后的实际界面。具体为,将切换前的实际界面或切换后的实际界面即系统桌面隐藏,将切换前的实际界面图像或切换后的实际界面图像显示。步骤S540,以截图作为临时界面执行切换动画。创建一个临时界面,将切换前的实际界面的截图或切换后的实际界面的截图作为临时界面代替切换前的实际界面或切换后的实际界面。具体来说,是将切换前的实际界面图像或切换后的实际界面图像作为切换动画的背景:对于应用平台的应用界面,即应用平台桌面切进屏幕,覆盖系统桌面的情况,截图作为切换动画的背景,应用平台桌面在该背景上移动并逐渐覆盖该背景;对于应用平台的应用界面,即应用平台桌面离开屏幕,显示系统桌面的情况,截图作为切换动画的背景,应用平台桌面在该背景上移动并逐渐完全显示该背景。在优选的是实施例中,采用阻塞式动画技术对切换前临时界面和应用平台桌面进行桌面切换,即应用平台接收到界面切换的切换动画指令后直到切换动画动作完成期间只执行切换动画的命令而不作其他任何操作。在每一帧里根据滑动位置与当前帧数的关系,设置切换前临时界面和应用平台桌面的位置。系统桌面和应用平台桌面切换与应用平台桌面自身的切换方案不一样。原因在于,应用平台桌面是放置在应用平台桌面容器中的,应用平台桌面自身的切换方案中,应用平台桌面容器的位置是固定的,覆盖在系统桌面上,只需要切换应用平台桌面即可;而在系统桌面和应用平台桌面切换过程中,需要移动应用平台桌面容器,通过移动应用平台桌面容器来移动应用平台桌面。移动应用平台桌面容器时,可以不采用截图的方式而采用普通的实际界面来实现动画的切换。将应用平台桌面容器滑到(0,0,cX,cy)区域之外。当存在双屏的时候,如果应用平台桌面容器滑到(0,0,cx, cy)区域之外,那么就会在另外一个屏幕看到应用平台桌面,此时是不符合要求的。因此需要采用设置应用平台的区域(RGN)方案,此方案主要是:I)设置应用平台桌面容器的位置为(0,0,cx, cy),并且应用平台桌面容器的位置不会改变。需要改变的是应用平台桌面容器的区域。2)定义应用平台的当前区域为 rgnContainer_cur。当 rgnContainer_cur 为(O,
O,cx, cy)的时候,应用平台桌面容器全部显示,当rgnContainer_cur为(cx,0,cx, cy)的时候,应用平台桌面容器不会显示。3)应用平台桌面从无到有切进屏幕,覆盖系统桌面,其实就是区域从(cx,0,cx,cy)变化到(0,0, cx, cy)的过程。应用平台桌面从有到无离开屏幕,显示系统桌面,其实就是区域从(0,0,cx, cy)变化到(cx,0, cx, cy)的过程。应用平台的当前区域与当前帧数(假设为i)的关系为:rgnContainer_cur.left = rgnContainer_cur.left+Step[i];rgnContainer_cur.top = rgnContainer_cur.top ;rgnContainer_cur.right = cx ;rgnContainer_cur.bottom = cy。由于是截图,所以用户感觉就是真实的系统桌面、应用平台桌面在做切换。参考图4,将背景作为临时界面执行切换动画具体包括以下步骤:步骤A,设置当前要切换的当前帧为切换动画的起始帧。步骤B,获取当前时间,执行当前帧动画。切换前临时界面和应用平台开始进行切换。步骤C,获取当前时间,判断是否到达执行完当前帧的时间,若否,则继续执行步骤B;若是,则将下一帧作为当前帧。在优选的实施例中,步骤B和C中通过获得机器内部计时器的时钟频率和计数来确定当前时间。高精度时间计算,是指通过获得机器内部计时器的时钟频率,定义为Animate Freq(动画频率)。以及获取事件发生前的计时PreAnimateCounter和事件发生后的计时AfterAnimateCounter。然后利用两次获得的计数差除时钟频率,也即(AfterAnimateCounter-PreAnimateCounter)/AnimateFreq。就可以计算出事件执行完的所需要的精确时间。获取机器内部计时器的时钟频率,可以通过QueryPerformanceFrequency 来获取,获取当期计数可以通过 QueryPerformanceCounter来获取。定义每一巾贞执行前的计时为PreAnimateCounter,当前的计时为CurrentAnimateCounter,每一巾贞的时间为 time。当(CurrentAnimateCounter-PreAnimateCounter)/AnimateFreq ^ time 的时候,就表示动画要执行一巾贞,则将下一巾贞作为当前巾贞。将PreAnimateCounter赋值为CurrentAnimateCounter。执行curN对应的动画,执行完后,对curN加I。当(CurrentAnimateCounter-PreAnimateCounter)/AnimateFreq < time 的时候,表示还没有到达一帧,此时继续执行步骤B。步骤E,判断被执行动画帧数是否等于切换动画的总帧数N,若否,则转至步骤B;若是,则切换结束。在优选的实施例中,系统桌面与应用平台间的切换是从屏幕的左边滑到右边,或者从右边滑到左边,因为只有水平位置 在变,而高度都是固定的。在其他实施例中,可以是从上到下或者从下到上。这里假设动画匀速进行,为了达到更好的效果,可以加上加速度,模拟自然运动。动画以何种方式执行不在本方案之内,因此假设动画为匀速进行。那么从I N-1巾贞,每一巾贞要走的长度step = CX/N。第N巾贞需要走的长度step = CX-(N_l) *CX/N。假设:动画的执行帧数为10帧,当前分辨率为1399像素,那么每一帧要走的步长
如下表所示。
权利要求
1.一种界面切换方法,其特征在于,具体包括以下步骤: 接收界面切换的指令; 对切换前的实际界面和切换后的实际界面中的至少一者进行截图; 以所述截图作为临时界面执行切换动画; 显示切换后的实际界面。
2.根据权利要求1所述的界面切换方法,其特征在于,在所述接收界面切换的指令的步骤之后还包括,判断所述界面切换是否为应用平台桌面与系统桌面间切换的步骤; 若是应用平台桌面与系统桌面间的切换,则只对切换前的实际界面和切换后的实际界面中的系统桌面截图; 若是应用平台桌面之间的切换,则对所述应用平台桌面的切换前的实际界面和切换后的实际界面都进行截图。
3.根据权利要求2所述的界面切换方法,其特征在于,在对切换前的实际界面和切换后的实际界面中的至少一者进行截图时,将所述切换前的实际界面和切换后的实际界面的坐标定位为屏幕范围内的坐标后进行截图。
4.根据权利要求1或2所述的界面切换方法,其特征在于,所述对切换前的实际界面和切换后的实际界面中的至少一者进行截图的步骤包括: 将所述截图分别存储为相应图像; 隐藏所述被截图的切换前的实际界面和/或切换后的实际界面。
5.根据权利要求1所述的界面切换方法,其特征在于,在显示切换后的实际界面的步骤之前还包括将所述临时界面隐藏的步骤。
6.根据权利要求1或5所述的界面切换方法,其特征在于,在显示切换后的实际界面的步骤之后还包括将所述将临时界面销毁的步骤。
7.根据权利要求1所述的界面切换方法,其特征在于,若所述界面切换为应用平台桌面与系统桌面间切换,则只对切换前的实际界面或切换后的实际界面中的系统桌面截图;所述以所述截图作为临时界面执行切换动画的步骤包括: 以所述截图作为界面切换的背景; 将所述背景作为临时界面执行切换动画。
8.根据权利要求1所述的界面切换方法,其特征在于,所述执行切换动画具体包括以下步骤: A,设置当前要切换的当前帧为切换动画的起始帧; B,获取当前时间,执行当前帧动画; C,获取当前时间,判断是否到达执行完当前帧的时间,若否,则继续执行步骤B;若是,则将下一帧作为当前帧; E,判断被执行动画帧数是否等于切换动画的总帧数N,若否,则转至步骤B ;若是,则切换动画结束。
9.根据权利要求8所述的界面切换方法,其特征在于,所述步骤B和C中通过获得机器内部计时器的时钟频率和计数来确定当前时间。
10.根据权利要求1或8所述的界面切换方法,其特征在于,应用平台接收到界面切换的切换动画指令后直到切换动画动作完成期间只执行切换动画的命令而不作其他任何操作。
11.一种界面切换系统,其特征在于,包括: 输入模块,用于接收界面切换的指令; 截图模块,对切换前的实际界面和切换后的实际界面中的至少一者进行截图; 切换模块,以所述截图作为临时界面执行切换动画; 显示模块,显示切换后的实际界面。
12.根据权利要求11所述的界面切换系统,其特征在于,还包括用于判断所述界面切换是否为应用平台桌面与系统桌面间切换的判断模块,若是,则所述判断模块控制所述截图模块只对切换前的实际界面和切换后的实际界面中的系统桌面截图;若否,则所述判断模块控制所述截图模块对所述应用平台桌面的切换前的实际界面和切换后的实际界面都进行截图。
13.根据权利要求11所述的界面切换系统,其特征在于,所述切换模块包括: 设置单元,用于设置当前要切换的当前帧为切换动画的起始帧; 时间获取单元,用于获取当前时间; 执行单元,用于执行当前帧动画; 时间判断单元,用于根据所述时间获取单元获取的当前时间,判断是否到达执行完当前帧的时间,若否,则控制执行单元继续执行当前帧动画;若是,则将下一帧作为当前帧; 帧数判断单元,用于判断被执行动画帧数是否等于切换动画的总帧数N,若否,则控制执行单元继续执行当前帧动画;若是,则切换动画结束。
14.根据权利要求13所述的界面切换系统,其特征在于,所述时间获取单元通过获得机器内部计时器的时钟频率和计数来确定当前时间。
全文摘要
一种界面切换方法,具体包括以下步骤接收界面切换的指令;对切换前的实际界面和切换后的实际界面中的至少一者进行截图;以所述截图作为临时界面执行切换动画;显示切换后的实际界面。上述界面切换方法通过对界面进行截图后,在两个界面之间进行切换的时候,采用截图技术实现伪桌面的切换,切换过程中不需要对切换过程中原界面上的每个元素进行绘制,只需要绘制截图,从而可以减少计算量,提高界面切换的流畅度,给用户提供了较好的操作体验。此外,还提供了一种界面切换系统。
文档编号G06F3/0481GK103176689SQ20111044242
公开日2013年6月26日 申请日期2011年12月26日 优先权日2011年12月26日
发明者彭勇, 张晏兵 申请人:腾讯科技(深圳)有限公司