4. Animation 动画模块的使用。
4.1 动画的介绍。
代码清单:
Animation3D mTranslateAnimation3D = new TranslateAnimation3D(fromPoint,toPoint);
mTranslateAnimation3D.setDurationMilliseconds(allTime);
mTranslateAnimation3D.setRepeatMode(Animation.RepeatMode.NONE);
mTranslateAnimation3D.setTransformable3D(aNode);
mTranslateAnimation3D.registerListener(new IAnimationListener() {
@Override
public void onAnimationEnd(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationStart(Animation animation) { }
@Override public void onAnimationUpdate(Animation animation, double interpolatedTime) { }
});
mTranslateAnimation3D.play();
说明:这里的动画的一些接口在第一章中对3DUI介绍的时候已经介绍过了不在赘述,这是一个构建一个动画的步骤,其接口详情,这里不做赘述了,因为其他动画的创建与位移动画的创建类似,所以知道位移动画的创建流程后,就可以创建其他类型的动画了。
- updataAnimation3DPosition(MathC.Vector fromPosition, MathC.Vector toPosition)在位移动画里面,可以动态的更新起始动画位置与动画目标点位置。
@param fromPosition toPosition 起始动画位置,终止动画位置。
说明:这个动态更新动画的起止位置的,只能在位移动画中有这个接口,其他动画类型没有这个接口。
- 动画中播放类型的一个枚举类功能。
public enum RepeatMode{
NONE , 只播放一次
INFINITE//无限 ,
RESTART//重新启动 ,
REVERSE//相反的 ,
REVERSE_INFINITE;//相反重复的
}
- reset() 重置动画的接口,在动画播放完,调用这个接口,则将动画的数据恢复为初始状态。
- setDelayDelta(double delay)设置动画的延迟时间。视需求而使用。
- setInterpolator(Interpolator interpolator)设置线性动画,该接口调用Android内置的线性计算函数来计算平滑的数值。使动画更加平滑。
- setRepeatCount(int repeatCount)设置动画重复播放的次数。
- unregisterListener(IAnimationListener animationListener)撤销动画监听方法。
- isFirstStart() 是否是第一次启动,返回一个布尔值。
注意:现在动画包括有位移动画,绕某个点旋转动画,绕自身的旋转动画,贝塞尔曲线动画。位移动画跟贝塞尔动画可以添加到VRLayout中,绕某点动画以及绕自身旋转的动画不支持VRLayout。
4.2 AnimationGroup动画的介绍。
代码清单:
AnimationGroup mAnimationGroup = new AnimationGroup();
mAnimationGroup.setRepeatMode(mAnimationModel);
TranslateAnimation3D mTrans = new TranslateAnimation3D(fromPosition,transToPoint);
mTrans.setDurationMilliseconds(time);
mTrans.setRepeatMode(mAnimationModel);
mTrans.setTransformable3D(aNode);
mAnimationGroup.addAnimation(mTrans);
registerAnimation(mAnimationGroup);
- 这是AnimationGroup的使用案例,其中创建一个对象,然后设置一些属性,这些属性与单个的动画是类似的,然后将创建好的单个的动画类型添加到这个AnimationGroup中,这样就可以直接使用AnimationGroup直接来创建管理动画了,或者播放或者停止等。也可以为一个模型添加多个动画。
说明:自己实在不明白了,可以研究一下我写的那些3D视频UI的使用过程,这个还是可以看的懂的,现在的需求,接口基本已经实现了,上层的一些逻辑自己实现就可以了。