一种手持设备的横竖屏切换旋转控制方法

文档序号:6438793阅读:193来源:国知局
专利名称:一种手持设备的横竖屏切换旋转控制方法
技术领域
本发明涉及计算机人机交互,具体涉及一种手持设备的横竖屏切换旋转控制方法,尤其是应用在使用智能手机上。
背景技术
目前,现有移动终端的智能手机只有横竖屏切换功能并没有横竖屏切换中显示切换动画的功能。在屏幕方向改变情况下,有一个切换的动画效果,尤其是在重力感应的情况下有一个自然旋转动画配合用户旋转手机的动作,才不会让用户感觉到界面生硬的效果, 能给用户无限美好体验。但是,目前的手机或其他手持设备在横竖屏切换时都没有一个完美的衔接动画,或者还没有这种技术被公开。

发明内容
本发明需要解决的技术问题是,如何提供一种手持设备的横竖屏切换旋转控制方法,能配合用户旋转手持设备的动作在设备屏幕上给出一个完美、自然的衔接动画。本发明的技术问题这样解决构建一种手持设备的横竖屏切换旋转控制方法,其特征在于,包括以下步骤1. 2)根据重力感应获取旋转的方向和切换方向后的角度Φπι ;1. 3)冻结屏幕,获取到切换方向后的界面图像;1. 4)还原所述界面图像到切换前的角度Φ0显示,再计算所述界面图像的当前角度Φ 并显示直至当前角度Φ 等于角度Φπι,其中Φ = Φ0+(Φη-Φ0) * Ai, Ai = (m-(m-i) * (m-i)/m)/m, m是总的旋转显示次数,i是当前旋转显示次数,1彡i彡m,m、i 是自然数,Ai是加速百分比,Φ0、Φ 和Φπι同旋转方向;所述显示是手持设备屏幕不动,所述界面图像在所述屏幕表面绕屏幕中心点旋转,所述屏幕只显示旋转的所述界面图像在所述屏幕内的部分;1. 5)解冻屏幕。按照本发明提供的控制方法,还包括步骤1. 1)接收到横竖屏切换消息判断是否是重力感应方式,是则进入步骤1. 2)。按照本发明提供的控制方法,所述步骤1. 1)还包括判断不是重力感应方式,则显示切换方向后的界面图像,跳过步骤1. 2) 1. 5)直接结束。按照本发明提供的控制方法,根据重力感应判断Φπι与Φ0重合,跳过步骤 1.3) 1.5)直接结束。按照本发明提供的控制方法,切换前的角度Φ0 = 0°,切换方向后的角度Φπι = 90° ,180° 或 270° 。按照本发明提供的控制方法,若Φπι = 90°、!Ii = N,则当Φπι= 180°,m = 2N,其中N是大于2的自然数。按照本发明提供的控制方法,若Φπι = 90°、m = N,则当Φπι = 270°,m = 3N,其中N是大于2的自然数。按照本发明提供的控制方法,N优选15。按照本发明提供的控制方法,所述步骤1. 4)中采用双显存,分别存储当前旋转的界面图像和下一次旋转的界面图像,轮流调用。按照本发明提供的控制方法,所述双显存是逻辑内存,所述轮流调用是在双显存之间切换当前显存地址。本发明提供的手持设备的横竖屏切换旋转控制方法,能根据用户旋转手机的动作显示动态旋转的界面,较现有技术具有以下优点1、能完美衔接用户动作,给用户以自然的实体感应;2、冻结屏幕,使界面内的图标等不会随界面改变而改变大小和布局,从而造成旋转过程中内部图像混乱的视觉,使图像自然旋转;3、90°、180°、270°或其他旋转,速度都一致,给用户类同的体验;4、双显存处理,使动画切换更流畅,动态连续显示效果更好。


