一种基于Animation的页面3D旋转动画制作方法技术

技术编号:36805540 阅读:17 留言:0更新日期:2023-03-09 00:12
本发明专利技术公开了一种基于Animation的页面3D旋转动画制作方法,所述方法包括如下步骤:S101.实现一个Rotate3dAnimation的类,扩展Animation类;S102.重写applyTransformation()方法,提供指定时间的矩阵变换;在这个方法里,利用Camera类得到一个围绕Y轴旋转的矩阵,把矩阵设置到旋转对象中;S103.保存当前的摄像头位置保存,以便变换进行完成后恢复成原位,设置Z轴偏移量;S104.设置视图以Y轴、X轴或旋转中心点旋转;旋转中心点可设定为视图的中心点或自定点坐标点;通过配置的动画执行速率,实现动画的旋转效果;S105.将变换应用到变换矩阵;S106.调用完将camera的位置恢复。本发明专利技术能够在android上实现3D的翻转效果,提高用户体验。户体验。户体验。

【技术实现步骤摘要】
一种基于Animation的页面3D旋转动画制作方法


[0001]本专利技术涉及计算机及图像数据处理
,尤其是涉及一种基于Animation的页面3D旋转动画制作方法。

技术介绍

[0002]目前ios客户端有官方提供的API,可以使页面在切换时,实现3D翻转的效果,而安卓目前官方只提供了平面翻转的动画效果,为了保持一个app的ios跟android(安卓)动画效果保持一致,需要在android上实现3D的翻转效果,使两个客户端的用户使用体验接近,使android的使用体验更好。
[0003]目前android的动画有三种:
[0004](1)FrameAnimation帧动画:通过顺序播放一系列图像从而产生动画效果。
[0005](2)TweenAnimation补间动画:是通过对场景里的对象不断做图像变换(透明度、缩放、平移、旋转)从而产生动画效果,是一种渐进式动画,并且View动画支持自定义。
[0006](3)AttributeAnimation属性动画:通过动态的改变对象的属性从而达到动画效果。
[0007]目前android自带的动画效果,都是平面的,没有3D效果,无法实现ios那种3D翻转的动画效果,动画效果比较单一。本专利技术主要是针对android实现3D翻转动效,使android可以有ios的旋转特效,同时也是丰富了android的页面翻转效果,弥补app的ios跟android客户端无法保持统一的用户使用体验。当前也有一些安卓3D动画效果,但是都是针对页面上的视图控件进行旋转,本专利技术不仅支持视图控件,同时支持不同页面跳转时,页面的3D旋转,而不是单独的将一个视图进行旋转动画,通过结合页面跳转的生命周期,来进行相应的控制。
[0008]同时根据视图的绘制原理,在Android中,每个View都有三个固定的核心步骤,并依次去执行。它们分别是measure、layout以及draw,通过Measure和Layout来确定当前需要绘制的View所在的大小和位置,再通过绘制(Draw)到surface。measure、layout和draw方法主要是运行在系统的应用框架层,而真正将数据渲染到屏幕上的则是系统原生层的SurfaceFlinger服务来完成的。通过动画绘制过程的优化,使得旋转效果更流畅。

技术实现思路

