第四章——Animation動畫模塊使用

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)建其他類型的動畫了。
  1. updataAnimation3DPosition(MathC.Vector fromPosition, MathC.Vector toPosition)在位移動畫里面,可以動態(tài)的更新起始動畫位置與動畫目標(biāo)點位置。
    @param fromPosition toPosition 起始動畫位置,終止動畫位置。
說明:這個動態(tài)更新動畫的起止位置的,只能在位移動畫中有這個接口,其他動畫類型沒有這個接口。
  1. 動畫中播放類型的一個枚舉類功能。
    public enum RepeatMode{
    NONE , 只播放一次
    INFINITE//無限 ,
    RESTART//重新啟動 ,
    REVERSE//相反的 ,
    REVERSE_INFINITE;//相反重復(fù)的
    }
  2. reset() 重置動畫的接口,在動畫播放完,調(diào)用這個接口,則將動畫的數(shù)據(jù)恢復(fù)為初始狀態(tài)。
  3. setDelayDelta(double delay)設(shè)置動畫的延遲時間。視需求而使用。
  4. setInterpolator(Interpolator interpolator)設(shè)置線性動畫,該接口調(diào)用Android內(nèi)置的線性計算函數(shù)來計算平滑的數(shù)值。使動畫更加平滑。
  5. setRepeatCount(int repeatCount)設(shè)置動畫重復(fù)播放的次數(shù)。
  6. unregisterListener(IAnimationListener animationListener)撤銷動畫監(jiān)聽方法。
  7. 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);
  1. 這是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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容