android 動畫優化
阿新 • • 發佈:2020-12-30
在做的專案有太多動畫 一天下來手機就很卡 優化方案:
先看我之前寫的程式碼:
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();