關於動畫的總結

:補間動畫:指的是TranslationAnimation,AlpahAnimation,ScaleAnimation,RotateAnimation;
缺點:並沒有真正持久改變View的屬性,就是說它內部沒有一個去記錄動畫行爲的機制;

幀動畫:指的是一幀一幀播放的動畫
實現的過程就是在drawable目錄下面新建一個animation-list的xml然後就是每一幀都是一個item 設置一個時間和一張圖片就可以了。

:屬性動畫(爲了解決補間動畫的缺點)
1.屬性動畫內部實現:3.0之後view類增加新的用來記錄動畫行爲的屬性,如:
translationX,translationY;
scaleX,scaleY;
rotationX,rotationY,rotation;
alpha;

具體實現的類:ObjectAnimator;
問題是:ObjectAnimator只能是3.0之後纔有,那麼我們如果想讓屬性動畫兼容低版本,那麼一般
使用NineOldAnidroid.jar來實現屬性動畫
2.NineOldAnidroid.jar:主要封裝了屬性動畫和View相關的操作類,該類庫是JackWharton來寫的;
用法:ViewPropertyAnimator.animate(text).rotationBy(180)
.setDuration(500)
.start();

3.直接操作view的屬性來更改view的形態:
view.setTranslationX();
view.setRotationX();
view.setAlpha();
view.setScaleX();
//如果想在低版本直接操作view的屬性,則用如下方法
ViewHelper.setScaleX(text, 0);

4.改變動畫的運動軌跡:速度插值器
OvershootInterpolator:超過一點再回來
BounceInterpolator:像球落地一樣的感覺

5.自定義動畫邏輯:ValueAnimator
ValueAnimator: 它只是幫我們定義了動畫的執行流程,但是沒有幫我們實行具體的動畫邏輯,
我們需要監聽動畫的進度,然後在回調方法中進行自定義的動畫邏輯;
用法:ValueAnimator animator = ValueAnimator.ofInt(100,1000);
//監聽動畫執行的進度
animator.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
int animatedValue = (Integer) animator.getAnimatedValue();
// Log.e(“tag”, “animatorValue:”+animatedValue);
//根據動畫值的變化進行我們的動畫邏輯
// LayoutParams params = text.getLayoutParams();
// params.height = animatedValue;
// text.setLayoutParams(params);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章