一种能量守恒双摆球的动画效果算法制造技术

技术编号:19542432 阅读:29 留言:0更新日期:2018-11-24 20:23
本发明专利技术涉及一种能量守恒双摆球的动画效果算法,包括如下步骤:定义界面CircleRotateActivity;创建WhorlLoadingRenderer对象;创建一个贝塞尔曲线的插补器FastOutSlowInInterpolator,运动规律是由慢到快再到慢;设置常量,用于控制动画绘制相关信息;创建了画笔和绘制区域;创建动画监听器,设置动画开始时的操作和动画过程中的操作;创建Canvas,是android系统提供的画布,用于在上面进行绘制;开始画圆弧canvas.drawArc。本发明专利技术,自定义控件,实现圆弧摆动的效果,模拟能量守恒球不断碰撞的动画效果,呈现全新的加载动画页面,凸显个性化及App,具一定扩展性,可修改制作其他样式的加载动画效果,提高开发效率。

An animation algorithm of energy conservation double pendulum

The invention relates to an animation effect algorithm of energy conservation double pendulum ball, which includes the following steps: defining the interface CircleRotate Activity; creating WhorlLoading Renderer object; creating FastOutSlowIn Interpolator, an interpolator of Bessel curve, whose motion law is from slow to fast to slow; setting constants for controlling animation drawing. Create relevant information; create brushes and drawing areas; create animation monitors to set the operation at the beginning of animation and the operation in the animation process; create Canvas, which is the canvas provided by Android system for drawing on it; start drawing arc canvas. drawArc. The invention realizes the effect of arc swing, simulates the animation effect of constant collision of energy conservation balls, presents a brand-new loading animation page, highlights personalization and App, has certain expansibility, can modify the effect of other styles of loading animation, and improves the development efficiency.

