1. 程式人生 > 實用技巧 >android 動畫優化

android 動畫優化

在做的專案有太多動畫 一天下來手機就很卡 優化方案:

先看我之前寫的程式碼:

        ObjectAnimator animator = ObjectAnimator.ofFloat(innerView, "translationY", 0f, 30f, 0f);
     animator.setDuration(400).setInterpolator(new DampInterpolator());
     animator.start();

然後換成這種:

private PropertyValuesHolder animatorX;
    private PropertyValuesHolder animatorY;
 
    animatorX 
= PropertyValuesHolder.ofFloat("scaleX", 0f, 1.0f); animatorY = PropertyValuesHolder.ofFloat("scaleY", 0f, 1.0f); ObjectAnimator.ofPropertyValuesHolder(view, animatorX, animatorY).start();

之前程式碼:

AnimatorSet animSet = new AnimatorSet();
 
ObjectAnimator transYFirstAnim = ObjectAnimator.ofFloat(mView, "translationY", 0, 100);
ObjectAnimator transYSecondAnim 
= ObjectAnimator.ofFloat(mView, "translationY", 100, 0); animSet.playSequentially(transYFirstAnim, transYSecondAnim);

換成

Keyframe k0 = Keyframe.ofFloat(0f, 0); //第一個引數為“何時”,第二個引數為“何地”
Keyframe k1 = Keyframe.ofFloat(0.5f, 100);
Keyframe k2 = Keyframe.ofFloat(1f, 0);
 
PropertyValuesHolder p = PropertyValuesHolder.ofKeyframe("translationY", k0, k1, k2);
ObjectAnimator objectAnimator 
= ObjectAnimator.ofPropertyValuesHolder(mView, p); objectAnimator.start();