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介紹的時候已經(jīng)介紹過了不在贅述,這是一個構(gòu)建一個動畫的步驟,其接口詳情,這里不做贅述了,因為其他動畫的創(chuàng)建與位移動畫的創(chuàng)建類似,所以知道位移動畫的創(chuàng)建流程后,就可以創(chuàng)建其他類型的動畫了。
- updataAnimation3DPosition(MathC.Vector fromPosition, MathC.Vector toPosition)在位移動畫里面,可以動態(tài)的更新起始動畫位置與動畫目標(biāo)點位置。
@param fromPosition toPosition 起始動畫位置,終止動畫位置。
說明:這個動態(tài)更新動畫的起止位置的,只能在位移動畫中有這個接口,其他動畫類型沒有這個接口。
- 動畫中播放類型的一個枚舉類功能。
public enum RepeatMode{
NONE , 只播放一次
INFINITE//無限 ,
RESTART//重新啟動 ,
REVERSE//相反的 ,
REVERSE_INFINITE;//相反重復(fù)的
}
- reset() 重置動畫的接口,在動畫播放完,調(diào)用這個接口,則將動畫的數(shù)據(jù)恢復(fù)為初始狀態(tài)。
- setDelayDelta(double delay)設(shè)置動畫的延遲時間。視需求而使用。
- setInterpolator(Interpolator interpolator)設(shè)置線性動畫,該接口調(diào)用Android內(nèi)置的線性計算函數(shù)來計算平滑的數(shù)值。使動畫更加平滑。
- setRepeatCount(int repeatCount)設(shè)置動畫重復(fù)播放的次數(shù)。
- unregisterListener(IAnimationListener animationListener)撤銷動畫監(jiān)聽方法。
- isFirstStart() 是否是第一次啟動,返回一個布爾值。
注意:現(xiàn)在動畫包括有位移動畫,繞某個點旋轉(zhuǎn)動畫,繞自身的旋轉(zhuǎn)動畫,貝塞爾曲線動畫。位移動畫跟貝塞爾動畫可以添加到VRLayout中,繞某點動畫以及繞自身旋轉(zhuǎn)的動畫不支持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的使用案例,其中創(chuàng)建一個對象,然后設(shè)置一些屬性,這些屬性與單個的動畫是類似的,然后將創(chuàng)建好的單個的動畫類型添加到這個AnimationGroup中,這樣就可以直接使用AnimationGroup直接來創(chuàng)建管理動畫了,或者播放或者停止等。也可以為一個模型添加多個動畫。
說明:自己實在不明白了,可以研究一下我寫的那些3D視頻UI的使用過程,這個還是可以看的懂的,現(xiàn)在的需求,接口基本已經(jīng)實現(xiàn)了,上層的一些邏輯自己實現(xiàn)就可以了。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。