【技术实现步骤摘要】
一种能量守恒双摆球的动画效果算法
本专利技术涉及应用的加载动画
,具体说是一种能量守恒双摆球的动画效果算法。
技术介绍
现有的应用程序(例如App),在打开运行时,总会看到一个加载动画页面,以便在等待加载的过程中,用户可以知晓应用程序正在工作、加载的进度等信息。常见的加载动画页面,有的是呈现一张静态图片,有的是呈现一组图片实现动画效果,有的是呈现一段短视频实现动画效果,为了凸显个性化,丰富加载动画页面的功能及动画效果,有必要对加载动画页面进行优化、再设计。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种能量守恒双摆球的动画效果算法,自定义控件,实现圆弧摆动的效果,模拟能量守恒球不断碰撞的动画效果,呈现全新的加载动画页面,凸显个性化及App,具一定扩展性,可修改制作其他样式的加载动画效果,提高开发效率。为达到以上目的,本专利技术采取的技术方案是:一种能量守恒双摆球的动画效果算法,其特征在于,包括如下步骤:定义界面CircleRotateActivity,在该界面中,用动画加载库LoadingDrawable创建出一个背景mWhorlDrawable并设置为mIvWhorl控件的背景,在该界面onStart()时调用mWhorlDrawable.start(),在该界面onStop()时调用mWhorlDrawable.stop();创建WhorlLoadingRenderer对象,WhorlLoadingRenderer继承LoadingRenderer;创建一个贝塞尔曲线的插补器FastOutSlowInInterpolator,运动规律是由慢到快再到慢;设置常量,用于控制动画绘制相关信息,至少包括:循环次数,初始旋转角度,单次绘制画弧所占最小角度,单次绘制画弧所占最大角度,一次循环所占角度,每次旋转最大增加角度,起点绘制结束时进度,终点绘制结束时进度;创建了画笔mPaint和绘制区域mTempBounds,定义三种颜色DEFAULT_COLORS=newint[]{Color.RED,Color.GREEN,Color.BLUE};创建动画监听器mAnimatorListener,设置动画开始时的操作和动画过程中的操作;创建Canvas,是android系统提供的画布,用于在上面进行绘制;设定圆弧轨迹的起点角度、圆弧扫过的角度、终点角度,该圆弧轨迹作为小球摆动的轨迹,开始画圆弧canvas.drawArc,绘制完成后恢复到canvas最初的状态canvas.restoreToCount(saveCount),画圆弧过程中,通过速度变量的值的改变,实现先慢再快最后再慢的变速绘制过程。在上述技术方案的基础上,通过LoadingDrawable创建mWhorlDrawable时传入了一个加载渲染器LoadingRenderer,执行newWhorlLoadingRenderer(this)指令创建对象。在上述技术方案的基础上,创建一个贝塞尔曲线的插补器FastOutSlowInInterpolator的具体包括:执行newFastOutSlowInInterpolator(),赋值给MATERIAL_INTERPOLATOR,限定MATERIAL_INTERPOLATOR为privatestaticfinalInterpolator。在上述技术方案的基础上,设置常量时,同时设定其默认值如下:循环次数NUM_POINTS=5;初始旋转角度DEGREE_180=180;DEGREE_360=360;单次绘制画弧所占最小角度MIN_SWIPE_DEGREE=0.1f;单次绘制画弧所占最大角度MAX_SWIPE_DEGREES=0.6f*DEGREE_360;一次循环所占角度FULL_GROUP_ROTATION=3.0f*DEGREE_360;每次旋转最大增加角度MAX_ROTATION_INCREMENT=0.25f*DEGREE_360;起点绘制结束时进度START_TRIM_DURATION_OFFSET=0.5f;终点绘制结束时进度END_TRIM_DURATION_OFFSET=1.0f。在上述技术方案的基础上,创建动画监听器mAnimatorListener时,具体包括:动画开始的时候,mRotationCount=0,把当前循环位置置为0;执行storeOriginals()保存上一次绘制位置,设置下一次起点mStartDegrees为上一次的终点mEndDegrees,执行mRotationCount=(mRotationCount+1)%(NUM_POINTS)重新设置当前循环位置。在上述技术方案的基础上,在Canvas的构造方法中,设置默认的颜色值mColors=DEFAULT_COLORS;setInsets((int)getWidth(),(int)getHeight())再根据默认的宽高计算内边距mStrokeInset,使动画居中;设置画笔mPaint的基本属性,把创建的监听器mAnimatorListener设置给mRenderAnimator,mRenderAnimator是android系统提供的一种属性动画,用来控制控件的动画。在上述技术方案的基础上,开始画圆弧canvas.drawArc时,按以下参数绘制:第一个参数指定圆弧的形状和大小的范围,针对每个线确定下一个画布区域,创建临时的绘制区域arcBounds,第二个参数指定圆弧是从哪个角度来绘画,第三个参数指定圆弧扫过的角度,第四个参数指定圆弧在绘画的时候是否经过圆形,第五个参数指定所用画笔。在上述技术方案的基础上,速度变量的值的改变,由如下算法获得:设定当前变化的进度renderProgress,定义起点绘制结束时进度START_TRIM_DURATION_OFFSET,定义终点绘制结束时进度END_TRIM_DURATION_OFFSET,设定起点移动进度startTrimProgress,设定终点移动进度endTrimProgress,当当前变化的进度renderProgress小于等于起点绘制结束时进度START_TRIM_DURATION_OFFSET时,则:startTrimProgress=(renderProgress)/(1.0f-START_TRIM_DURATION_OFFSET),当当前变化的进度renderProgress大于起点绘制结束时进度START_TRIM_DURATION_OFFSET时,则:endTrimProgress=(renderProgress-START_TRIM_DURATION_OFFSET)/(END_TRIM_DURATION_OFFSET-START_TRIM_DURATION_OFFSET)。本专利技术所述的能量守恒双摆球的动画效果算法,自定义控件,实现圆弧摆动的效果,模拟能量守恒球不断碰撞的动画效果,呈现全新的加载动画页面,凸显个性化及App,具一定扩展性,可修改制作其他样式的加载动画效果,提高开发效率。附图说明本专利技术有如下附图:图1本专利技术的流程图。具体实施方式以下结合附图对本专利技术作进一步详细说明。如图1所示,本专利技术所述的能量守恒双摆球的动本文档来自技高网...