下面结合附图和具体实施例进一步对本发明进行详细说明图1是本发明横竖屏切换旋转控制流程示意图;图2是函数y = 1-χ * χ的图形坐标示意图;图3是本发明具体实施例的手机中横竖屏切换流程示意图;图4是图3中旋转动画子流程示意图;图5是本发明具体实施例的手机中安卓(Android)平台下SurfaceFlinger服务的框架结构示意图;图6是图5所示SurfaceFlinger服务的处理流程示意图;图7是本发明具体实施例手机中安卓(Android)平台下将图像显示到屏幕上的数据结构关系示意图;图8是图5所示SurfaceFinger客户端和服务端对象关系示意图;图9是客户端与SurfaceFlinger连接示意图;图10是客户对象交互示意图;图11是服务端交互示意图;图12是客户端交互示意图。
具体实施例方式首先,说明本发明控制方法和原理(一 )控制程序如图1所示,本发明的横竖屏切换旋转控制流程,具体包括以下步骤101)根据重力感应判断屏幕方向是否变化?是,进入下一步,否则返回步骤 101);102)冻结屏幕;103)界面布局,获取到切换方向后界面的图像;
104)根据获取到的图像以及切换的角度和方向播放旋转动画;该播放旋转动画子流程具体如图3所示;105)解冻屏幕(显示屏幕切换后图像)。(二)动画原理2. 1)判断屏幕方向是否改变每次屏幕方向改变的时候会记录当前的方向,当下一次屏幕方向变化的时候可以与上一次的方向做对比,可以知道是否旋转了屏幕,也可以知道旋转的方向,是90° 0° (右侧到中间),270° 360° (左侧到中间),180° 360° (右侧到左侧),-90° 0° (中间到左侧),450° 360° (中间到右侧),450° 270° (左侧到右侧)2.2)根据改变的方向播放相应的旋转动画从上面2. 1)可以看出旋转有旋转90°,有的旋转180°,为了让90°和180°旋转的速度一致就让180°的旋转次数是90°旋转次数的两倍。这里规定90°旋转次数为 15次,180°旋转次数为30次。该旋转采用加速旋转算法当前度数=开始度数+(结束度数-开始度数)*加速百分比加速百分比是随着次数的增大而增大,范围在0 1之间,开始的时候等于0,即当前度数=开始度数当加速百分比=1时候当前度数=结束度数加速百分比=(总的旋转次数_(总的旋转次数_当前旋转次数)* (总的旋转次数_当前旋转次数)/总的旋转次数)/总的旋转次数当前旋转次数每次加1加速百分比是利用了函数y = 1-χ * χ改造而来的变量χ的范围在1 0之间,当这样函数y的范围就在0 1之间如图2所示,函数y = 1-χ女χ这种抛物线当χ > 0,随着χ值越大,它的斜率也越大,速度就越快。第二,结合本发明方法在手机中的应用进一步详细说明如图3所示,本发明具体实施例的手机中横竖屏切换控制流程,具体包括以下步骤301)操作系统接收到横竖屏切换消息;
302)操作系统冻结屏幕和窗口 ;303)界面布局,获取到切换方向后界面的图像;304)操作系统发送解冻屏幕消息;305)判断横竖屏切换消息是否是使用重力感应方式?是进入下一步,否则直接进入步骤307);306)调用播放旋转动画子程序;307)解冻屏幕(显示屏幕切换后图像)。其中,步骤306)中的播放旋转动画子程序,具体步骤如图4所示,包括以下步骤401)根据重力感应结果和程序定义初始化开始的度数、结束的度数和旋转的次数 (=0);
5
402)判断当前旋转次数<总的旋转次数?是进入下一步,否则进入步骤4);403)计算应该旋转的当前度数;404)根据当前度数显示对应画面;405)旋转次数加1,返回步骤402);406)旋转结束。第三,结合本发明方法在手机中应用的具体实施例在Android平台下的实现再进一步详细说明,包括三大部分,其中第一部分)判断旋转动画播放的时机旋转动画的播放是在手机屏幕切换的时候播放的,但不包括手机键盘打开时的横竖屏切换状态。手机横竖屏切换包括重力感应器和手机侧滑键,通过分别接受重力感应器响应和侧滑键的消息来触发横竖屏切换事件。通过排除侧滑键切换的方式来决定横竖屏切换的时机。第二部分)触发旋转动画当界面布局完后,会通知界面去解冻屏幕,在解冻屏幕的时候先判断当前触发屏幕切换的是采用重力感应器方式还是侧滑键切换方式,如果是侧滑键切换就直接解冻屏幕让界面瞬间切换成屏幕切换后的界面;如果是通过重力感应器响应,横竖屏切换就需要触发旋转动画了。第三部分)旋转动画具体实现该效果的实现关键重点在于如何获取到切换后界面的图像,这个处理涉及到底层的显存数据读取。这部分处理都在surface服务端SurfaceFlinger里面处理的。 SurfaceFlinger作用是将所有系统中的surface层叠加起来最后绘制到屏幕上面。该SurfaceFl inger的基本组成框架,如图5所示,包括以下部分或模块mClientsMap 管理客户端与服务端的连接。ISurface, IsurfaceComposer :AIDL 调用接口实例mLayerMap 服务端的Surface的管理对象。mCurrentState. IayersSortedByZ 以 Surface 的 Z-order 序歹Ij 歹Ij 的 Layer 数组。graphicPlane缓冲区输出管理OpenGL ES 图形计算,图像合成等图形库。gralloc. xxx. so这是个跟平台相关的图形缓冲区管理器。pmem Device 提供共享内存,在这里只是在gralloc. xxx. so可见,在上层被 gralloc. xxx. so 抽象了。该SurfaceFlinger的处理流程,如图6所示,根据事件进行显示数据处理,而最后的postFramebuffer就是将图像显示到屏幕上面去。在 postFramebuffer 的时候使用至Ij DisplayHardware, DisplayHardware 就是具体将图像显示到屏幕上的具体实现,首先SurfaceFlinger需要操作到屏幕,需要建立一个屏幕硬件缓冲区管理框架。Android在设计支持时,考虑多个屏幕的情况,引 Λ 7 graphicPlane 白勺才 。 $ SurfaceFlinger —f graphicPlane · , graphicPlane对象都对应一个DisplayHardware.在当前的Android (2.1)版本的设计中,系统支持一个 graphicPlane,所以也就支持一个 DisplayHardware0 SurfaceFlinger, Hardware硬件缓冲区的数据结构关系图,如图7所示。图7中graphic momory是用来显示用的memory,android系统为了提升界面的显示速度,本发明采用了双显存机制,就是一个显存用来显示界面的图像,另一个显存负责准备需要显示的数据,这两个显存来回切换效率比只有一个显存显示的效率快的多。在 DisplayHardware 中的 filp 就是用来切换两块显存的,eglSwapBuffers (dpy, surface)就是具体实现显存切换的,我们就在eglSwapBuffers (dpy,surface)之前去提前获取了切换后的界面数据,并在eglSwapBuffers (dpy,surface)之前去播放旋转动画。播放旋转动画是通过获取到的显存buffer数据通过opengl的绘制方法 glRotatef去旋转图像,做完旋转动画后就立即执行eglSwapBuffers (dpy,surface)显示界面切换后的图像,这样就很好地解决了问题,并把效果呈现出来。底层的旋转效果实现了,我们要结合上面描述的出发旋转动画时机控制底层播放旋转动画,这里面又涉及到如何从上层控制下层的过程。Surface采用了客户/服务器(CS) 模式从上层向下层传递数据相当于跨进程操作,具体如图8-10,利用客户端和服务端对象关系、客户端与SurfaceFlinger连接关系和它们之间的交互,通过图11和12中的流程可以将数据从客户端传递到surfaceflinger这端了,这样就可以控制底层的动画处理逻辑。以上所述仅为本发明的较佳实施例,凡依本发明权利要求范围所做的均等变化与修饰,皆应属本发明权利要求的涵盖范围。
权利要求
1. 一种手持设备的横竖屏切换旋转控制方法,其特征在于,包括以下步骤1.2)根据重力感应获取旋转的方向和切换方向后的角度Φπι;1. 3)冻结屏幕,获取到切换方向后的界面图像;1.4)还原所述界面图像到切换前的角度Φ0显示,再计算所述界面图像的当前角度Φ 并显示直至当前角度Φ 等于角度Φπι,其中Φ = Φ0+(Φη-Φ0) * Ai, Ai = (m-(m-i) * (m-i)/m)/m, m是总的旋转显示次数,i是当前旋转显示次数,1彡i彡m,i、m 是自然数,Ai是加速百分比,Φ0、Φ 和Φπι同旋转方向;所述显示是手持设备屏幕不动,所述界面图像在所述屏幕表面绕屏幕中心点旋转,所述屏幕只显示旋转的所述界面图像在所述屏幕内的部分; 1.5)解冻屏幕。
2.根据权利要求1所述控制方法,其特征在于,还包括步骤1.1)接收到横竖屏切换消息判断是否是重力感应方式,是则进入步骤1. 2)。
3.根据权利要求2所述控制方法,其特征在于,所述步骤1.1)还包括判断不是重力感应方式,则显示切换方向后的界面图像,跳过步骤1. 2) 1. 5)直接结束。
4.根据权利要求1所述控制方法,其特征在于,根据重力感应判断Φπι与Φ0重合,跳过步骤1.3) 1.5)直接结束。
5.根据权利要求1所述控制方法,其特征在于,切换前的角度Φ0= 0°,切换方向后的角度 Φπι = 90°、180° 或 270°。
6.根据权利要求1所述控制方法,其特征在于,若Φπι= 90°、m = N,则当Φπι = 180°,m= 2Ν,其中N是大于2的自然数。
7.根据权利要求1所述控制方法,其特征在于,若Φπι= 90°、m = N,则当Φπι = 270°,m= 3Ν,其中N是大于2的自然数。
8.根据权利要求6或7所述控制方法,其特征在于,N= 15。
9.根据权利要求1所述控制方法,其特征在于,所述步骤1.4)中采用双显存,分别存储当前旋转的界面图像和下一次旋转的界面图像,轮流调用。
10.根据权利要求8所述控制方法,其特征在于,所述双显存是逻辑内存,所述轮流调用是在双显存之间切换当前显存地址。
全文摘要
本发明涉及一种手持设备的横竖屏切换旋转控制方法,包括根据重力感应获取旋转的方向和切换后的角度Фm;冻结屏幕,获取到切换方向后的界面图像;计算所述界面图像的当前角度Фi并显示直至Фi=Фm,其中Фi=Ф0+(Фn-Ф0)*Ai,Ai=(m-(m-i)*(m-i)/m)/m,m是总的旋转显示次数,i是当前旋转显示次数,1≤i≤m,m、i是自然数,Ai是加速百分比,初始角度Ф0、Фi和Фm同旋转方向;所述显示是手持设备屏幕不动,所述界面图像在所述屏幕表面绕屏幕中心点旋转,所述屏幕只显示旋转的所述界面图像在所述屏幕内的部分;解冻屏幕。这种控制方法,能完美衔接用户旋转动作,给用户逼真的自然体验。
文档编号G06F3/048GK102520842SQ20111036890
公开日2012年6月27日 申请日期2011年11月18日 优先权日2011年11月18日
发明者曾元清 申请人:广东欧珀移动通信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1