[0009]针对现有技术存在的问题,本专利技术的目的在于提供一种3D旋转特效,丰富android的动画页面翻转效果,同时根据页面的生命周期,来进行相应的旋转操作。一个页面的关闭和另一个页面的打开进行动画结合,这个旋转动画衔接了页面切换的过程。
[0010]为实现上述目的,本专利技术提供一种基于Animation的页面3D旋转动画制作方法,其特征在于,所述方法包括如下步骤:
[0011]S101.实现一个Rotate3dAnimation的类,扩展Animation类;
[0012]S102.重写applyTransformation()方法,提供指定时间的矩阵变换;在这个方法
里,利用Camera类得到一个围绕Y轴旋转的矩阵,把矩阵设置到Transformation对象中;
[0013]S103.保存当前的摄像头位置保存,以便变换进行完成后恢复成原位,设置Z轴偏移量;
[0014]S104.设置视图以Y轴、X轴或旋转中心点旋转;旋转中心点可设定为视图的中心点或自定点坐标点;通过配置的动画执行速率,实现动画的旋转效果;
[0015]S105.将变换应用到变换矩阵;
[0016]S106.调用完将camera的位置恢复。
[0017]进一步,步骤S103中,针对页面进入或退出进行区分,设置Z轴的偏移量增大或Z轴偏移量减小;Z轴偏移量增大实现页面进入效果,Z轴偏移量减小实现页面退出效果。
[0018]进一步,首先通过封装的Rotate3dAnimation类提供的animationOut方法来旋转页面A,当收到动画结束的回调消息时,调用打开页面B的方法,同时在页面B的onresume生命周期方法中,调用Rotate3dAnimation类提供的animationIn方法来旋转页面B,完成整个过程中页面A切换到页面B的旋转流程。
[0019]进一步,以视图的中心点为旋转中心,代码如下:
[0020]matrix.preTranslate(

centerX,

centerY);
[0021]matrix.postTranslate(centerX,centerY);
[0022]如果不设置这两句代码,就默认以X和Y轴坐标(0,0)点为旋转中心。
[0023]进一步,代码中用Camera来实现动画,Camera就是一个摄像机,一个物体原地不动,带着摄像机按设定的角度进行移动,之后从Camera中取出完成该动画的矩阵Matrix。
[0024]步骤S104中,在旋转动画的执行流程中,通过插值器和估值器的协同配合,实现动画执行速率的配置,使得不同速率下具有不同的视觉效果。
[0025]在增值器中设有方法getInterpolator()用于接收一个参数input,这个参数input的值会随着动画的运动而不断变化,其变化规律如下:根据设定的动画时长匀速增长,变化范围是0到1;当动画一开始的时候input的值是0,到动画结束的时候input的值是1,而中间的值则是随着动画运行的时长在0到1之间变化的,它表示的是时间流逝的百分比,参数input的作用是根据时间流逝的百分比计算出当前属性值改变的百分比,当前属性值是在x轴上的位置,根据变化的百分比来计算现在改变后的位置,在代码中使用计算公示如下:
[0026]intresult=(int)(startValue+fraction*(endValue

startValue))
[0027]在估值器中使用evaluate方法接收上面三个参数,分别是动画的完成度参数fraction以及动画的初始值和结束值;在代码中用结束值减去初始值得出它们之间的差值,而后乘以系数fraction,再加上初始值,获得动画当前的x轴上具体位置的值;通过input的值获得系数fraction;获得系数fraction后,根据系数fraction计算x属性的变化,由此实现配置动画执行速率的方法。
[0028]本专利技术通过实现3D的翻转动效,代码中用Camera来实现动画,带着摄像机按设定的角度进行移动,之后从Camera中取出完成该动画的矩阵Matrix,将Activity的父布局作为view来进行旋转,实现页面的3D旋转特效,本专利技术实现了ios相同的旋转特效,利用页面的生命周期,对动画进行控制,丰富了android的动画特效。
附图说明
[0029]图1示出了根据本专利技术实施例基于Animation的页面3D旋转动画制作方法页面的切换过程中的时序图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Animation的页面3D旋转动画制作方法,其特征在于,所述方法包括如下步骤:S101.实现一个Rotate3dAnimation的类,扩展Animation类;S102.重写applyTransformation()方法,提供指定时间的矩阵变换;在这个方法里,利用Camera类得到一个围绕Y轴旋转的矩阵,把矩阵设置到旋转对象中;S103.保存当前的摄像头位置保存,以便变换进行完成后恢复成原位,设置Z轴偏移量;S104.设置视图以Y轴、X轴或旋转中心点旋转;旋转中心点可设定为视图的中心点或自定点坐标点;通过配置的动画执行速率,实现动画的旋转效果;S105.将变换应用到变换矩阵;S106.调用完将camera的位置恢复。2.根据权利要求1所述的一种基于Animation的页面3D旋转动画制作方法,其特征在于,步骤S103中,针对页面进入或退出进行区分,设置Z轴的偏移量增大或Z轴偏移量减小;Z轴偏移量增大实现页面进入效果,Z轴偏移量减小实现页面退出效果。3.根据权利要求2所述的一种基于Animation的页面3D旋转动画制作方法,其特征在于,首先通过封装的Rotate3dAnimation类提供的animationOut方法来旋转页面A,当收到动画结束的回调消息时,调用打开页面B的方法,同时在页面B的onresume生命周期方法中,调用Rotate3dAnimation类提供的animationIn方法来旋转页面B,完成整个过程中页面A切换到页面B的旋转流程。4.根据权利要求3所述的一种基于Animation的页面3D旋转动画制作方法,其特征在于,以视图的中心点为旋转中心,代码如下:matrix.preTranslate(

centerX,

centerY);matrix.postTranslate(centerX,centerY);如果不设置这两句代码,就默认以X和Y轴坐标(0,0)点为旋转中心。5.根据权利要...

【专利技术属性】
技术研发人员:杜东川朱建权张金银
申请(专利权)人:杭州比智科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1