【技术保护点】
1.一种能量守恒双摆球的动画效果算法,其特征在于,包括如下步骤:定义界面CircleRotateActivity,在该界面中,用动画加载库LoadingDrawable创建出一个背景mWhorlDrawable并设置为mIvWhorl控件的背景,在该界面onStart()时调用mWhorlDrawable.start(),在该界面onStop()时调用mWhorlDrawable.stop();创建WhorlLoadingRenderer对象,WhorlLoadingRenderer继承LoadingRenderer;创建一个贝塞尔曲线的插补器FastOutSlowInInterpolator,运动规律是由慢到快再到慢;设置常量,用于控制动画绘制相关信息,至少包括:循环次数,初始旋转角度,单次绘制画弧所占最小角度,单次绘制画弧所占最大角度,一次循环所占角度,每次旋转最大增加角度,起点绘制结束时进度,终点绘制结束时进度;创建了画笔mPaint和绘制区域mTempBounds,定义三种颜色 DEFAULT_COLORS = new int[]{Color.RED, Color.GREEN, Color.BLUE};创建动画监听器mAnimatorListener,设置动画开始时的操作和动画过程中的操作;创建Canvas,是android系统提供的画布,用于在上面进行绘制;设定圆弧轨迹的起点角度、圆弧扫过的角度、终点角度,该圆弧轨迹作为小球摆动的轨迹,开始画圆弧canvas.drawArc,绘制完成后恢复到canvas最初的状态canvas.restoreToCount(saveCount),画圆弧过程中,通过速度变量的值的改变,实现先慢再快最后再慢的变速绘制过程。...

【技术特征摘要】
1.一种能量守恒双摆球的动画效果算法,其特征在于,包括如下步骤:定义界面CircleRotateActivity,在该界面中,用动画加载库LoadingDrawable创建出一个背景mWhorlDrawable并设置为mIvWhorl控件的背景,在该界面onStart()时调用mWhorlDrawable.start(),在该界面onStop()时调用mWhorlDrawable.stop();创建WhorlLoadingRenderer对象,WhorlLoadingRenderer继承LoadingRenderer;创建一个贝塞尔曲线的插补器FastOutSlowInInterpolator,运动规律是由慢到快再到慢;设置常量,用于控制动画绘制相关信息,至少包括:循环次数,初始旋转角度,单次绘制画弧所占最小角度,单次绘制画弧所占最大角度,一次循环所占角度,每次旋转最大增加角度,起点绘制结束时进度,终点绘制结束时进度;创建了画笔mPaint和绘制区域mTempBounds,定义三种颜色DEFAULT_COLORS=newint[]{Color.RED,Color.GREEN,Color.BLUE};创建动画监听器mAnimatorListener,设置动画开始时的操作和动画过程中的操作;创建Canvas,是android系统提供的画布,用于在上面进行绘制;设定圆弧轨迹的起点角度、圆弧扫过的角度、终点角度,该圆弧轨迹作为小球摆动的轨迹,开始画圆弧canvas.drawArc,绘制完成后恢复到canvas最初的状态canvas.restoreToCount(saveCount),画圆弧过程中,通过速度变量的值的改变,实现先慢再快最后再慢的变速绘制过程。2.如权利要求1所述的能量守恒双摆球的动画效果算法,其特征在于:通过LoadingDrawable创建mWhorlDrawable时传入了一个加载渲染器LoadingRenderer,执行newWhorlLoadingRenderer(this)指令创建对象。3.如权利要求1所述的能量守恒双摆球的动画效果算法,其特征在于:创建一个贝塞尔曲线的插补器FastOutSlowInInterpolator的具体包括:执行newFastOutSlowInInterpolator(),赋值给MATERIAL_INTERPOLATOR,限定MATERIAL_INTERPOLATOR为privatestaticfinalInterpolator。4.如权利要求1所述的能量守恒双摆球的动画效果算法,其特征在于:设置常量时,同时设定其默认值如下:循环次数NUM_POINTS=5;初始旋转角度DEGREE_180=180;DEGREE_360=360;单次绘制画弧所占最小角度MIN_SWIPE_DEGREE=0.1f;单次绘制画弧所占最大角度MAX_SWIPE_DEGREES=0.6f*DEGREE_360;一次循环所占角度FULL_GROUP_ROTATION=3.0f*DEGREE_360;每次旋转最大增加角度...

【专利技术属性】
技术研发人员:孙征
申请(专利权)人:北京酷我科技有限公司
类型:发明
国别省市:北京,11

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

1